TIA Zahl 4 Bit Format

But it works on my machine. 😅
wenigstens hast du gut getestet, ob es wirklich funktioniert :cool:

Wegen dem INT-Überlauf (vielleicht wird der in irgendeiner TIA-SCL-Version mal angemeckert?) und weil es in FC nicht gut ist, FC-Eingangsparameter mehrmals abzufragen (falls Parameterübergabe per Referenz), hätte ich mir den Baustein so gebastelt (ungetestet):
Code:
FUNCTION "INT_to_4BCD" : Word
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
 VAR_INPUT
   in : Int;
 END_VAR
 VAR_TEMP
   u : UInt;
 END_VAR
BEGIN
  #u := INT_TO_UINT(#in);
  #INT_to_4BCD := UINT_TO_WORD(((#u / 1000) MOD 10) * 4096 + ((#u / 100) MOD 10) * 256 + ((#u / 10) MOD 10) * 16 + #u MOD 10);
END_FUNCTION
 
Tia Portal meckert da gar nichts an beim übersetzen mit aktiver iec prüfung
Die Syntax des Quell-Programms ist ja in Ordnung. Es handelt sich hier um einen Laufzeit-Fehler, der erst bei "ungünstigen" (aber vorhersehbaren) Eingangsparameterwerten auftritt (wie z.B. eine Division durch einen Wert 0), der von dem erzeugten Programm aber offensichtlich ignoriert wird. Solches Verhalten gehört dokumentiert, der Compiler könnte auch warnen, wenn die TIA-Entwickler die Programmierer gängeln wollen.

Wenn TIA beim Übersetzen keine Fehler anmeckert, dann heißt das nicht, dass da keine Fehler im Programm sind, sondern dass der Compiler diese Fehler (oder potentiellen Fehler-Ursachen) nicht prüft. Diese Prüfungen kann Siemens aber jederzeit noch einbauen/nachliefern.
 
Zurück
Oben