Hab für meine Hausautomation schon einiges in Codesys vorbereitet.
Gestern hab ich dann die Hardware eingegeben, DI Karten DO´s usw. und Ihnen Namen gegeben, DI01 DI02 usw..so wie schon zuvor im Programm.
Allerdings werden meine Ausgänge die ich im CFC habe nicht auf die Hardware ausgegeben, da wie ich denke die Variablen nicht richtig deklariert sind. Hab ja erst programmiert und dann erst die Hardware eingestellt und benannt.
Wie kann ich nachträglich, wenn möglich automatisch Variablen zuweisen??
will nicht alles von vorn machen
Danke, Danke
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
wenn du erst programmiert hast, dann wollte CoDeSys auch sicherlich
deine Variablen z.B. DI01 im Programm anlegen.
Nehmen wir mal an du hast alles im PLC_PRG programmiert.
Dann hast du im Deklarationsteil (oberes Fenster) wahrscheinlich z.B.
einen Eintrag in der Form
Dieser Eintrag legt eine lokale Variable an, die nur im PLC_PRG
bekannt ist.
Wenn du nun eine Steuerungskonfiguration anlegst und in der Steuerungskonfiguration
den Signalen "Namen" gibst, dann legst du damit globale Variablen an die in allen
Bausteinen bekannt sind.
In deinem Fall hast du vermutlich in der Konfiguration z.B. eine globale Variable
DI01 angelegt (die auch mit dem Eingangssignal verbunden ist)
und zusätzlich hast du eine gleichnamige, lokale Variable in deinem Baustein.
Dein Baustein hat also nun zwei Variable mit gleichem Namen aber unterschiedlichem
Gültigkeitsbereich.
In diesem Fall benutzt dein Baustein seine lokale Varibale.
Die Lösung für dein Problem ist wahrscheinlich die doppelten Deklarationen deiner lokalen
Variablen in den Bausteinen zu löschen, damit deinem Baustein nur noch die globale
Variable aus der Steuerungskonfiguration bekannt ist.
Hinweis auf zusätzliche mögliche Fehlerquelle:
Die Anzahl der konfigurierten Klemmen muss genau zu den tatsächlich gesteckten passen.
Es finktioniert also nicht z.B. eine zusätzliche Klemme zu stecken die erst später
konfiguriert wird da man sie z.Zt. noch nicht benutzt.
Uwe
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2008-04-28
Originally created by: PM
Um den Aufwand geringer zu halten, könntest du die lokalen Variablen auch direkt auf die physikalischen Adressen legen, d.h. zum Beispiel:
DO1 AT %QX0.0 : BOOL;
oder
DI1 AT %IX0.0 : BOOL;
Allerdings sind sie dann immer noch lokal, d.h. du kannst sie nur in dem Baustein verwenden, in welchem sie deklariert sind (z.B. PLC_PRG). Wenn du sie schon global deklariert hast, kannst du dasselbe mit der AT-Deklaration machen...
Gruß, Peter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
Hab für meine Hausautomation schon einiges in Codesys vorbereitet.
Gestern hab ich dann die Hardware eingegeben, DI Karten DO´s usw. und Ihnen Namen gegeben, DI01 DI02 usw..so wie schon zuvor im Programm.
Allerdings werden meine Ausgänge die ich im CFC habe nicht auf die Hardware ausgegeben, da wie ich denke die Variablen nicht richtig deklariert sind. Hab ja erst programmiert und dann erst die Hardware eingestellt und benannt.
Wie kann ich nachträglich, wenn möglich automatisch Variablen zuweisen??
will nicht alles von vorn machen
Danke, Danke
Hallo stisi,
wenn du erst programmiert hast, dann wollte CoDeSys auch sicherlich
deine Variablen z.B. DI01 im Programm anlegen.
Nehmen wir mal an du hast alles im PLC_PRG programmiert.
Dann hast du im Deklarationsteil (oberes Fenster) wahrscheinlich z.B.
einen Eintrag in der Form
Dieser Eintrag legt eine lokale Variable an, die nur im PLC_PRG
bekannt ist.
Wenn du nun eine Steuerungskonfiguration anlegst und in der Steuerungskonfiguration
den Signalen "Namen" gibst, dann legst du damit globale Variablen an die in allen
Bausteinen bekannt sind.
In deinem Fall hast du vermutlich in der Konfiguration z.B. eine globale Variable
DI01 angelegt (die auch mit dem Eingangssignal verbunden ist)
und zusätzlich hast du eine gleichnamige, lokale Variable in deinem Baustein.
Dein Baustein hat also nun zwei Variable mit gleichem Namen aber unterschiedlichem
Gültigkeitsbereich.
In diesem Fall benutzt dein Baustein seine lokale Varibale.
Die Lösung für dein Problem ist wahrscheinlich die doppelten Deklarationen deiner lokalen
Variablen in den Bausteinen zu löschen, damit deinem Baustein nur noch die globale
Variable aus der Steuerungskonfiguration bekannt ist.
Hinweis auf zusätzliche mögliche Fehlerquelle:
Die Anzahl der konfigurierten Klemmen muss genau zu den tatsächlich gesteckten passen.
Es finktioniert also nicht z.B. eine zusätzliche Klemme zu stecken die erst später
konfiguriert wird da man sie z.Zt. noch nicht benutzt.
Uwe
Originally created by: PM
Um den Aufwand geringer zu halten, könntest du die lokalen Variablen auch direkt auf die physikalischen Adressen legen, d.h. zum Beispiel:
DO1 AT %QX0.0 : BOOL;
oder
DI1 AT %IX0.0 : BOOL;
Allerdings sind sie dann immer noch lokal, d.h. du kannst sie nur in dem Baustein verwenden, in welchem sie deklariert sind (z.B. PLC_PRG). Wenn du sie schon global deklariert hast, kannst du dasselbe mit der AT-Deklaration machen...
Gruß, Peter