Ein erneutes Hallo!
Auf meinem Weg mir selbstständig die S7 PLC Programmierung beizubringen bin ich bei einem neuen Projekt auf einen Fehler gestoßen.
Ich habe eine SCL Quelle erstellt und diese in einen FB umgewandelt und im OB1 aufgerufen. Der dazugehörige DB wurde erstellt und die Zuweisungen in der Symbolliste wurden angegeben. Beim Übersetzen gibt es keine Fehler.
Mein SCL Programm soll ein Parkhaus darstellen, bei welchem mittels eines UDT Array (in einem globalen DB2) in dem sich je eine Ticketnummer(INT), eine Aktivierungsabfrage(BOOL) und eine Zahlungsabfrage(BOOL) befinden, Tickets beim Einfahren ausgegeben werden sollen.
Danach muss das Ticket bezahlt werden und erst mit Erhalt eines Tickets das bezahlt wurde soll die Ausfahrt möglich sein.
Es gibt auch eine Ampelregelung und einige andere Funktionen, aber ich denke der Fehler liegt irgendwo beim UDT, da ich noch nie mit einem gearbeitet habe.
Mir ist bewusst dass, bei dem Programm noch deutlich Zeilen gespart werden können, jedoch lasse ich es vorerst zum Funktionstest in der Rohform.
Bei meinem ersten Versuch das Programm zu testen bekomme ich nun leider einen CPU Stopp mit einem Bereichslängenfehler.
Ich vermute, dass das bedeutet, dass ich an irgendeiner Stelle im Programm Daten auf eine Variable schreiben will, die nicht genug Speicherplatz dafür besitzt, oder?
Beim Anklicken von "Gehe zu" springt er zur Zeile mit dem Inhalt: "IF IS1_A AND DB2.TICKET[N].Bezahlt = TRUE THEN".
Ist eventuell mein Aufruf des Bool "Bezahlt" von UDT im DB2 falsch? N wird bei der Deklarierung mit 1 beschrieben und sollte nicht leer sein.
Ich hänge hier mein Programm (Im nächsten Post, sonst zu lang) sowie ein Bild vom Fehler und der Symbolliste an.
Eventuell will mir ja jemand beim Fehlersuchen helfen.(Programmiert auf einer 300erCPU)
Für Tipps, Verbesserungsvorschläge, etc. bin ich jeder Zeit offen, da mir das hoffentlich beim weiteren Lernen helfen wird!


Auf meinem Weg mir selbstständig die S7 PLC Programmierung beizubringen bin ich bei einem neuen Projekt auf einen Fehler gestoßen.
Ich habe eine SCL Quelle erstellt und diese in einen FB umgewandelt und im OB1 aufgerufen. Der dazugehörige DB wurde erstellt und die Zuweisungen in der Symbolliste wurden angegeben. Beim Übersetzen gibt es keine Fehler.
Mein SCL Programm soll ein Parkhaus darstellen, bei welchem mittels eines UDT Array (in einem globalen DB2) in dem sich je eine Ticketnummer(INT), eine Aktivierungsabfrage(BOOL) und eine Zahlungsabfrage(BOOL) befinden, Tickets beim Einfahren ausgegeben werden sollen.
Danach muss das Ticket bezahlt werden und erst mit Erhalt eines Tickets das bezahlt wurde soll die Ausfahrt möglich sein.
Es gibt auch eine Ampelregelung und einige andere Funktionen, aber ich denke der Fehler liegt irgendwo beim UDT, da ich noch nie mit einem gearbeitet habe.
Mir ist bewusst dass, bei dem Programm noch deutlich Zeilen gespart werden können, jedoch lasse ich es vorerst zum Funktionstest in der Rohform.
Bei meinem ersten Versuch das Programm zu testen bekomme ich nun leider einen CPU Stopp mit einem Bereichslängenfehler.
Ich vermute, dass das bedeutet, dass ich an irgendeiner Stelle im Programm Daten auf eine Variable schreiben will, die nicht genug Speicherplatz dafür besitzt, oder?
Beim Anklicken von "Gehe zu" springt er zur Zeile mit dem Inhalt: "IF IS1_A AND DB2.TICKET[N].Bezahlt = TRUE THEN".
Ist eventuell mein Aufruf des Bool "Bezahlt" von UDT im DB2 falsch? N wird bei der Deklarierung mit 1 beschrieben und sollte nicht leer sein.
Ich hänge hier mein Programm (Im nächsten Post, sonst zu lang) sowie ein Bild vom Fehler und der Symbolliste an.
Eventuell will mir ja jemand beim Fehlersuchen helfen.(Programmiert auf einer 300erCPU)
Für Tipps, Verbesserungsvorschläge, etc. bin ich jeder Zeit offen, da mir das hoffentlich beim weiteren Lernen helfen wird!

