Fehlersuche unter CoDeSys auf einer Pixtend Steuerung

JüKo

Level-2
Beiträge
91
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum
mein Programm hab ich auf eine Pixtend-Steuerung geladen und hab mich mit Codesys 3.5 eingeloggt. Wenn ich nun unter Online einen Reset warm mache dann gibt Codesys "Programm geladen - Ausnahmefehler" aus. Wie gehe ich das grundsätzlich an so einen Fehler zu finden. Hab noch nicht so viel Erfahrung in Codesys. Und noch eines finde ich komisch, das hat aber wahrscheinlich mit Codesys nichts zu tun. Wenn ich einen Reset Ursprung mache und dann das Programm wieder auf die Steuerung lade, dann werden nicht alle vordefinierten Werte der Variablen Global Persistent Retain übernommen, muss diese in der Visu eingeben. Wenn ich aber in Codesys die Variable in der Variablenliste auskommentiere und weiter unten wieder einfüge dann klappt es beim nächsten Start. Hat da die Hardware einen Schuss?
Danke für eure Mühe und freundliche Grüße,
Jürgen
 
Zuletzt bearbeitet von einem Moderator:
Moin Jürgen,

eine Vermutung:
kann es sein, dass Du mit Pointern oder Schleifen auf Arrays zum Initialisieren zugreifst?
Dann könnte es sein, dass Du außerhalb des Arrays zugreifst und eventuell Deine Retain überschreibst.

Falls dem so ist, siehe Die in der Hilfe mal die Funktion CheckBounds an.

Gruß
Jens
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn der Editor im eingelogten Zustand nicht auf die verursachende Code-Zeile springt und fett gelb markiert, kannst Du nur Stück für Stück den Code - nicht die Deklarationen - auskommentieren, um den Fehler einzukreisen.
Klassische Fehler sind: Division by Zero, Nullpointer-Zugriffe, auf nicht existierende Array-Elemente zugreifen.

Das es an der Hardware liegt, würde ich erst mal ausschließen.
 
Wenn ich einen Reset Ursprung mache und dann das Programm wieder auf die Steuerung lade, dann werden nicht alle vordefinierten Werte der Variablen Global Persistent Retain übernommen

Von wo sollen die übernommen werden? Von deinem PC? Das ist ja genau der Sinn von Persistent, dass sie trotz Donwload erhalten bleiben. Wenn du sie auskommentierst und weiter unten einfügst, erkennt der Compiler eine Änderung und spielt sie dann ein.

https://help.codesys.com/api-content/2/codesys/3.5.13.0/de/_cds_vartypes_retain_persistent/
 
Also Arrays verwende ich, da schau ich jetzt mal nach
Ich hab mal nach der Fehlermeldung geschaut. Diese ist "EXEPTION" [GlobalInit] code: App=[Applikation], Exeption=[AccessViolation]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also das mit den persistenten Variablen erklär ich nochmal. Ich hab ein Array, das sieht folgendermaßen aus...
Bandgeschwindigkeit : Array [0..7] OF REAL := [0, 3, 6, 9, 12, 15, 18, 21]; Diese Werte 0 bis 21 sollten doch beim Übertragen des Programmes von Codesys zur Steuerung initialisiert werden.
Dem ist aber nicht so, jetzt muß ich die Werte von Hand in der Visu nachtragen. In dem Eingabefenster der Visu steht jeweils 0 drin. Wenn ich aber diese Variable in der persistenten Variablenliste auskommentier und einfach weiter unten wieder einfüge, dann das Programm nach einem"Reset Ursprung" wieder in die Steuerung übertrage, dann sind die Variablen vorhanden wie es sein soll. Beim nächsten "Reset Ursprung" aber nicht mehr.
 
Hab die Werte des Arrays geändert auf [0.0, 3.0...] also immer einen Dezmalpunkt und eine Null dran. Hm... bis jetzt sieht es gut aus. Mal weiter testen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also funktioniert noch nicht. Hab in der Variabblenliste "VAR_GLOBAL PERSISTENT RETAIN" in Codesys eine Variable gelöscht. Dadurch sind die anderen in der Zeile nach oben gerutscht, unter anderem auch die Variable "Bandgeschwindigkeit : Array [0..7] OF REAL := [0, 3, 6, 9, 12, 15, 18, 21];". Jetzt wieder das gleiche Problem, die Werte im Array sind alle Null. Ich hab zuerst einen Reset Ursprung durchgeführt. Das bedeuted doch, dass auf der Steuerung keine Variablen von "VAR_GLOBAL PERSISTENT RETAIN" drauf sind. ODER? Wenn ich mich nun neu in die Steuerung einlogge dann bekomme ich die Meldung, dass keine Programm auf der Steuerung ist. Wenn ich es nun übertrage, was ich gemacht habe, dann sollten doch alle meine Variablen von "VAR_GLOBAL PERSISTENT RETAIN" auf der Steuerung sein? Ist aber nicht so, alle 8 Werte des Arrays haben den Wert 0.0.
 
Zurück
Oben