TIA Eingänge durch HMI überschreiben

Hendrik2k1

Level-2
Beiträge
9
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich suche nach einer eleganten Lösung um in einem bestehenden Projekt Testweise Eingänge durch ein simuliertes HMI zu überschreiben. Das Gerät mit CPU 1512 C 1PN soll dann auf PLCSIM laufen.


Ich hatte bislang den Ansatz verfolgt, dass ich die InputBytes meiner Hardware zunächst in einen Datenbaustein schreibe in SCL:

PLC1.JPG

Dabei ist Input.DB.InputByte1x jeweils Bytes in einem Datenbaustein:

1750769569499.png

Ich hätte jetzt angenommen, dass ich dann auch entsprechend durch das HMI direkt einzelne Bits der Bytes "InputByte1x" überschreibe im Simulationsfall.
Währenddessen sind mir aber Zweifel gekommen, ob das überhaupt ein legitimer Weg ist, weil ja dann zwei Quellen auf ein Byte/Bit schreiben.

Und dann müsste ich ja noch in den Programmbausteinen alle meine %I0.x ersetzen, wobei mir dann aber der Ausdruck "Input_DB".InputByte10.0" direkt rot markiert wird.

PLC2.JPG

Ist dieser Weg überhaupt elegant und sinnhaft bzw. legitim?
Bin für jeden richtungsweisenden Ratschlag offen.
Mir ist bewusst, dass es noch so eine Lösung namens SimTable über PLCSIM gibt, ich möchte hier aber gerne durch HMI Input testen.
 
Am OB1 Anfang ( also vor sämtlichen Bausteinaufrufen ):

%I10.0 := SimulationsbitVonDerVisuFuerEingang10_0;

Den ganzen Rest kannst du dir sparen. Sollte man halt nur zum testen nutzen und danach rausschmeißen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Und dann müsste ich ja noch in den Programmbausteinen alle meine %I0.x ersetzen, wobei mir dann aber der Ausdruck "Input_DB".InputByte10.0" direkt rot markiert wird.
"Input_DB".InputByte10".%X0

Grundprinzip: Eingangsbit oder HMI-Simulationsbit je nach Simulationsmode aktiv/nicht aktiv auf ein Zwischenbit kopieren und dieses Zwischenbit dann im Programm verknüpfen.
Code:
ProgInput := (HW_Input AND NOT SimMode) OR (HMI_Input AND SimMode);

Wegen der Schreibfaulheit bei vielen Inputs kann man dieses Prinzip verschieden dirty ausprogrammieren. ;)
 
Anstatt sämtliche eingänge auf die HMI zu manipulieren, mache es so dass die Eingänge folgt was die Asugänge macht.
Und dazu eventuell einige bits um Probleme zu simulieren.
Etwas in diesen Stil:
Code:
"HS_Ok" := "Q_HS" AND NOT "HS_test_problem" ;
Dies kann man perfektionieren wie man will. Z.B. die "HS_Ok" kommt erst mit Zeitverzögerung.
Die "HS_test_problem" wurde ich in eine Beobachtungstabelle steuern.

Die Simuliercode wurde ich in ein FC packen und als das erste in OB1 aufrufen.
 
Zurück
Oben