LMDaniel999
Level-1
- Beiträge
- 57
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Hallo!
Ich habe eine Frage zu TwinCat2:
In meinem Programm möchte ich eine FB-Instanz zyklisch aufrufen und von verschiedenen Stellen im Programm einzelne Variablen ändern.
Beim Siemens TIA Portal V13 geht das, deshalb würde ich das gerne hier auch so machen... Dabei habe ich allerdings Probleme.
Ich hab noch nicht viel mit TwinCat gemacht, deshalb komm ich nicht auf die Lösung.
So sieht meine Programmstruktur aus:
Ich habe einen FB erstellt, der eine Baugruppe einer Maschine steuert. Da diese Baugruppe mehrmals vorhanden ist, hab ich einen Array von FBs erstellt und rufe diese zyklisch ohne Werteübergabe auf. Ich habe also ein Array von gleichen Baugruppen, die ich über deren Index ansprechen kann.
Bsp:
Hier werden 3 Scales erstellt, die im Programm entsprechend ohne Variablenübergabe aufgerufen werden. Das habe ich hier aber nicht gepostet.
Das möchte ich machen:
Nun möchte ich an verschiedenen Stellen im Programm einzelne dieser Baugruppen steuern. Teilweise auch mehrere gleichzeitig.
Daher dachte ich, dass ich einfach die Inputs über die Programmstruktur im ST steuern kann.
Bsp:
bSetNewMaterial ist dabei eine Boolsche Eingangsvariable im FB. Ich möchte so die verschiedenen Maschinenteile ansprechen, indem ich nur "iCounter" ändere.
Das Problem hab ich:
TwinCat meldet beim Kompilieren die Fehlermeldung 4020, was wohl daran liegt, dass ich so nicht auf die Variable zugreifen darf und kann.
Soweit ich das nun verstanden habe, muss ich hier den FB neu aufrufen und ihm den Wert dann übergeben.
Ich dachte mir das aber so, dass ich im Programm an verschiedenen Stellen einzelne Variablen ändern kann und die Bausteine zyklich aufgerufen werden.
Mein Kopf sagt mir nun, dass wenn ich die Bausteine nun jedesmal beim Schreiben aufrufen muss, dann wird der auch jedesmal ausgeführt.
Aber das möchte ich eigentlich nur einmal pro Zyklus.
Hab ich irgendwo ein Denkfehler?
Muss ich eine Variablentabelle erstellen und diese dann direkt in der Main mit den Eingängen verknüpfen? Diese könnte ich dann ja genau so beschreiben.
Dann geht mir aber der Vorteil des "Kopierens" des FBs verloren.
Ich habe an einer anderen Stelle einen FB 20 mal, weil ich 20 gleiche Maschinenteile habe. Für diese kann ich das gleiche Programm und die gleiche Visu nutzen, wenn ich nur jedesmal den Index ändere. Das macht das ganze einfach skalierbar.
Wie setze ich sowas nun um?
Vielen Dank für die Hilfe!
Ich habe eine Frage zu TwinCat2:
In meinem Programm möchte ich eine FB-Instanz zyklisch aufrufen und von verschiedenen Stellen im Programm einzelne Variablen ändern.
Beim Siemens TIA Portal V13 geht das, deshalb würde ich das gerne hier auch so machen... Dabei habe ich allerdings Probleme.
Ich hab noch nicht viel mit TwinCat gemacht, deshalb komm ich nicht auf die Lösung.
So sieht meine Programmstruktur aus:
Ich habe einen FB erstellt, der eine Baugruppe einer Maschine steuert. Da diese Baugruppe mehrmals vorhanden ist, hab ich einen Array von FBs erstellt und rufe diese zyklisch ohne Werteübergabe auf. Ich habe also ein Array von gleichen Baugruppen, die ich über deren Index ansprechen kann.
Bsp:
Code:
fbScale : ARRAY[1..3] OF ScaleSystem;
Das möchte ich machen:
Nun möchte ich an verschiedenen Stellen im Programm einzelne dieser Baugruppen steuern. Teilweise auch mehrere gleichzeitig.
Daher dachte ich, dass ich einfach die Inputs über die Programmstruktur im ST steuern kann.
Bsp:
Code:
MAIN.fbScale[iCounter].bSetNewMaterial := TRUE ;
Das Problem hab ich:
TwinCat meldet beim Kompilieren die Fehlermeldung 4020, was wohl daran liegt, dass ich so nicht auf die Variable zugreifen darf und kann.
Soweit ich das nun verstanden habe, muss ich hier den FB neu aufrufen und ihm den Wert dann übergeben.
Ich dachte mir das aber so, dass ich im Programm an verschiedenen Stellen einzelne Variablen ändern kann und die Bausteine zyklich aufgerufen werden.
Mein Kopf sagt mir nun, dass wenn ich die Bausteine nun jedesmal beim Schreiben aufrufen muss, dann wird der auch jedesmal ausgeführt.
Aber das möchte ich eigentlich nur einmal pro Zyklus.
Hab ich irgendwo ein Denkfehler?
Muss ich eine Variablentabelle erstellen und diese dann direkt in der Main mit den Eingängen verknüpfen? Diese könnte ich dann ja genau so beschreiben.
Dann geht mir aber der Vorteil des "Kopierens" des FBs verloren.
Ich habe an einer anderen Stelle einen FB 20 mal, weil ich 20 gleiche Maschinenteile habe. Für diese kann ich das gleiche Programm und die gleiche Visu nutzen, wenn ich nur jedesmal den Index ändere. Das macht das ganze einfach skalierbar.
Wie setze ich sowas nun um?
Vielen Dank für die Hilfe!