Einausgaenge in Structur initialisieren

Achso, war vielleicht mein Fehler!

Du kannst die I/Os nicht schon in der Struktur deklarieren, sondern erst in in der jeweiligen Instanz. Da eine Struktur ja quasi ein Variablentyp ist.

Du musst wahrscheinlich eine Struktur nur für Eingänge und eine nur für Ausgänge erstellen und dann bei der Deklaration sagen:
Code:
VAR
  stMyInStruct AT%I*: stInStruct;
  stMyOutStruct AT%Q*: stOutStruct;
END_VAR

Sobald du in deinem Beispiel feste Adressen bei der Struct einträgst funktionierts. Ich glaube hier kann TwinCAT die indirekten Adressen nicht zuordnen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mir Dein Programm angeschaut.

Code:
TYPE T_CYL :
  STRUCT
    ndi_on AT %I*: BOOL;
    ndi_off AT %I*: BOOL;
    ndo_on AT %Q*: BOOL;
    ndo_off AT %Q*: BOOL;
    pb_on :BOOL;
    pb_off :BOOL;
  END_STRUCT
END_TYPE
Soweit ich weiß, darfst Du das mit %I* bzw. %Q* nicht direkt in der Struktur so schreiben, sondern erst, wenn Du die Struktur dann verwendest. Also in der Form:

Code:
TYPE T_CYL_IN :
  STRUCT
    ndi_on : BOOL;
    ndi_off : BOOL;
......

VAR
  Zylinder1 AT %I*: T_CYL_IN;
END_VAR

LG
 
Ich nutze aber auch noch nach Möglichkeit Funktionsbausteine, und deklariere dort über VAR_INPUT Variablen in der Form %I* bzw. VAR_OUTPUT in der Form %Q*. Jede Instanz legt nun Ein- bzw. Ausgangsvariablen an, die Du nach Belieben verknüpfen kannst. Der Vorteil von Strukturen liegt in der einfachen Erweiterbarkeit, ohne dass Bausteine nachträglich größer oder kleiner werden. In CFC kann das nämlich sehr ungut werden...

LG
 
Okay, habe ich dann auch gemacht.
Die Ein/Ausgaenge statt dessen in dem FB angelegt, mit AT%I*.
Compiled etc.
Dumme Frage, wo findet das "verknuepfen" statt?
Nicht im System Manager, oder? Dort tauchen dann die vars im aus dem FB nicht auf.
 
... aber hatte nicht rescanned, nachdem ich die IOs gaendert habe.
Vielen Dank, es geht zwar nicht ueber die structure, aber dann eben ueber die FB.
Da gehoeren sie ja im Grunde auch hin, das mit der Structure war eh nur ein work-around.
Das hilft mir fuers erste weiter. Vielen dank.
 
Bitte beachte auch meinen vorherigen Eintrag. Du kannst ja trotzdem Ein- und Ausgangsstrukturen machen, und die dann in den FB's verwenden. Dann bist Du bei Erweiterungen total flexibel und hast für zig Eingangsvariablen aber eben nur einen einzigen Eingangsanschluss. (denn Du nicht verschalten musst, dies geschieht ja dann über den Systemmanager)

LG
 
Zurück
Oben