Variablendeklaration in MicroSPS (SiemensS7-200)

Diesla

Level-1
Beiträge
64
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hab da gerade ein kleines Problem mit einem Unterprogramm unter MicroSPS von Siemens (die abgespeckte Version von Step7).

Und zwar möchte ich ein Unterprogramm, das jeweils eine Ein- und Ausschaltverzögerung enthält mehrmals durch verschiedene Operanden aufrufen.
Leider kann ich nur für die Ein- und Ausgänge Variablen festlegen, sodass ich verschiedene Ein- und Ausgänge verwenden kann.
Für die Zeiten kann ich keine Variablen festlegen, was dazu führt, dass in jedem Aufruf des Unterprogrammes die gleichen Zeiten (bei mir T39 und T40) verwendet werden. So kommt es dann natürlich zu einer Fehlfunktion!:(

Wäre echt super, wenn mir jemand von euch sagen könnte, wie man für die Zeitfunktionen Variablen festlegt oder was man alternativ machen kann.

Gruß
Diesla
 
Hallo Diesla,
wieso verwendest Du für die Teit PT nicht ein VW und lädst die gewünschte Zeit vor dem Timeraufruf in das VW? Das sollte meiner Meinung nach doch gut funktionieren.

Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Himbeergeist
Das löst doch das Problem nicht, dass der Timer mehrfach aufgerufen wird und gleichzeitig Zeiten laufen lassen muss.


Ich kann jetzt leider nur für den Simatic-Manager sprechen (S7-300) aber ich kann mir vorstellen, dass es strategisch genauso bei der 200er ist.

Also: Der Absolute Timer darf in deiner Funktion -die mehrfach aufgerufen werden soll- nicht sein. Dort musst Du wie schon richtig gesagt eine Variable vom Typ TIMER (oder so in etwa) nehmen. Den müsstest du auch bei den IN-Variablen finden. Wenn Bool möglich ist, muss auch z.B. INT und TIMER möglich sein.Der Timer wird dann von außen (bei jedem Aufruf ein anderer) an die Funktion geschrieben.
Wenn das nicht geht bleibt Dir nur die Möglichkeit den Timer aus der Funktion "rauszuoprieren" und extern zu beschalten. Dann einen Merker der von der Zeit gesetzt wird, in die Funktion zu übergeben.

Sonst weiß ich auch nichts. SORRY
 
Zuletzt bearbeitet:
Hallo himbeergeist und schwarzer_kater,

hab eure Vorschläge gerade ausprobiert. Funktionieren leider nicht. Es wäre zwar prinzipiell möglich, die Zeit aus dem Unterprogramm "herauszuoperieren", aber diese Möglichkeit kommt für mich nicht in Betracht. Liegt daran, dass ich bemüht bin, die Zyluszeit so klein wie möglich zu halten.

Trotzdem danke für eure Ideen!:D

Gruß
Diesla
 
Hallo,

ich hab da gerade ein kleines Problem mit einem Unterprogramm unter MicroSPS von Siemens (die abgespeckte Version von Step7).

Und zwar möchte ich ein Unterprogramm, das jeweils eine Ein- und Ausschaltverzögerung enthält mehrmals durch verschiedene Operanden aufrufen.
Leider kann ich nur für die Ein- und Ausgänge Variablen festlegen, sodass ich verschiedene Ein- und Ausgänge verwenden kann.
Für die Zeiten kann ich keine Variablen festlegen, was dazu führt, dass in jedem Aufruf des Unterprogrammes die gleichen Zeiten (bei mir T39 und T40) verwendet werden. So kommt es dann natürlich zu einer Fehlfunktion!:(

Wäre echt super, wenn mir jemand von euch sagen könnte, wie man für die Zeitfunktionen Variablen festlegt oder was man alternativ machen kann.

Gruß
Diesla


Schau Dir einmal die Anlage an - wird Dir sicherlich eine Idee geben..

iceman
 

Anhänge

  • TIMER.zip
    6,9 KB · Aufrufe: 24
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann jetzt leider nur für den Simatic-Manager sprechen (S7-300) aber ich kann mir vorstellen, dass es strategisch genauso bei der 200er ist.

Also: Der Absolute Timer darf in deiner Funktion -die mehrfach aufgerufen werden soll- nicht sein. Dort musst Du wie schon richtig gesagt eine Variable vom Typ TIMER (oder so in etwa) nehmen. Den müsstest du auch bei den IN-Variablen finden. Wenn Bool möglich ist, muss auch z.B. INT und TIMER möglich sein.Der Timer wird dann von außen (bei jedem Aufruf ein anderer) an die Funktion geschrieben.

Laut Systemhandbuch für die S7-200 (Seite 207) gilt:

Aufruf von Unterprogrammen mit Parameterübergabe

Variablentyp: IN, IN_OUT, OUT, TEMP

Datentyp: BOOL, BYTE, WORD, DWORD, INT, DINT, REAL, STRING, Signalfluss

http://support.automation.siemens.com/WW/view/de/15270070

Gruß Kai
 
Hallo iceman,

leider kann ich deine winzip-Datei nicht entpacken.
Wäre super, wenn du sie mir nochmal ungezipt schicken könntest.

Danke
 
Zurück
Oben