Es werden gemäß Vorlage halt DInts verwendet um Arrays of Bool abzubilden, das ist halt so und das kann und darf ich zur Zeit nicht ändern.
Variablen in DBs können Initialwerte haben. Aus irgendeinem Grund hat die Übersetzung von Rockwell zu Siemens da bei jedem DInt den Wert 50 stehen.
Die Logik hinter der Programmpassage ist folgende:
Wenn die Flanke ansteht, dann soll damit in dem Zyklus zweimal Daten kopiert/verschoben werden durch die MOVE Blöcke, was jedoch durch einen Vergleich abgefangen werden soll.
Rockwell kann das so, Siemens scheinbar nicht, siehe weiter Unten.
Die Visu hat mit diesen P_Trig Bits gar nichts zu tun. Das läuft schon seit Jahren so, ohne Probleme.
Der Problemstellen bzw. der Problem FC ist seit der neuesten Übersetzung halt eben drin in der Form und ein Problem.
Lösung kommt im folgenden.
#########################################################################
Lösung bzw. Problem gefunden:
Siemens ist anscheinend immer noch nicht fähig, problematische Programmierungen beim Kompilieren mit einem Fehler zu verweigern.
Ähnlich wie bei dem weiter oben genannten Beispiel mit dem AWL Code wo das U M100.0 in das UND weiter unten rutscht.
Siemens schreibt
Dem sollten Sie hinzufügen, dass dem P_Trig unbedingt eine Einzelbitzuweisung (Boolsche Zuweisung : ---(R), ---(S), ---(/) oder ---( )) folgen muss.
Ich habe das Problemnetzwerk am Arbeitsplatz mit einer kurzfristig organisierten 1515F-2PN SPS nachgestellt.
Wenn dieser Konstellation keine Bitzuweisung folgt, ist der Ausgang des P_Trigs Standardmäßig = True.
Erst wenn man dahinter irgendeine der o.g. Zuweisungen macht, verhält er sich so, wie er soll.
Für Siemens sind demnach Größenvergleiche und MOVE nicht existent.
Ich hoffe, das hilft jemandem hier, wenn er in Zeit X mal über den Thread stolpert.