@Harald:
das war sein Koppelbereich mit dem er arbeitet :
OK, meine Anleitung sollte nur ein Beispiel für die Tastenprojektierung sein. Ich hätte andere Adressen als Beispiel wählen sollen.
Ich bin davon ausgegangen, daß Sepp1301 in seinem Projekt für die Buttons sowieso andere Adressen benutzt (die er uns aber nicht mitgeteilt hat), weil:
in der Simulation funktioniert das Button drücken soweit.
War das eine WinCCflex-Simulation mit dem Variablen-Simulator? Der Variablen-Simulator verhält sich nicht wie eine echte SPS!
Ich bin davon ausgegangen, daß es eine Simulation der Flex-Runtime mit PLCSIM ist, weil ich das immer so mache.
Wie man wieder mal sieht, ist es äußerst hilfreich, wenn der Fragesteller von sich aus möglichst viele genaue Informationen und möglichst auch Programmcode hergibt.
Das Problem mit dem falsch eingestellten CPU-Steckplatz hätte auch gleich am ersten Tag des Threads geklärt werden können, hätte Sepp1301 den Screenshot von der Verbindungsprojektierung gleich angehängt.
Also etwas weiter ausholen:
Die SPS und die Visu dürfen nicht in die selben Variablen (Adressen) schreiben, sonst "gewinnt" dann immer die SPS.
Für alle Variablen von/zur Visu erstelle ich mehrere DB, z.B.
* DB100 wo nur die Visu reinschreibt (Tasten-Bits)(OK, der OB1 überschreibt die Tasten-Bits am Ende mit 0)
* DB101 mit allen Visu-Anzeigewerten, in den die SPS Kopien interner Variablen für die Visu reinschreibt
* DB102 für Einstellwerte/Sollwerte die die Visu anzeigt und nur bei Änderung (Eingabe) reinschreibt
* ...
Das mache ich so, damit ich die meisten DB problemlos erweitern und stoßfrei in die SPS laden kann.
Auf Sepp1301 bezogen könnte das dann so aussehen:
- die Visu-Tastenbits liegen in DB100.DBX0.0 ...
- die Visu-Anzeigewerte liegen in DB101.DBB0 ... (das was sein DB4 ist)
In der Visu gibt es 2 Tasten-Variablen: "S_A1_Ein" auf DB100.DBX0.0 und "S_A1_Aus" auf DB100.DBX0.1
2 Schaltflächen (oder Schalter) setzen bei Drücken oder Klicken (oder Schalten) diese Variablen.
Das SPS-Programm (die Adressen noch an Deine Gegebenheiten anpassen!):
Der FC1
Code:
//E/A-Status in Visu-Anzeigewerte kopieren
L EB 0
T DB101.DBB 0
L EB 124
T DB101.DBB 1
L EB 125
T DB101.DBB 2
L AB 8
T DB101.DBB 3
L AB 124
T DB101.DBB 4
L AB 125
T DB101.DBB 5
L EB 126
T DB101.DBB 6
L MB 1
T DB101.DBB 7
Irgendwo im Programm mit den Visu-Tasten den SPS-Ausgang A124.0 schalten:
Code:
U DB100.DBX 0.0 //von Visu: S_A1_Ein
S A 124.0
U DB100.DBX 0.1 //von Visu: S_A1_Aus
R A 124.0
NOP 0
Am Ende vom OB1
Code:
//Visu-Tastenbits löschen
L 0
T DB100.DBD 0 // DBX0.0 - DBX3.7
Weil hier die Tastenbits immer auf 0 gelöscht werden, können die Tastenbits nicht beobachtet werden, wie sie nach Tastendruck in der Visu für 1 Zyklus lang 1 werden.
Der DB100 mit den Tastenbits muß in diesem Beispiel mindestens 4 Byte groß sein.
Wenn Du Deine Visu-Adressen nicht zu DB101... ändern willst, dann mußt Du alle DB101 durch DB4 ersetzen.
Noch ein Tip:
Wenn Du das WinCCflex-Visu-Projekt in das Step7-SPS-Projekt integrierst, dann kannst Du bei den Variablen-Adressen kaum noch Fehler machen. Der CPU-Steckplatz bei der Verbindungs-Projektierung wäre auch automatisch richtig eingetragen worden.
Harald