Nach meinen Anfängen mit Codesys (Wago), versuche ich die, für die Praxis, günstigste Arbeitsweise herauszufinden.
Adressierung der Module:
Um auf die EA-Klemmen zuzugreifen, muss eine Zuweisung zu den Variablen erfolgen. Jetzt hat man die Wahl, die Zugriffsvariable "lokal" oder "global" zu deklarieren, was für mich folgende Fragen aufwirft
alle Zuweisungen "global" durchführen und somit von allen POE Zugriff zu haben, oder
nur diejenigen "global", die auch übergreifend benötigt werden und den Rest "lokal"
Weiters gibt es die Möglichkeit in der Steuerungskonfiguration symbolische Namen zu vergeben; diese sind über die Eingabehilfe einfügbar und stellen eine (System)Variablendeklaration "global" dar. Das dürfte imho einfacher sein, da die Adressen bei Änderungen automatisch neu berechnet werden.
Was mir aufgefallen ist, dass die so generierten Variablen in der Ressourcenansicht "Globale Variablen" nicht sichtbar sind - vlt. mach ich auch nur was falsch.
Normierung/Skalierung von Analogwerten
Momentan skaliere ich die Prozesswerte der analogen E/A-Karten innerhalb den jeweiligen Programmen; wäre es vlt. "günstiger" hierfür eine Task zu generieren, die diese Umwandlungen für die gesamte AS übernimmt und in globale Variablen "umwandelt" oder macht man das wirklich immer innerhalb des Teilprogrammes?
Leider bin ich aus Sichtung von existenten Programmen und Programmbeispielen nicht wirklich in diesen Fragen vorwärtsgekommen.
Ich könnte mir vorstellen, dass ich durch Vorbelastung mit anderen System u.U. etwas umständlich mit Codesys arbeite.
Vielen Dank im Voraus.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Zitat:
Was mir aufgefallen ist, dass die so generierten Variablen in der Ressourcenansicht "Globale Variablen" nicht sichtbar sind - vlt. mach ich auch nur was falsch.
Das habe ich auch gemerkt. Wenn du aber im Programm diese globalen Variablen mittel Eingabehilfe F2 eingeben willst, dann werden sie als globale Variablen in der Liste angeboten. Ist also nur eine Unschönheit, aber kein Problem.
Zitat:
Momentan skaliere ich die Prozesswerte der analogen E/A-Karten innerhalb den jeweiligen Programmen; wäre es vlt. "günstiger" hierfür eine Task zu generieren, die diese Umwandlungen für die gesamte AS übernimmt und in globale Variablen "umwandelt" oder macht man das wirklich immer innerhalb des Teilprogrammes?
Die eigentlichen analogen E/A´s werden in der Steuerungskonfiguration deklariert (global). Über eine weitere Variable (lokal oder global, je nach Bedarf) machst du dann in einem deparaten Programm (muss nicht eine eigene Task sein) die Umwandlung. Die funktioniert wunderbar (und mit nur einer Zeile Code) mit den Funktionen der OSCAT Lib (AIN, AOUT, ...)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Danke, dann bin ich mit der Beobachtung wenigstens nicht alleine
dietere hat geschrieben:
Die eigentlichen analogen E/A´s werden in der Steuerungskonfiguration deklariert (global). Über eine weitere Variable (lokal oder global, je nach Bedarf) machst du dann in einem deparaten Programm (muss nicht eine eigene Task sein) die Umwandlung. Die funktioniert wunderbar (und mit nur einer Zeile Code) mit den Funktionen der OSCAT Lib (AIN, AOUT, ...)
Die OSCAT.lib hab ich (tolles Teil ) .
Dass dürfte bedeuten, es macht in der Tat Sinn, alle E/A-Variablen-Werte nach Skalierung wiederum globalen Variablen zuzuordnen.
Wie siehts mit Ressourcenverbrauch lokaler vs. globaler Deklaration aus - spare ich Speicherplatz, wenn ich nur wirlich global benötigte Variablen als solche definiere?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo erstmal!
Nach meinen Anfängen mit Codesys (Wago), versuche ich die, für die Praxis, günstigste Arbeitsweise herauszufinden.
Adressierung der Module:
Um auf die EA-Klemmen zuzugreifen, muss eine Zuweisung zu den Variablen erfolgen. Jetzt hat man die Wahl, die Zugriffsvariable "lokal" oder "global" zu deklarieren, was für mich folgende Fragen aufwirft
Weiters gibt es die Möglichkeit in der Steuerungskonfiguration symbolische Namen zu vergeben; diese sind über die Eingabehilfe einfügbar und stellen eine (System)Variablendeklaration "global" dar. Das dürfte imho einfacher sein, da die Adressen bei Änderungen automatisch neu berechnet werden.
Was mir aufgefallen ist, dass die so generierten Variablen in der Ressourcenansicht "Globale Variablen" nicht sichtbar sind - vlt. mach ich auch nur was falsch.
Normierung/Skalierung von Analogwerten
Momentan skaliere ich die Prozesswerte der analogen E/A-Karten innerhalb den jeweiligen Programmen; wäre es vlt. "günstiger" hierfür eine Task zu generieren, die diese Umwandlungen für die gesamte AS übernimmt und in globale Variablen "umwandelt" oder macht man das wirklich immer innerhalb des Teilprogrammes?
Leider bin ich aus Sichtung von existenten Programmen und Programmbeispielen nicht wirklich in diesen Fragen vorwärtsgekommen.
Ich könnte mir vorstellen, dass ich durch Vorbelastung mit anderen System u.U. etwas umständlich mit Codesys arbeite.
Vielen Dank im Voraus.
Hallo,
Das habe ich auch gemerkt. Wenn du aber im Programm diese globalen Variablen mittel Eingabehilfe F2 eingeben willst, dann werden sie als globale Variablen in der Liste angeboten. Ist also nur eine Unschönheit, aber kein Problem.
Die eigentlichen analogen E/A´s werden in der Steuerungskonfiguration deklariert (global). Über eine weitere Variable (lokal oder global, je nach Bedarf) machst du dann in einem deparaten Programm (muss nicht eine eigene Task sein) die Umwandlung. Die funktioniert wunderbar (und mit nur einer Zeile Code) mit den Funktionen der OSCAT Lib (AIN, AOUT, ...)
@dietere
Danke, dann bin ich mit der Beobachtung wenigstens nicht alleine
Die OSCAT.lib hab ich (tolles Teil ) .
Dass dürfte bedeuten, es macht in der Tat Sinn, alle E/A-Variablen-Werte nach Skalierung wiederum globalen Variablen zuzuordnen.
Wie siehts mit Ressourcenverbrauch lokaler vs. globaler Deklaration aus - spare ich Speicherplatz, wenn ich nur wirlich global benötigte Variablen als solche definiere?