# CoDeSys 2.3.*.* Problem bei der Ablaufsprache



## ToxicSPS (5 August 2011)

Hallo,
ich habe ein kleines Problem in meiner Ablaufsprache und komme nicht darauf woran es liegt.
Mein Programm besteht aus mehreren Teilprogrammen die alle in AS programmiert sind. Eines dieser Programme steuert über Globale Variablen 2 andere Programme an und startet diese.Je eine andere Globale Variable in diesen (unter)Programmen wird am Ende geschaltet und sollte dann im Hauptprogramm dafür sorgen das es in den nächsten Schritt weiter geht. Dies funtioniert aber leider nicht obwohl sie nirgens abgeschalten werden. Wenn diese Variablen geschaltet werden beenden sie auch die 2 Unterprogramme was auch funtioniert daher gehe ich davon aus das sie geschaltet werden. Wenn ich die Variablen von Hand auf True setze schaltet mein Hauptprogramm auch nicht weiter obwohl die Transition blau gekennzeichet wird was ja normal bedeutet das die Bedingung erfüllt wurde.

Hoffe es kann mir jemand helfen

Gruß Tox


----------



## Paule (5 August 2011)

ToxicSPS schrieb:


> Wenn diese Variablen geschaltet werden beenden sie auch die 2 Unterprogramme was auch funtioniert daher gehe ich davon aus das sie geschaltet werden. Wenn ich die Variablen von Hand auf True setze schaltet mein Hauptprogramm auch nicht weiter obwohl die Transition blau gekennzeichet wird was ja normal bedeutet das die Bedingung erfüllt wurde.


Hallo Tox,
kann es sein das dein Programm schon im nächsten Schritt ist und der von dir erwartete Schritt zurückgesetzt wurde?

Mach doch mal ein screenshot von der Onlinesicht


----------



## ToxicSPS (5 August 2011)

Wie man sieht bleibt das Programm hier stehen ... auch wenn man die Variablen von hand auf True setzt will es dort nicht weiter...


----------



## Voxe (5 August 2011)

Hallo,

habe mal was ähnliches gesehen.

Da gab es eine Variable, die dummerweise den gleichen Namen wie die Aktion hatte. Da geht dann nix mehr, wenn diese auf false steht. Allerdings konnte man die nicht dauerhaft auf true setzen.

Gruß


----------



## Paule (5 August 2011)

Sorry, aber wenn die Variable "DA_ZYKLUSENDE_KAN" wirklich True ist kann ich auch kein Fehler erkennen.

Edit:
Oh, gerade hat ja Voxe geschrieben.
Hilft sicher mehr.


----------



## ToxicSPS (5 August 2011)

Alo erst mal danke für eure Antworten aber leider konnte ich das Problem noch nicht beheben... hab nochmal ein Bild gemacht bei dem man sieht das die beiden Globalen Variablen (hier leider Programmbedingt eingekürzt was mich gleich zu Frage führt ob man die Aktionen eines Schrittes auseinanderziehen kann das man mehr sieht) nicht geschalten werden/wurden. Habe das Programm mit Strg+F5 durchgeklickt das keine weiteren Schritte geschalten werden.

Vieleicht jetzt noch jemand eine Idee?


----------



## Paule (6 August 2011)

ToxicSPS schrieb:


> hab nochmal ein Bild gemacht bei dem man sieht das die beiden Globalen Variablen nicht geschalten werden/wurden.


Wo werden die Variablen zurückgesetzt? 
Nur im Schritt "Start_1"?
1.Versuch: Vorschlag von Voxe prüfen
2.Versuch: Das Rücksetzen entfernen, dann muss es ja wenigsten einmal gehen.


----------



## Voxe (6 August 2011)

Hallo,

allerdings ist bei den Screenshots klar, alle Transitionen sind mit "true" programmiert. Die Folge ist erstmal das deine Anzeige, bzw. der aktive blaue Schritt richtig ist. Wenn also deine Bedingung erfüllt ist, landest du direkt wieder in diesem Schritt.

Ich habe gelesen, das du nur einen Auszug zeigen willst, aber so, kann nur dieses Ergebnis herauskommen. Ein paar mehr Infos wären schon gut.

Gruß, Voxe

PS: unten rechts im zweiten Bild, das kleine blaue Rechteck, das sieht wie ein böser Verdächtiger aus. (es wird aber nicht komplett dargestellt).


----------



## ToxicSPS (6 August 2011)

Hallo 
also das gesammte Programm besteht derzeit aus 6 Programmen eines davon ist natürlich das PLC_PRG das alle programme startet. Jedoch werden sie nicht alle auf ein mal gestartet. Das Programm auf dem letzten Screen ist das einzigste das ohne Bedingung startet und erst durch dieses Prog startet z.B. ein Programm in dem die Auswahl getroffen wird welche weiteren Programme benötigt werden oder ob keine weiteren Programme benötigt werden. (Je nach Auswahl) Das heisst alle Programme stehen in den Startlöchern und warten auf ihre Startbedingung. Ich habe jetzt durch viel hin und her testen bemerkt das wenn ich nur das Erste Programm benutze meine Variablen geschalten werden und sobald ich eines der anderen in den PLC_PRG einfüge diese 2 Variablen nicht mehr geschalten werden. Das ergibt für mich aber keinen Sinn da die anderen Programme nicht anlaufen sondern wie gesagt in den Startlöchern stehen. Auch wenn diese 2 Variablen in den Programmen teilweise rückgesetzt werden dürften sie es doch nicht tun da sie nicht starten oder ?

Hoffe das hilft etwas weiter ... ich verstehs echt nicht was da los is 

Gruß Tox


----------



## Voxe (6 August 2011)

Hallo Toxic,

nach deinem letztem Post, werde ich mir sicherer, du hast eine Variable oder mehrere so genannt, wie einen deiner Schritte. Wie ganz oben geschrieben, die SPS merkt siesen Fehler nicht, weil sie nicht weiss was du vor hast.

Prüfe doch mal deine Variablen, ob eine so heisst wie einer deiner Schritte. Der Name bzw. die Beschriftung eines Schrittes ist eine Art Programmname. Wenn es eine Variable des gleichen Namens gibt, hast du dieses Problem.

Gruß


----------



## ToxicSPS (6 August 2011)

Hallo Voxe,
Könnte das auch eine ganz andere Variable sein oder müssten es diese 2 sein ? Denn diese 2 heissen DA_ZYKLUSENDE_1 und DA_ZYKLUSENDE_2 allerdings heisst keiner meiner Schritte so in keinem meiner Programme.


----------



## Voxe (6 August 2011)

Hallo,

das könnten auch andere sein, aber dazu müsste man des ganze Projekt betrachten. Was mir, in deinem Falle nix bringt, da ich mit TwinCAT arbeite, könnte es also nicht sichten.

Allerdings, deine Beschreibung das es funktioniert, wenn nur ein Programm oder nicht alle laufen, weist auf so ein Problem hin. Läuft ein Programm und ein Name einer boolschen Variable hat den Namen einer nicht aktiven Aktion, ist diese false.

Eine Hochsprache hätte dies erkannt, eine SPS lässt das halt zu.

Gruß, Voxe

PS: denke auch an die Adressvergabe der Variablen, nutzt du feste Adressen, ist der Name Schall und Rauch.


----------



## ToxicSPS (6 August 2011)

So das hat jetzt etwas gedauert aber ich habe alles miteinander verglichen und kein Schritt hat den Namen einer Variablen. ich habe auch mal 2 neue Variablen mit dem Namen DDDD_Test1 und DDDD_Test2 erstellt und alle DA_ZYKLUSENDE_KANAL_1 und DA_ZYKLUSENDE_KANAL_2 ersetzt ... gleiches Problem wieder . Da Problem muss was anderes sein und versteckt sich irgendwo  

Zu deinem PS: Ich verwende keine Adressen an dieser Stelle.


----------



## Voxe (6 August 2011)

Hallo,

hätte ja was einfaches sein können.

Ich würde nun, die Programme nach und nach zuschalten. Um zu erkennen welches der anderen Programme den Fehler erzeugt. Und diese Programme genauer vergleichen.

Helfen kann ich da wohl nicht, aber an dem Ergebnis bin ich interessiert. Bzw. was da quer im Stall stand.

Viel Glück und Gruß, Voxe


----------



## ToxicSPS (6 August 2011)

Ich werde jetzt die große Testreihe beginnen vieleicht komm ich dem Fehler ja auf die Schliche  Wenn ich es rausbekomme sag ich sofort bescheid woran es lag und wie man es beheben kann ...

Gruß Tox und nochmals vielen Dank


----------



## Voxe (6 August 2011)

Hallo Tox,

vielleicht noch ein Tip, versuche zu denken wie eine SPS arbeitet. Ich meine, den Ablauf der Variablenaktualisierung. Vielleicht hast du ein Timing Problem, das ein Programm eine Variable setzt und zwischendurch ein anderes sie zurücksetzt bevor du sie verarbeitet hast.

Gruß


----------



## ToxicSPS (7 August 2011)

Hallo,

Also ich hab jetzt ganz schön viel durchprobiert und habe ein paar Dinge bemerkt wobei mien Problem immer noch besteht...

Die Variablen werden geschalten wenn das eine Startprogramm ganz alleine läuft, sie werden nicht geschalten sobald ein Programm hinzugefügt wird (aber nicht gestartet) in dem diese Variablen irgendwo Rückgesetzt werden.

Ein Programm kann man hinzufügen dieses läuft dann so weit bis es an eine Stelle kommt an der diese 2 Variablen als Bedingung zum schalten gefordert werden. Trotz das diese TRUE sind und mir das programm durch blaue Schrift zeigt das die Bedingung erfüllt wurde schaltet das Programm nicht weiter. (nächster Schritt wäre das Rücksetzen dieser Variablen) Doch auch als ich das Rücksetzen durch 2 vollkommen andere Variablen änderte wollte das Programm hier nicht weiter machen ... Dann habe ich dieses Programm nochmal neu geschrieben (dachte vieleicht ist irgendwo n Fehler von CoDeSys drin) aber das hatte auch keinen Erfolg.

Ich hoffe ich bekomme morgen im Betrieb unterstützung ich weis nimmer weiter 

Gruß Tox


----------



## Solaris (8 August 2011)

Hallo Tox,

hast du auch versucht die Variablen einfach mal umzubenennen?

Gruß Soli


----------



## ToxicSPS (8 August 2011)

Hallo Solaris,

Ja habe ich auch schon versucht, habe sie umbenannt und an jeder Stelle ausgetauscht.

Gruß Tox


----------



## ToxicSPS (8 August 2011)

Soooooo warscheinlich warten schon ein paar Leute auf die Langersehnte Lösung.

Nochmal kurz das Problem: 2 Variablen die in einem Programm (AS mit IEC Schritten) auf True gesetzt werden sollten, wurden immer sofort wieder auf False gesetzt obwohl das Programm das diese Variablen zurücksetzt noch garnicht soweit abgelaufen war.

Nach Stundenlangem Versuchen im Einzelschritt, Breakpoints setzen und gefühlten 6 Stunden Telefonat hab ich die Lösung bekommen.

In der AS Programmierung mit IEC Schritten werden Schritte die eigentlich noch garnicht an der Reihe sind schonmal ausgeführt obwohl das Programm noch garnicht an dieser Stelle ist. Warum das so ist konnte mir leider keiner sagen und einen genauen Hinweis auf diesen Fehler hab ich auch in keinem Handbuch gefunden. 

Ich werde nun mein ganzes Programm nochmal in AS schreiben aber diesmal ohne IEC Schritte 

Ich hoffe ihr werdet dieses Problem niemals haben denn da beginnt man schonmal an sich selbst zu Zweifeln...

Gruß Tox


----------

