Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: TIA V12 - Auf Variablen einer Multiinstanz zugreifen

  1. #1
    Registriert seit
    05.10.2006
    Beiträge
    324
    Danke
    11
    Erhielt 8 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,


    Ist es unter TIA nicht mehr möglich z.B. beim Aufruf von TON als Multiinstanz die IN Variablen der Multiinstanz direkt zu verwenden?


    Code:
    
    IF #IN_BO_Clock THEN
          S_FB_EVZ.IN := true;
    ELSE
          S_FB_EVZ.IN := false;
    END_IF;
    
    
    S_FB_EVZ(IN:=   ,  PT=T#1S,  ET:=    , Q=#Out_BO_CLK_ON );

    Hier bekomme ich den Fehler, dass der IN Parameter beim Aufruf nicht leer sein darf. Wie soll man das dann anstellen? Ist es unter TIA nicht mehr erlaubt??


    Und wie kann ich beim Aufruf der Multiinstanz die Parameter (In, PT, ET ,Q) automatisch einsetzen lassen? Oder muss ich die immer händisch an den Aufruf schreiben?


    Danke euch für eure Hilfe!


    Grüße Pico
    Zitieren Zitieren TIA V12 - Auf Variablen einer Multiinstanz zugreifen  

  2. #2
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Erste frage bin ich mir grad nicht sicher. Aber ich dachte man muss in scl nicht zwingend die fb Schnittstelle belegen. Zweite frage. Rechtsklick auf Aufruf und Parameterliste erweitern wählen.

    Mit freundlichen Grüßen René

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Das ist ja wirklich seltsam. Bei eigenen FB kann ich einzelne Parameter weglassen, nur bei TON müssen die Parameter IN und PT immer vorhanden sein.
    Vielleicht ist das irgendwie von den 1200/1500er zur 300/400er rübergewandert, denn dort funktionieren die Timer anders als bei den 300/400ern. Das Verhalten ist nicht nur bei SCL sondern auch in FUP so.

    Aber wenn Siemens das so will kann man eh nichts daran ändern. Vielleicht ist beim nächsten Servicepack auch wieder alles ganz anders.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Hallo,
    mal so am Rande gefragt :
    Will TIA (im Unterschied zu Classic) das tatsächlich so haben :
    Code:
    S_FB_EVZ(IN:=   ,  PT=T#1S,  ET:=    , Q=#Out_BO_CLK_ON );
    im SCL von Classic wäre das ja so verwendet worden :
    Code:
    S_FB_EVZ(IN:=   ,  PT=T#1S);
    myET :=S_FB_EVZ.ET ;
    Out_BO_CLK_ON := S_FB_EVZ.Q;
    ... das würde mich hier mal interessieren ...

    Gruß
    Larry

  5. #5
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    'nabend

    bei 1200 und 1500 ist vieles anders. Und nach meinen bisherigen Vergleichen verhalten sich die 1500 so wie die 1200, eben anders als 300 oder 400. Obwohl es ja auch schon zwischen diesen spitzfindige Unterschiede gab und gibt.
    Der 1200 kann man ja unter den Rock schauen. Der 1500 leider nicht, aber dem Verhalten ist es auch dort so. Die IEC Timer und IEC Counter sind keine SFB mehr, sondern arbeiten so wie man es von den alten Zeiten und Zählern gewohnt war. Wenn man dort nach AWL umschaltet, dann zerfallen diese in einzelne AWL-Befehle. Bei der 1200 ist das auch so. .... ja ja, man kann nicht nach AWL umschalten, aber man kann das MC7plus (so nannte das der Typ auf der Messe) im Wireshark mitschneiden und Byteweise auseinander nehmen. Der Aufruf eines IEC-Timer ist kein Aufruf sondern eine Befehlsfolge in etwa wie

    Code:
    AUF dbarx, timer
    LADE in
    TON_TIME dbarx, pt
    ET_TIME et, dbarx
    LADE dbarx
    IST q
    Dabei ist dbarx eine dubiose Kombination aus DB und AR Register. Und das AUF macht in etwa das was bei einer 400 mit
    Code:
    AUF db-nummer-des-timers
    LAR1 offset-des-timers-im-db
    erreicht würde. Die Zahl dieser DB-AR Kombinationen scheint größer als 16 zu sein. Da der Wireshark aber keinen Bytewurst nach AWLplus Konverter enthält , sind diese Aussagen mit sehr großer Vorsicht zu genießen.

    Werden im Aufruf Teile nicht ausgefüllt, so fehlt auch der entsprechende AWLplus Befehl. NOPs werden aber keine eingestreut. Es gibt ja offiziell keinen Wechsel zu KOP.


    Statt einem "sinnlosen" IF mit einer unnötigen true/false Zuweisung kann man gleich
    Code:
    #S_FB_EVZ(IN:= #IN_BO_Clock,  PT:=T#1S, Q=>#Out_BO_CLK_ON );
    
    schreiben. Parameter die man nicht braucht lässt man weg. Und wenn man irgendwo später im Baustein auf das Q zugreifen will, dann geht dort:

    Code:
    #S_FB_EVZ(IN:= #IN_BO_Clock, PT:=T#1S );
    ...
    #Out_BO_CLK_ON := #S_FB_EVZ.Q
    
    In einem anderen Baustein kann man wenn man den Namen des DB kennt in dem die Multiinstanz versteckt ist dort sogar
    Code:
    #zeit := "dbname".so.und.so.S_FB_EVZ.ET;
    #q := "dbname".so.und.so.Q;
    
    verwenden. Das tolle dabei ist, dass auch dort die Zeit aktualisiert wird. Das ist um einiges besser als der Zugriff auf die Instanz eines SFB, da wurde nix aktualisiert.


    'n schön' Tach auch
    HB



Ähnliche Themen

  1. TIA Variablen Deklarieren TIA V12 SP1
    Von Rauchegger im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.09.2013, 22:02
  2. TIA V12 - FB mit Statische Variablen
    Von Loipe im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 11.03.2013, 21:48
  3. Auf interne PRG Variablen zugreifen
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 28.11.2012, 10:51
  4. Antworten: 9
    Letzter Beitrag: 21.01.2009, 21:10
  5. auf TEMP Variablen zugreifen
    Von serdnar im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 14:07

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •