Hallo Timi,
die Merker kann man sehr wohl per OPC beschreiben. Das funktioniert aber nur, wenn sie nicht als "Schütz" in einen "Strompfad" eingebunden sind.
Noch einmal zum Verständnis:
Zu Beginn eines Zyklus kopiert die SPS den Zustand aller Eingänge in den Speicher. Das kann man so verstehen, als ob das auch Merker sind, die dann den Namen "Ix" haben. Ändert sich dann der Zustand an einem Eingang, dann hat das KEINE Auswirkung auf den grade laufenden Zyklus. Alle Strompfaden, in denen der "Eingangsmerker" "Ix" verwendet wir, arbeiten mit dem Zustand, der zu Beginn des Zyklus gespeichert wurde, auch dann, wenn sich der physikalische Zustand am entsprechenden Eingang zwischenzeitlich geändert hat.
Hast Du nun einen "Eingangsmerker" I1 mit dem Merker M1 als "Schütz" verbunden, dann wird mit jedem Zyklus der Zustand von I1 IMMER in M1 übernommen. Ist der Eingang I1 "False" (Null, Aus, ...) , dann wird auch "False" in den Merker übernommen. Ist er "True" (1, Ein, ...) dann wird auch der Merker auf "True" gesetzt.
Schreibst Du jetzt einen Wert in diesen Merker M1, dann wird das zwar ausgeführt, aber mit dem nächsten Zyklus (nur Millisekunden später) wird der von Dir hineingeschriebene Wert wieder mit dem Wert von I1 überschrieben. Deshalb sieht das so aus, als ob es nicht funktioniert.
Um das Problem zu lösen, gibt es zwei Möglichkeiten:
1. Du verwendest den Merker nur als "Öffner" oder "Schließer", aber nicht als "Schütz". Die Einzige Möglichkeit, den Merker zu verändern besteht dann durch Beschreiben per OPC. Das hat aber den Nachteil, dass Dein externes Programm dem Merker auch wieder zurücksetzen muss, wenn kein Bedarf für die dahinter steckende Funktion mehr besteht.
2. Du beschreibst den Merker in der Easy nur durch "Setzen" und "Rücksetzen". Das bedeutet für obiges Beispiel mit "I1" und "M1", dass der Eingang "I1" den Merker nur dann auf "True" setzt, wenn er selbst "True" ist. Ist der Eingang nicht angesteuert, dann wird der Merker auch nicht verändert. Du kannst ihn also auch per OPC auf "True" setzen, und es wird die gleiche Wirkung haben, wie die Ansteuerung des Eingangs. Ist die Aktion, die Du mit dem Merker ansteuerst, ausgeführt (z.B. Rolladen ist unten), dann wird der Merker (z.B. vom Endschalter) per "Rücksetzen" wieder auf "False" gesetzt.
Noch zur Info: Die Ausgänge "Qx" sind letztendlich auch Merker. Erst wenn alle Strompfade innerhalb eines Zyklus abgearbeitet sind, dann übernimmt die SPS den Zustand der "Ausgangsmerker" an die physikalischen Ausgänge. Wird ein Ausgang in mehreren Strompfaden mal ein- und mal ausgeschaltet, dann hat das keine Auswirkung auf den physikalischen Ausgang. Erst, wenn alle Strompfade abgearbeitet sind, dann wird der zuletzt "berechnete" Zustand an den Ausgang übernommen.
Ich hoffe, dass das so verständlich ist.
Übrigens: Das Prinzip der "Prozessabbilder" und "Zyklen" ist auch im Handbuch beschrieben. Mann sollte daher unbedingt auch die Einführung lesen, und nicht gleich mit der Beschreibung der Programmierung beginnen.
Gruß
Randolf