Darstellung Visuobjekt auf einen IN_OUT klappt nicht

gnassel
2013-01-10
2013-01-21
  • gnassel - 2013-01-10

    Hallo, ich hoffe jemand kann mir bei folgenden Phänomen weiterhelfen:

    Steuerung WAGO 880, CoDeDys 2.3.9.28, WebVisu

    Ich habe einen Funktionsblock (fb_RWA) erstellt, der u.A. einen IN_OUT "Eingang" (s_Bezeichnung) für einen STRING(8) hat.

    Hier soll später die Meßstelle vom Kunden selbst beschriftet werden können.

    Dazu habe ich ein Visualisierungselement (Templatebaustein) erstellt, der u.A. ein schreibbares Textfeld enthällt.
    Die Verknüpfung zum Baustein erfolgt durch:
    $fb_RWA$.s_Bezeichnung

    In der "richtigen" Visualisierung werden mehrere dieser kleinen Visualisierungen mit der Instanz des jeweiligen FB verknüpft:
    Unter Platzhalter: z.B. PLC_RWA.RWA4
    (RWA4 ist hier die Bezeichnung des FB)

    Unter CoDeSys kann ich nun über die Visualisierung die Variable die am IN_OUT Eingang hängt sehen und ändern.

    Das klappt aus der Webvisu leider nicht. Hier wird nur %s dargestellt.


    Wenn ich aus der Visu heraus auf eine IN, OUT oder INTERNE Variable zugreife, funktioniert es. Nur IN_OUT mag er nicht.

    Mein Workaround: Die Visu arbeitet mit einer internen Variable des FB und ich kopiere mir die Daten bei Änderung auf/von dem IN_OUT Eingang. Das ist aber leider recht aufwendig.

    Ich hoffe mir konnte jemand bei der Fehlerbeschreibung folgen. Wäre Weltklasse, wenn ich hier eine einfach Lösung hätte.

    Besten Dank

     
  • WAGO - 2013-01-21

    Hallo gnassel,

    bei IN- und OUT-Variablen stellt der Funktionsbaustein bei jeder Instanz dementsprechenden Speicher für den Inhalt der Variablen zur Verfügung, auf den Du dann per Webvisualisierung zugreifst. IN_OUT-Variablen werden nur als Pointer durchgereicht, d.h. der Wert der Variablen steht nur in einer Speicherstelle, es gibt keine lokale Kopie. Dementsprechend ist der Wert der Variablen, nicht der Wert zum Zeitpunkt des Durchlaufs durch einen Funktionsbaustein sondern der Wert nach dem Ende eines Zyklusses.
    Wird der Wert z.B. von drei nacheinandergeschalteten FBs nacheinander verändert (z.B. jeweils Inkrementierung um 1), dann würde auf der WebVisu dennoch bei allen Anzeigefeldern der gleiche Wert stehen.
    Die von Dir gewünschte Funktionalität erhälts Du tatsächlich durch das Kopieren des Wertes im FB von der IN_OUT-Variablen auf eine interne Variable. Der Aufwand ist aber überschaubar.

    Bei weiteren Fragen kannst Du uns auch gerne unter den unten genannten Adressdaten direkt kontaktieren.

     

Log in to post a comment.