Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: AND O Gewichtung in ST

  1. #11
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.241 Danke für 973 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MasterOhh Beitrag anzeigen
    Warum schreibt ihr dann nicht in euer Lastenheft: "Unsere Instandhalter verstehen nur 0815 Binärverknüpfungen. Bitte Programmcode entsprechend aufblähen". Ich wette euer Langjähriger Lieferant hätte dann auch entsprechend geliefert.

    Ich fasse da wo es sinnvoll ist auch binäre Signale in Bytes, Wörtern oder Doppelwörtern zusammen und arbeite dann mit denen weiter. Gerade beim Auswerten von Signalskombinationen bei denen es dutzende oder hunderte Zustände geben kann wird die Instandhaltung mit der "klassischen" Bitverknüpfung garantiert auch nicht Glücklicher.
    Unsere Instandhalter verstehen deutlich mehr als simple Biverknüpfungen.

    Welcher Code ist übersichtlicher? Der von Jochen oder der von Irek?
    Wie gehst du bei Fehlersuche an einer fremden Anlage vor?
    Wo erkennst du schneller welche Bedingung fehlt?
    Wenn ein Signal flackert (soll ja bei NC-Freigaben durchaus vorkommen) wo siehst du schneller welches konkrete Signal?
    Wenn du an der Anlage ein weiteres Signal verknüpfen musst ... Wo ist es einfacher?

    Gruß
    Dieter

  2. #12
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    @Dieter

    vielleicht so

    (*Programm*)
    Cmd:=FC_8_Bit_to_Byte(
    (*1*) B0:=R_start_ref.Q1,
    (*2*) B1:=CAC_main_drive.ActualAxisMode=7,
    (*4*) B2:=sac_virtual_master.AxisMode=1,
    (*8*) B3:=machine_running ,
    (*1*) B4:=sac_virtual_master.AxisMode=1
    (*2*) B5:= tip_buttom,
    (*4*) B6:=0,
    (*8*) B7:=neues_Signal,
    );
    sac_virtual_master.Start:=0;(*RS *)
    neues_Resultat:=0;
    CASE Cmd OF
    16#03: sac_virtual_master.Start:=1;
    16#0C: sac_virtual_master.Start:=1;
    16#30: sac_virtual_master.Start:=1;
    16#80: neues_Resultat:=1;
    END_CASE;


    Oder
    sac_virtual_master.Start:=0;(*RS *)
    neues_Resultat:=1;
    CASE Cmd OF
    16#03,16#0C,16#30: sac_virtual_master.Start:=1;
    16#80: neues_Resultat:=1;
    END_CASE;

    (******************************************************)
    wird was zusaetzlich gebraucht, einfach in case einfuegen

    Irek

  3. #13
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.241 Danke für 973 Beiträge

    Standard

    @Irek

    Das Verfahren ist mir schon klar, was mich daran stört ist die vermeintliche Unübersichtlichkeit.
    Die eigentlich einfache binäre Logik muss ich mir bei deinem Verfahren erst "zurückrechnen".
    Der Code ist nicht kürzer, die Programmausführung nicht schneller.
    Einzig bei einer HMI-Diagnose kann ich mir Vorteile vorstellen.

    Persönlich würde ich sowas einfach in Funktionplan programmieren:

    FUP.JPG

    Gruß
    Dieter

  4. Folgender Benutzer sagt Danke zu Blockmove für den nützlichen Beitrag:

    PN/DP (19.10.2013)

  5. #14
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    @ Dieter

    Cmd:=FC_8_Bit_to_Byte(
    (*1*) B0:=R_start_ref.Q1 and _Freigabe, (*Zusatzbedinung*)
    (*2*) B1:=CAC_main_drive.ActualAxisMode=7,
    (*4*) B2:=sac_virtual_master.AxisMode=1,
    (*8*) B3:=machine_running,
    (*1*) B4:=sac_virtual_master.AxisMode=1
    (*2*) B5:= tip_buttom,
    (*4*) B6:=0,
    (*8*) B7:=neues_Signal and not machine_running (*Ausmaskieren = sperren*)
    );

    Das ist genau der Zweck an der Sache, wobei nach einigen Tagen sind die Hex-Zahlen einfach zu handhaben, Sache der Gewoehnung

    Gruss
    Irek

  6. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Zitat Zitat von Irek Beitrag anzeigen
    wobei nach einigen Tagen sind die Hex-Zahlen einfach zu handhaben, Sache der Gewoehnung
    Der Instandhalter in der Nachtschicht hat aber nicht tagelang zeit, um herauszubekommen, warum er die Maschine oder Anlage nicht starten kann. Da muß er schnell die Ursache finden - mit rasend steigenden Produktionsausfall-Kosten im Nacken!

    Hast Du eigentlich auch praktische Erfahrung mit Maschinen im Produktionsprozess oder bist Du "nur" ein Baustein-Entwickler am Schreibtisch?

    Übrigens könnte ich wetten, daß gerade Deine Art der Programmierung "aufgeblähten" Code erzeugt, nicht der bewährt einfache verständliche Code von Dieter ...

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #16
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    das sieht der Instandhalter

    ******************************************************************************** ********
    Error:
    0- no Errors
    --on Init--
    16#01- no Init Pos.
    16#02- Cylinder in final Pos(State 2)
    16#03- Cyl Sensor failure
    --on Start--
    16#10- Cylinder no basic Pos.(State1 )
    16#11- Cylinder in final Pos
    16#12- Cyl Sensor failure
    -- on Work --
    16#20- Timeout, Cylinder final Pos. not reached
    16#21- Cylinder in Pos1;Timeout Cylinder final Pos. not reached
    16#22- Cyl Sensor failure
    16#30- Cylinder no final Pos(State 2)
    16#31- Cylinder in Pos1
    16#32- Cyl Sensor failure
    16#40- Timeout, Cylinder basic Pos. not reached
    16#41- Cylinder in Pos2;Timeout Cylinder basic Pos. not reached
    16#42- Cyl Sensor failure
    --others--
    16#FF- Value incorrect

    ******************************************************************************** *********
    Texte werden ueber HMI ausgegeben, sonst Web oder SMS
    (einfaches Beispiel aus einen Baustein).
    Dafuer existiert ein Baustein, der den Code in String uebersetzt und fuer weitere Zwecke aufbereitet.
    D. h. der Leitstand und der Instandhalter bekommen je nach Tiefe der Kommunikation eine aufbereitete Nachricht mit alle den Infos im Klartext.
    Nix PG auspacken und anschliessen, alle Fehler muessen im Programm erfasst werden und als Text das System verlassen.
    Woanderes nennt man sowas "Kostenoptimierung" bezogen auf uns Programmierer.


    Irek
    Geändert von Irek (19.10.2013 um 19:30 Uhr)

  8. #17
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.241 Danke für 973 Beiträge

    Standard

    Zitat Zitat von Irek Beitrag anzeigen
    @ Dieter

    Cmd:=FC_8_Bit_to_Byte(
    (*1*) B0:=R_start_ref.Q1 and _Freigabe, (*Zusatzbedinung*)
    (*2*) B1:=CAC_main_drive.ActualAxisMode=7,
    (*4*) B2:=sac_virtual_master.AxisMode=1,Ic
    (*8*) B3:=machine_running,
    (*1*) B4:=sac_virtual_master.AxisMode=1
    (*2*) B5:= tip_buttom,
    (*4*) B6:=0,
    (*8*) B7:=neues_Signal and not machine_running (*Ausmaskieren = sperren*)
    );

    Das ist genau der Zweck an der Sache, wobei nach einigen Tagen sind die Hex-Zahlen einfach zu handhaben, Sache der Gewoehnung

    Gruss
    Irek
    Ich bin grad am Überlegen wo ich so eine Programmierung schon mal gesehen hab.
    Hast du Anleihen bei Moore-Schaltwerken und / oder VHDL genommen?
    Für normale SPS-Programmierung ist dein Stil ungewöhnlich.
    Was für Anlagen / Maschinen programmierst du hauptsächlich?

    Gruß
    Dieter

  9. #18
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    @Dieter

    Atmel, PIC, XILINX
    Nehme aus jede Welt das was eine Vereinfachung bringt, das Ergebnis ist entscheidend.
    Wenn andere davon profitieren, bin ich mit dem was geschrieben wurde schon zufrieden.

    Irek

  10. #19
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.241 Danke für 973 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Irek Beitrag anzeigen
    @Dieter

    Atmel, PIC, XILINX
    Nehme aus jede Welt das was eine Vereinfachung bringt, das Ergebnis ist entscheidend.
    Wenn andere davon profitieren, bin ich mit dem was geschrieben wurde schon zufrieden.

    Irek
    Naja da muss ich dich entäuschen.
    Profitieren werde ich daraus nicht, da es mir bei meinen Maschinen keine Vorteile bringt.

    Was mir noch einfällt:
    Deine Funktion FC_8_Bit_to_Byte ist doch eigentlich in Codesys überflüssig.
    In Codesys funktioniert doch auch:

    Code:
    cmd := 0;
    cmd.0 := R_start_ref.Q1 and _Freigabe;
    cmd.1 := CAC_main_drive.ActualAxisMode=7;
    ...
    Gruß
    Dieter

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •