TIA Automatisches Setzen von Inputs in PLC Sim

Fesinator92

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
[Solved] Automatisches Setzen von Inputs in PLC Sim

Hallo Community,

ich habe zurzeit ein Problem mit TIA Portal in Verbindung mit PLCSim und hoffe ihr könnt mir dabei helfen. Es handelt sich bei beiden Programmen um die Version 13 und die Basis Version.

Erstmal vom Anfang: Ich habe die Variablen in einer Variablentabelle angelegt. Da ich dort aber keine Remanenz bei den Variablen habe, überführte ich diese in einen globalen Datenbaustein. Dieser ist optimiert.

Nun werden die Variablen jedoch bei der Verwendung in FUP zum einen ohne Adresse und zum anderen nur noch als "..." angezeigt, sodass es kaum eine Unterscheidung zwischen den Variablen gibt und damit die Übersichtlichkeit darunter leidet. Gibt es dort weitere Möglichkeiten?

Zweites Problem und eher das Größere:
Wenn ich das Programm beobachten möchte, starte ich PLC SIM und füge die Variablen dort in die Sim-Tabelle ein.
Wenn ich nun jedoch versuche, einzelne Inputs zu setzen, werden auch, wie von Zauberhand, andere Inputs auf 1 gesetzt ohne, dass diese irgendeine Verknüpfung zueinander aufweisen. Manche Variablen lassen sich dann auch nicht mehr zurücksetzen.
Das Kuriosiste dabei ist, dass bei einem bestimmten Input auf 1 zwei Int-Variablen die Werte 8 und 2048 annehmen, obwohl diese wiederrum keine Verbindung miteinander haben.

Bin dankbar für jede Antwort und hoffe ihr könnt mir bei den beiden Problemen helfen :)

EDIT mit Lösung:

Durch die unvorteilhafte Deklarierung der Wörter (IW1, IW2) fand eine Überlagerung statt. Deshalb wurden die Wörter in IW4 und IW6 umbenannt, welches das Problem löste.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich versuche das ganze jetzt mal irgendwie zu erklären. Von %I0.1 bis %I0.6 sind verschiedene Inputs deklariert. Zwei Integer Variablen (%IW1,%IW2) sind ebenfalls angelegt. Diese 2 Int-Werte werden im Programm miteinander multipliziert und zwar erst dann wenn %I0.1 true ist.

Also setze ich %I0.1 auf 1 und gebe bei IW2 eine Zahl ein (wird auch einwandfrei genommen) und bei IW1. Je nachdem welche Zahl IW2 hat, verändert sich IW1 dementsprechend.

IW1 = 1 --> IW2 = 256
IW1 = 2 --> IW2 = 512
IW1 = 3 --> IW2 = 768

und so weiter...dazu kommt, dass sich gleichzeitig die Inputs 0.2 bis 0.6 verändern

IW1 = 2 --> I0.2 = true
IW1 = 3 --> I0.3 = true
IW1 = 4 --> I0.4 = true
IW1 = 5 --> I0.3 und I0.4 = true
IW1 = 6 --> I0.2 und I0.5 = true
 
IW1 (ganz schlechte Wahl! weil ungerade) besteht aus IB1 und IB2. IW2 besteht aus IB2 und IB3.
Na, merkt er was?

Und warum zur Eingabe von Daten I(nput) und nicht M(erker).
PS: Keine Ahnung, ob die Merker in englisch nicht auch einen anderen Buchstaben haben.


Und wo gehen die I0.x im DB hin und wohin die IWs? Oder doch I1.x statt I0.x eingegeben? Klingt nämlich auch nach Überlagerung.
Vlt. kannst Du ja mal 'ne Screenshot posten?
 
Zuletzt bearbeitet:
Erstmal danke für die Hilfe;)

Bei IW1 hast du tatsächlich recht, ich habe noch nie wirklich mit Integer-Werten gearbeitet. Also das Problem, dass sich IW2 gleichzeitig erhöht, ist schon einmal gelöst.
Wie sich die Inputs verhalten, kann ich aber noch nicht sagen, weil ich das Programm nicht zuhause habe. Schaue ich mir dann morgen mal an.

Ich habe die als Inputs deklariert, weil PLCSim es bei der S7-1200 absolut nicht zulässt Merker auf irgendeinen bestimmten Wert zu setzen (ausgegrautes Feld).
Die I0.x im DB sind über Eingangs Zuweisungen (als FC angelegt) mit den Variablen aus der Variablentabelle verbunden. Diese haben bei mir die Bezeichnungen für die Lage im Schaltplan.

Da sehr viele Eingänge im Programm verwendet werden, gehen die Inputs von I0.x bis I1.6, kommt es dabei zu Problemen?
 
Gibt es einen Grund warum du keine Symbolik verwendest? Würdest du den Eingängen, Ausgängen Eingangsworten, Ausgangsworten Symbole geben und die Symbole in der Beobachtungs/Forcetabelle sowie im Programm verwenden, dann Motzt TIA bei überlappungen. Ausserdem siehst du dann immer welche Absolutadresse die Peripheriesymbole haben, was dir bei der Ein/Ausgangssimulation hilft

Dazu noch ein Tip. Wenn du die Peripherie erstmal in einen Globalen DB überführst, hast du erstens die Möglichkeit alle Eingänge etc zentral jeden Einzeln passend vorzubereiten (invertierung, skalierung etc.) und ausserdem kannst du für den Test im PLCsim diese übertragung der Peripherie erstmal ausklammern und dann direkt mit Variablentabellen Symbolisch arbeiten.

Bsp:
Code:
FUNCTION_BLOCK "IO_Handling"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1


BEGIN
    //
    // Import der IO's auf die DB's
    //
    
    // CPU - Eingänge
    "S7_FAS_AV01"._DBX_0_0 := NOT "DE_0_0";
    "S7_FAS_AV01"._DBX_0_1 := NOT "DE_0_1";
    "S7_FAS_AV01"._DBX_0_2 := NOT "DE_0_2";


    // Messschrank AV01 - Ausgänge
    "DA_25_0" := "S7_FAS_AV01"._DBX_25_0;             
    "DA_25_1" := "S7_FAS_AV01"._DBX_25_1;
    
END_FUNCTION_BLOCK

Testbetrieb:
Code:
ORGANIZATION_BLOCK "Main"
TITLE = "Main Program Sweep (Cycle)"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1


BEGIN
[COLOR=#ff0000]    //"IO_Handling_DB"();[/COLOR]
    "Sammelalarm_DB"();


    "Systemfunktionen_DB"(sekunden:="sekunden",
                          minuten:="minuten",
                          stunden:="stunden",
                          ms100_Takt:="ms100takt",
                          WD:="S7_FAS_AV01"._DBW_200_0);
    
END_ORGANIZATION_BLOCK

Scharfer Betrieb:
Code:
ORGANIZATION_BLOCK "Main"
TITLE = "Main Program Sweep (Cycle)"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1


BEGIN
[COLOR=#ff0000]    "IO_Handling_DB"();[/COLOR]
    "Sammelalarm_DB"();


    "Systemfunktionen_DB"(sekunden:="sekunden",
                          minuten:="minuten",
                          stunden:="stunden",
                          ms100_Takt:="ms100takt",
                          WD:="S7_FAS_AV01"._DBW_200_0);
    
END_ORGANIZATION_BLOCK

mfg René
 
Erstmal vom Anfang: Ich habe die Variablen in einer Variablentabelle angelegt. Da ich dort aber keine Remanenz bei den Variablen habe, überführte ich diese in einen globalen Datenbaustein. Dieser ist optimiert.

Nun werden die Variablen jedoch bei der Verwendung in FUP zum einen ohne Adresse und zum anderen nur noch als "..." angezeigt, sodass es kaum eine Unterscheidung zwischen den Variablen gibt und damit die Übersichtlichkeit darunter leidet. Gibt es dort weitere Möglichkeiten?

Die Variablentabelle dient dazu, den Variablen Namen (Symbole) zu geben. Das ist auch nicht für irgendwelche Remanenzanwendungen gedacht.
Bei optimierten Bausteinen auch aufpassen, dass die Remanenzeigenschaft aktiv ist!

TIA ist bei richtiger Nutzung der symbolischen Adressierung im Vergleich zu S7-classic richtig gut nutzbar.
Jeder muss nur für sich einen Weg finden, wie er seine Bausteine und Variablen benennt. Dann macht TIA auch richtig Spaß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ganz vergessen hier zu antworten. Danke für alle Antworten. Mein Problem hat sich durch die Anmerkung von Hucki gelöst. Habe einfach die deklarierten Wörter in IW4 und IW6 umbenannt :)
 
Zurück
Oben