forellengarten
Well-known member
- Beiträge
- 217
- Punkte Reaktionen
- 1
-> Hier kostenlos registrieren
Twincat2, Beckhoff CX9010.
Hallo,
ich komme irgendwie mit folgendem Problem nicht weiter: ich habe ein Programm (MAIN) mit vielen FB's etc. Einer dieser FB setzt ein paar global deklarierte Variablen, die im Systemmanager als Digitalaus.- und Eingang gesetzt/gelesen werden.
Nun ist erwünscht, daß dieser eine FB mit einer kürzeren Taskzykluszeit als MAIN arbeitet. Daher habe ich versucht, diesen FB in ein PRG umzuändern und ihm einen eigenen Task zuzuordnen. Zu Testzwecken anfangs die gleiche Taskzykluszeit wie das (MAIN)-Programm. Das seltsame ist, dass dieses neu entstandene PRG so nicht mehr funktioniert. D.h. es macht den Eindruck, als würde es von niemanden aufgerufen, da keine Variablen gesetzt/rückgesetzt werden bzw. sich die angeschlossene Hardware einfach undefinierbar verhält (ich verstehe die Basics und kann Tasks einfügen und mit dem Taskmanager umgehen).
An der Taskzykluszeit liegt es ziemlich sicher nicht (viele Versuche gemacht). Die FB-Software ist auch lediglich in ein PRG umgewandelt damit als Task ausführbar. Eines kommt mir jedoch seltsam vor: Im Systemmanager liegen die Variablen (logischerweise) noch immer unter MAIN.DigitalXYZ. Doch eigentlich werden die Variablen ja von meinem neuen PRG gesetzt und sollten daher unter PRG_DAS_FRUEHER_EIN_FB_WAR.variableXYZ stehen. Ich vermute dass hier der Fehler liegt. Weiß aber nicht wie ich ihn da korrigieren kann.
In einem weiteren Anlauf habe ich die globalen Variablen in das PRG_DAS_FRUEHER_EIN_FB_WAR reingepackt und nur lokal deklariert, und im Systemmanager neu Verknüpft. Das PRG_DAS_FRUEHER_EIN_FB_WAR wird als eigener Task ausgeführt. Und wieder - das Programm läuft nicht. Jetzt bin ich mit meinem Latein am Ende. Bin ich Online auf der Steuerung und aktiviere "Ablaufkontrolle", so ist keine Zeile in meinem Programm grün markiert.
Wo liegt hier nur der Hund begraben.
Hallo,
ich komme irgendwie mit folgendem Problem nicht weiter: ich habe ein Programm (MAIN) mit vielen FB's etc. Einer dieser FB setzt ein paar global deklarierte Variablen, die im Systemmanager als Digitalaus.- und Eingang gesetzt/gelesen werden.
Nun ist erwünscht, daß dieser eine FB mit einer kürzeren Taskzykluszeit als MAIN arbeitet. Daher habe ich versucht, diesen FB in ein PRG umzuändern und ihm einen eigenen Task zuzuordnen. Zu Testzwecken anfangs die gleiche Taskzykluszeit wie das (MAIN)-Programm. Das seltsame ist, dass dieses neu entstandene PRG so nicht mehr funktioniert. D.h. es macht den Eindruck, als würde es von niemanden aufgerufen, da keine Variablen gesetzt/rückgesetzt werden bzw. sich die angeschlossene Hardware einfach undefinierbar verhält (ich verstehe die Basics und kann Tasks einfügen und mit dem Taskmanager umgehen).
An der Taskzykluszeit liegt es ziemlich sicher nicht (viele Versuche gemacht). Die FB-Software ist auch lediglich in ein PRG umgewandelt damit als Task ausführbar. Eines kommt mir jedoch seltsam vor: Im Systemmanager liegen die Variablen (logischerweise) noch immer unter MAIN.DigitalXYZ. Doch eigentlich werden die Variablen ja von meinem neuen PRG gesetzt und sollten daher unter PRG_DAS_FRUEHER_EIN_FB_WAR.variableXYZ stehen. Ich vermute dass hier der Fehler liegt. Weiß aber nicht wie ich ihn da korrigieren kann.
In einem weiteren Anlauf habe ich die globalen Variablen in das PRG_DAS_FRUEHER_EIN_FB_WAR reingepackt und nur lokal deklariert, und im Systemmanager neu Verknüpft. Das PRG_DAS_FRUEHER_EIN_FB_WAR wird als eigener Task ausgeführt. Und wieder - das Programm läuft nicht. Jetzt bin ich mit meinem Latein am Ende. Bin ich Online auf der Steuerung und aktiviere "Ablaufkontrolle", so ist keine Zeile in meinem Programm grün markiert.
Wo liegt hier nur der Hund begraben.