Ein Problem, auf das ich bei meinen ersten Programmen bei Kinco SPS gestoßen bin, ist der JMP-Befehl. Das ist ein Sprungbefehl, der zu einer Sprungmarke (lbl) springt. Der Befehl wird an das Ende eine Zeile als Coil/Ausgang gesetzt. Die Erwartung, die ich hatte (und auch viele Kunden, die sich dann im Support melden) ist, dass der Sprung nur ausgeführt wird, wenn die vorherige Bedingung im Netzwerk des Kontaktplan erfüllt ist.
Das ist leider ein großer Irrtum! Der JMP-Befehl wird immer ausgeführt, unabhängig davon, was davor passiert. Ich bin gar nicht ganz sicher, wann man so etwas überhaupt nutzen wollte? Wenn man zurückspringt, dann landet man irgendwann im Timeout des Zyklus und die SPS geht in einen Watchdog-Fehlermodus, den man erst einmal beheben muss (ist einem Kunden schon passiert). Das behebt ihr über die Funktion PLC -> "Clear in watchdog state ...". Darüber könnt ihr das Programm in der SPS löschen, wenn sie im Watchdog-Modus landet.
Der richtige Befehl, den man eigentlich viel eher braucht ist JMPC. Das ist der bedingte Sprung, der nur ausgeführt wird, wenn die vorherige Bedingung erfüllt ist. Mit JMPCN gibt es davon auch eine negative Variante, die springt, wenn die Bedingung vorher nicht erfüllt ist.