Hi zusammen
Ich hab grade den Auftrag ein recht altes Programm in einer Codesys V2.3 Steuerung mit einem Treiber von mir auszurüsten, den ich auf TIA V16 geschrieben habe.
Ich hab schonmal Codesys programmiert, das ist aber auch schon 10 Jahre her und dabei habe ich nur an der Oberfläche gekratzt.
Womit ich grade meine Mühe habe ist die portierung diverser Funktionen mit variablen Arrayzugriffen als einfach es Beispiel eine Funktion für eine Checksumme.
Dass Array[*] nicht funktioniert habe ich mir schon gedacht, nur habe ich gerade keine Idee wie ich möglichst simpel übersetzen könnte? Ich möchte den Treiber möglichst lesbar übertragen so dass ich spätere verbesserungen auf der Siemens Seite auch wieder in Codesys übertragen kann ggf auch später in V3.
Kleine Erklärung zur Funktion. Ich hab da ein Array angehängt. die sind verschieden gross und ich will aus dem Array zwei Summen auslesen, z.B. von byte 0-7 und von Byte 9-17 und mit den hinterlegenten Checksummen auf Byte 8 und byte 18 vergleichen. mit start/end lege ich den bereich fest.
Ich wäre jetzt sehr froh über einen Tip wie man das möglichst einfach und effizient in die Codesyswelt übertragen könnte.
Ich hab grade den Auftrag ein recht altes Programm in einer Codesys V2.3 Steuerung mit einem Treiber von mir auszurüsten, den ich auf TIA V16 geschrieben habe.
Ich hab schonmal Codesys programmiert, das ist aber auch schon 10 Jahre her und dabei habe ich nur an der Oberfläche gekratzt.
Womit ich grade meine Mühe habe ist die portierung diverser Funktionen mit variablen Arrayzugriffen als einfach es Beispiel eine Funktion für eine Checksumme.
Code:
FUNCTION FC_Fut_Checksum : BYTEVAR_INPUT
Proof : ARRAY[*] OF BYTE;
start : INT; (* erstes Element der Prüfung *)
end : INT; (* letztes Element der Prüfung *)
END_VAR
VAR
index : INT;
END_VAR
(* @END_DECLARATION := '0' *)
FC_Fut_Checksum := 0;
FOR index := start TO end DO
FC_Fut_Checksum := FC_Fut_Checksum - Proof[index];
END_FOR;
END_FUNCTION
Kleine Erklärung zur Funktion. Ich hab da ein Array angehängt. die sind verschieden gross und ich will aus dem Array zwei Summen auslesen, z.B. von byte 0-7 und von Byte 9-17 und mit den hinterlegenten Checksummen auf Byte 8 und byte 18 vergleichen. mit start/end lege ich den bereich fest.
Ich wäre jetzt sehr froh über einen Tip wie man das möglichst einfach und effizient in die Codesyswelt übertragen könnte.