TIA TIA_SCL in FUP

vladmen

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich bin neu in SPS TIA
wie kann ich von SCL in FUP schreiben.

IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN

// Start rücksetzen
"DB_EA_ST1".Scannen.Q_Start := FALSE;
END_IF;
IF ("Q_Cam_Read_Request"=FALSE AND "DB_EA_ST1".Scannen.Q_Start=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN
// String löschen
#t_RetVal:=FILL(BVAL:="DB_EA_ST1".Scannen.Fill_0 , BLK=>"DB_EA_ST1".Scannen.RD_Dat);
END_IF;

"DB_EA_ST1".Scannen.I_gelesen := "I_Read Complete";
"DB_EA_ST1".Scannen.I_Fehler := "I_Read_Error";
IF "DB_EA_ST1".Scannen.I_gelesen = TRUE AND "I_Read Complete" = TRUE AND "DB_EA_ST1".Scannen.Q_Start=FALSE THEN
// String lesen
#t_RetVal:=DPRD_DAT(LADDR:=w#16#266, RECORD=>"DB_EA_ST1".Scannen.RD_Dat);
END_IF;
IF "DB_EA_ST1".Scannen.I_gelesen = TRUE THEN
// Reset rücksetzen
"DB_EA_ST1".Scannen.Q_Reset := FALSE;
END_IF;

"Q_Cam_Read_Request" := "DB_EA_ST1".Scannen.Q_Start;
"Q_Cam_Completion_Clear" := "DB_EA_ST1".Scannen.Q_Reset;

Danke in voraus
 
Erstens ist das kein sauber geschriebenes SCL. Der Code sollte in CodeTags, dann isser leichter zu lesen.

Zum Vorgehen. Einfach von Oben nach unten durchgehen und in Fup zusammenbasteln (wozu auch immer).

z.B. erste IF verknüpfung:
angefangen mit der Klammer. Welches ein UND ist. Also in FUP ein UND einfügen. erste Variable mit Invertierung anbinden (in SCL wäre das ein NOT "DB_EA_ST1".Scannen.I_gelesen), Zweite variable ohne. Am Ausgang ein Oder anhängen zweiten oder Eingang mit Q_Reset beschalten.
Da ein IF nur auf Erfüllung abfragt und bei nicht erfüllter Abfrage die Anweisung einfach nicht bearbeitet. das Ergebnis des Oder ist darum ein R. Das heisst, Zuweisung reinziehen und auf R umstellen und da "DB_EA_ST1".Scannen.Q_Start hindeklarieren .

Fill wird z.B. nur ausgeführt wenn das Enable true ist. Kann also direkt an eine Verknüpfung zu dem du das IF umgeschrieben hast angehängt werden und wird nur bei Erfüllung ausgeführt.

mfG René
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Rene,

Erst mal Danke für die schnelle Antwort.

ich habe fertige Baustein bekommen und muss in FUB schreiben.
ich bin Anfänger in SPS Programmieren.

MFG Vladi
 
So ist Richtig???

IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN

// Start rücksetzen
"DB_EA_ST1".Scannen.Q_Start := FALSE;
END_IF;
----------------------------------------------------------------

ON "I_Read Complete"
O "DB_EA_ST1".Scannen.Q_Reset
= "DB_EA_ST1".Scannen.I_gelesen

U "DB_EA_ST1".Scannen.I_gelesen
= "DB_EA_ST1".Scannen.Q_Start

Mfg Vladi
 
Auf den ersten Blick nein.
Die Anweisung bei IF wird nicht permanent ausgeführt, sondern nur wenn die Bedingung erfüllt ist (wurde vorhin schon mal erwähnt).
 
Zuletzt bearbeitet:
IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN

// Start rücksetzen
"DB_EA_ST1".Scannen.Q_Start := FALSE;
END_IF;

wie kann man in FUP schreiben???
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In AWL wäre dein Code so:
Code:
UN "DB_EA_ST1".Scannen.I_gelesen
U "I_Read Complete"
O "DB_EA_ST1".Scannen.Q_Reset
R "DB_EA_ST1".Scannen.Q_Start

Eine Klammer ist nicht nötig. Da UND eh vor Oder kommt. Also entweder ist das "Oder" erfüllt oder die beiden U führen zu einem VKE true.
Spricht aber IMHO nix gegen Klammern um auch fremden schnell die Intention zu zeigen.

mfG René
 
wie schon vorschreiber erwähnt haben ist das falsch.

Code:
IF ("DB_EA_ST1".Scannen.I_gelesen=FALSE AND "I_Read Complete"=TRUE) OR "DB_EA_ST1".Scannen.Q_Reset THEN
 // Start rücksetzen
    "DB_EA_ST1".Scannen.Q_Start := FALSE;
 END_IF;
----------------------------------------------------------------
UN "DB_EA_ST1".Scannen.I_gelesen
U  "I_Read Complete"
O  "DB_EA_ST1".Scannen.Q_Reset
R  "DB_EA_ST1".Scannen.Q_Start
über den rest denk mal selber nach. :)


EDIT:
OK ich war zu langsam
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und benutze bitte, wie von vollmi bereits angesprochen, die Codetags für Deine Programmzeilen.
Die kannst Du mit dem Button # am Ende der 2. Icon-Zeile erzeugen, wenn du sie nicht selbst schreiben möchtest.
Wie Du bei den hier davor stehenden Posts von vollmi und volker sehen kannst, wird der Code dadurch deutlich besser lesbar.

Wäre nett, wenn Du auch Deine bisherigen Posts dahin gehend verbesserst.

Danke
 
Zurück
Oben