bin neu hier und habe ein paar allgemeine Fragen. Ich schreibe derzeit meine Diplomarbeit, die die Portierungsaufgabe von einem S7 SPS300-Proggie auf eine Lenkelektronik (incl. CodeSys-Unterstützung) umfasst. Jetzt zeichnen sich mir erste Probleme ab:
Gibt es für Codesys so etwas wie eine Operationsliste? Bei Siemens SIMANTIC gibt es ein kleines Heftchen, wo die Befehle inkl. Manipulation des Statuswortes (gibt's das überhaupt bei Code?) übersichtlich in Tabellen aufgelistet sind.
Wenn dies in irgendwelchen IEC-Standards festgelegt ist, reicht ein verweis darauf.
Bei meinem Programm wäre es hilfreich, mit einer Struktur zu arbeiten, da eine Vielzahl von Variablen deklariert werden müssen. Im Handbuch steht nun, dies solle man in der Registerkarte "Datentypen" erleidigen. Habe ich gemacht, die Struktur ist auch existent, allerdings kann ich weder auf Struktur noch Komponenten zugreifen, obwolh sie im gesamten Projekt gültig sein sollten. Versuche ich, in einem FB darauf zuzugreifen, öffnet sich die Eingabehilfe und verlangt eine (schon existente) Deklaration. Dies funktioniert allerdings dann, wenn ich die Variablen der Struktur global definiere.
Auch erscheint die Struktur und seine Variablen nicht in der Eingabehilfe unter "Operand", ist das normal?
SIMANTIC von Siemens gibt, sofern man eine Variable benutzt, hinter der Operation stets noch den Kommentar zur Variablen aus. Halte ich insgesamt für eine nützliche Funktion zur Überprüfung, gibt's sowas auch?
Muss noch erwähnen, dass ich bisher nie in die Steuerung eingeloggt war, und simuliert habe. Nimmt das irgendeinen Einfluss (von den Realwerten mal abgesehen)?
Wäre fein, wenn mir einer die Fragen beantworten könnte.
Gruss Andy aka blacki
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-01-12
Originally created by: joohrte
Zu2. So wie es scheint hast Du woll die Stucktur angelegt.
Aber vergessen einer Variablen mit der Strucktur zu Deklarieren.
Z.B.
TYPE HMI :
STRUCT
AX1Enable:BOOL:=FALSE;AX2Enable:BOOL:=FALSE;
END_STRUCT
END_TYPE
unter Globale Variablen
VAR_GLOBAL
HMI:HMI;
END_VAR
um Fragen zu beantworten wäre es Gut immer ein Projekt beizufügen
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-01-12
Originally created by: blackenslaver666
Danke dir für die Antwort.
Im Grunde hast du Recht, ich habe diese Deklaration auch so im Original-Programm gefunden. Allerdings funktioniert es so, wie du beschrieben hast, auch nicht. Ich füge mal das Projekt an, evt. schaust du mal drüber...
Ziel: Im FB18 möchte ich auf eine Variable der Struktur zugreifen. Bisher öffnet sich dabei stets die Eingabehilfe, weil "Variable nicht deklariert".
Hast du auf die anderen Fragen noch Antworten? Gerade Punkt 1) ist wichtig für mich.
Gruss Andy
Ps: Projekt dann bitte nicht speichern. Da die Version schon alt ist, kann ich es nicht öffnen. Hatte dies schon einmal mit V2.3.5 versucht.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-01-12
Originally created by: joohrte
Deine Variablen wurden nicht angezeigt da deine Stuctur nicht Fehlerfrei war. Den Typ "S5Time" gibt es nur bei Siemens bei IEC ist Time zu verwenden. Beispiel im Anhang.
zum Punkt 1. Dokumentation
Ich finde das Codesys Handbuch nicht schlecht.
Im Anhang A findest du eine Kurzbeschreibung der Befehle.
Um Codesys Kennenzulernen ist das Dokument
"Erste Schritte mit CoDeSys V23.pdf" nicht schleucht.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-01-12
Originally created by: blackenslaver666
Dank dir!
Kann dein File zwar nicht öffnen, jetzt funktioniert es aber.
Das mit dem Anhang kenne ich natürlich, allerdings habe ich den Befehl "LD" dort nicht gefunden.
Weisst du, ob es bei Code eine Art "Statuswort" gibt? Siemens hat dies in seine CPU integriert, und die meisten Operationen im Original-Proggie laufen über das Bit "Verknüpfungsergebnis (VKE)" des Statuswortes.
Gruss Andy
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-01-13
Originally created by: joohrte
Ich kenne mich nicht so sehr mit Programmierung in AWL aus.
Meines wissen nach gibt es kein Statusword.
( wird aber auch nicht benötigt )
Um ein Überblick der Befehle in AWL zu haben würde ich in der CodeSyskilfe (F1)
Nach „Modifikatoren“ suchen. Da sind die AWL Befehle beschrieben.
Ich Benutze die Programmierung in AWL überhaupt nicht und halte diese für unübersichtlich.
Meine Empfehlung ist für Bitprogrammierung eine Grafische Sprache zu wählen.
Z.B. FUP,KOP oder CFC.
Zur Programmierung von Berechnungen oder bedingt Bearbeitung würde ich in Strukturierter Text (ST) Programmieren.
Zum Punkt Variablendokumentation.
Du solltest dir Angewöhnen der Variablen einen aussagekräftigen Nahmen zu geben.
z.B.
schlechtes Beispiel :
LD N E1 ( Tor oben )
AND E2 ( Taste heben )
ST A1 ( Tor Heben )
Besser währe :
( Ansteuerung von Tor Heben )
LD N E_TorOben
AND E_TasteHeben
ST A_TorHeben
Normalerweise sollte dieses dann auch noch in Englisch sein.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-01-15
Originally created by: blackenslaver666
Ja, danke! Finde mich immer besser zurecht.
Programmiere bisher tatsächlich meist in ST, und die anderen Sprachen werde ich sicher auch nutzen.
Manches muss man einfach ausprobieren. Zuletzt habe ich herausgefunden, dass es in ST keine Sprungbefehle gibt.
Gruss Andy
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-01-16
Originally created by: blackenslaver666
Mir ist noch eine Frage gestern gekommen:
Für was werden eigentlich Instanzen benötigt?
Im SIMANTIC ist es so, dass jedem FB automatisch eine Instanz zugeordnet wird bei dessen Erstellung. Beim parametrierten FB-Aufruf werden die Werte in die Instanz geschrieben/gelesen, die ihrerseits mit dem FB interagiert. Was ist nun der Zweck in Code, da ich bei FB-Aufruf ja Eingangs-/Ausgangsparameter einfach deklarieren, lesen und schreiben kann?
Gruss Andy
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-02-08
Originally created by: blackenslaver666
Keiner eine Antwort auf die Frage:
blackenslaver666 hat geschrieben:
Für was werden eigentlich Instanzen benötigt?
Ich habe mittlerweile noch ein Problem. Ich muss einen Taktgeber generieren, der ein periodisches Signal, am besten mit variabler Vorgabe von TIMEHIGH bzw. -LOW, erzeugt. Dummerweise steht mir die UTIL.BIB nicht zur Verfügung. Realisieren wollte ich dies mit dem Impulsgeber und der Einschaltverzögerung. Der FB soll dabei ein unendliches Signal generieren, so dass ich eine while-Schleife benutzen wollte.
Irgendwelche Anregungen?
Gruss Andy
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-02-08
Originally created by: joohrte
Für was werden eigentlich Instanzen benötigt?
In der Instanz liegen die Lokalen Variablen vom Baustein.
Möchte man ein Baustein öfters aufrufen braucht jeder Aufruf seine eigene Variablen. Also unterschiedliche Instanzen.
-Dummerweise steht mir die UTIL.LIB nicht zur Verfügung
Warum glaubst du das du die UTIL.LIB nicht verwenden kannst.
Die Util.Lib setzt auf Standard befehle auf und kann somit in allen Steuerungen verwendet werden. Außerdem kann die Lib. Geöffnet werden so das Du den Baustein auch aus der Lib. in dein Projekt Kopieren könntest.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Mit der Instanzierung einer Variablen/eines Bausteines wird der entsprechend benötigte Speicherplatz reserviert; die Daten werden dann in diesem Speichzerplatz abgelegt.
Bei der S7 muss auch, nachdem der FB definiert wurde, ein symbolischer Name mit einem Datentyp (nämlich der FB-Nummer) angegeben werden, d.h. hier wird auch eine Instanz gebildet, die dann den Speicherplatz für das reale Programm repräsentiert.
Gruss
Uwe
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-02-16
Originally created by: Michael_Kowatsch
Hi Blackenslaver666,
schick mir deine Mailadresse und ich sende dir einen FB/LIB mit flexiblem Takt.
Originally created by: blackenslaver666
Hallo Leute,
bin neu hier und habe ein paar allgemeine Fragen. Ich schreibe derzeit meine Diplomarbeit, die die Portierungsaufgabe von einem S7 SPS300-Proggie auf eine Lenkelektronik (incl. CodeSys-Unterstützung) umfasst. Jetzt zeichnen sich mir erste Probleme ab:
Wenn dies in irgendwelchen IEC-Standards festgelegt ist, reicht ein verweis darauf.
Bei meinem Programm wäre es hilfreich, mit einer Struktur zu arbeiten, da eine Vielzahl von Variablen deklariert werden müssen. Im Handbuch steht nun, dies solle man in der Registerkarte "Datentypen" erleidigen. Habe ich gemacht, die Struktur ist auch existent, allerdings kann ich weder auf Struktur noch Komponenten zugreifen, obwolh sie im gesamten Projekt gültig sein sollten. Versuche ich, in einem FB darauf zuzugreifen, öffnet sich die Eingabehilfe und verlangt eine (schon existente) Deklaration. Dies funktioniert allerdings dann, wenn ich die Variablen der Struktur global definiere.
Auch erscheint die Struktur und seine Variablen nicht in der Eingabehilfe unter "Operand", ist das normal?
SIMANTIC von Siemens gibt, sofern man eine Variable benutzt, hinter der Operation stets noch den Kommentar zur Variablen aus. Halte ich insgesamt für eine nützliche Funktion zur Überprüfung, gibt's sowas auch?
Muss noch erwähnen, dass ich bisher nie in die Steuerung eingeloggt war, und simuliert habe. Nimmt das irgendeinen Einfluss (von den Realwerten mal abgesehen)?
Wäre fein, wenn mir einer die Fragen beantworten könnte.
Gruss Andy aka blacki
Originally created by: joohrte
Zu2. So wie es scheint hast Du woll die Stucktur angelegt.
Aber vergessen einer Variablen mit der Strucktur zu Deklarieren.
Z.B.
TYPE HMI :
STRUCT
END_STRUCT
END_TYPE
unter Globale Variablen
VAR_GLOBAL
END_VAR
um Fragen zu beantworten wäre es Gut immer ein Projekt beizufügen
Originally created by: blackenslaver666
Danke dir für die Antwort.
Im Grunde hast du Recht, ich habe diese Deklaration auch so im Original-Programm gefunden. Allerdings funktioniert es so, wie du beschrieben hast, auch nicht. Ich füge mal das Projekt an, evt. schaust du mal drüber...
Ziel: Im FB18 möchte ich auf eine Variable der Struktur zugreifen. Bisher öffnet sich dabei stets die Eingabehilfe, weil "Variable nicht deklariert".
Hast du auf die anderen Fragen noch Antworten? Gerade Punkt 1) ist wichtig für mich.
Gruss Andy
Ps: Projekt dann bitte nicht speichern. Da die Version schon alt ist, kann ich es nicht öffnen. Hatte dies schon einmal mit V2.3.5 versucht.
Projekt.rar [7.09 KiB]
Originally created by: joohrte
Deine Variablen wurden nicht angezeigt da deine Stuctur nicht Fehlerfrei war. Den Typ "S5Time" gibt es nur bei Siemens bei IEC ist Time zu verwenden. Beispiel im Anhang.
zum Punkt 1. Dokumentation
Ich finde das Codesys Handbuch nicht schlecht.
Im Anhang A findest du eine Kurzbeschreibung der Befehle.
Um Codesys Kennenzulernen ist das Dokument
"Erste Schritte mit CoDeSys V23.pdf" nicht schleucht.
Die Dateien werden normalerweise mit Instaliert.
CoDeSys_Hub neu.rar [3.86 KiB]
Originally created by: blackenslaver666
Dank dir!
Kann dein File zwar nicht öffnen, jetzt funktioniert es aber.
Das mit dem Anhang kenne ich natürlich, allerdings habe ich den Befehl "LD" dort nicht gefunden.
Weisst du, ob es bei Code eine Art "Statuswort" gibt? Siemens hat dies in seine CPU integriert, und die meisten Operationen im Original-Proggie laufen über das Bit "Verknüpfungsergebnis (VKE)" des Statuswortes.
Gruss Andy
Originally created by: joohrte
Ich kenne mich nicht so sehr mit Programmierung in AWL aus.
Meines wissen nach gibt es kein Statusword.
( wird aber auch nicht benötigt )
Um ein Überblick der Befehle in AWL zu haben würde ich in der CodeSyskilfe (F1)
Nach „Modifikatoren“ suchen. Da sind die AWL Befehle beschrieben.
Ich Benutze die Programmierung in AWL überhaupt nicht und halte diese für unübersichtlich.
Meine Empfehlung ist für Bitprogrammierung eine Grafische Sprache zu wählen.
Z.B. FUP,KOP oder CFC.
Zur Programmierung von Berechnungen oder bedingt Bearbeitung würde ich in Strukturierter Text (ST) Programmieren.
Zum Punkt Variablendokumentation.
Du solltest dir Angewöhnen der Variablen einen aussagekräftigen Nahmen zu geben.
z.B.
schlechtes Beispiel :
LD N E1 ( Tor oben )
AND E2 ( Taste heben )
ST A1 ( Tor Heben )
Besser währe :
( Ansteuerung von Tor Heben )
LD N E_TorOben
AND E_TasteHeben
ST A_TorHeben
Normalerweise sollte dieses dann auch noch in Englisch sein.
Originally created by: blackenslaver666
Ja, danke! Finde mich immer besser zurecht.
Programmiere bisher tatsächlich meist in ST, und die anderen Sprachen werde ich sicher auch nutzen.
Manches muss man einfach ausprobieren. Zuletzt habe ich herausgefunden, dass es in ST keine Sprungbefehle gibt.
Gruss Andy
Originally created by: blackenslaver666
Mir ist noch eine Frage gestern gekommen:
Für was werden eigentlich Instanzen benötigt?
Im SIMANTIC ist es so, dass jedem FB automatisch eine Instanz zugeordnet wird bei dessen Erstellung. Beim parametrierten FB-Aufruf werden die Werte in die Instanz geschrieben/gelesen, die ihrerseits mit dem FB interagiert. Was ist nun der Zweck in Code, da ich bei FB-Aufruf ja Eingangs-/Ausgangsparameter einfach deklarieren, lesen und schreiben kann?
Gruss Andy
Originally created by: blackenslaver666
Keiner eine Antwort auf die Frage:
Ich habe mittlerweile noch ein Problem. Ich muss einen Taktgeber generieren, der ein periodisches Signal, am besten mit variabler Vorgabe von TIMEHIGH bzw. -LOW, erzeugt. Dummerweise steht mir die UTIL.BIB nicht zur Verfügung. Realisieren wollte ich dies mit dem Impulsgeber und der Einschaltverzögerung. Der FB soll dabei ein unendliches Signal generieren, so dass ich eine while-Schleife benutzen wollte.
Irgendwelche Anregungen?
Gruss Andy
Originally created by: joohrte
In der Instanz liegen die Lokalen Variablen vom Baustein.
Möchte man ein Baustein öfters aufrufen braucht jeder Aufruf seine eigene Variablen. Also unterschiedliche Instanzen.
-Dummerweise steht mir die UTIL.LIB nicht zur Verfügung
Warum glaubst du das du die UTIL.LIB nicht verwenden kannst.
Die Util.Lib setzt auf Standard befehle auf und kann somit in allen Steuerungen verwendet werden. Außerdem kann die Lib. Geöffnet werden so das Du den Baustein auch aus der Lib. in dein Projekt Kopieren könntest.
Mit der Instanzierung einer Variablen/eines Bausteines wird der entsprechend benötigte Speicherplatz reserviert; die Daten werden dann in diesem Speichzerplatz abgelegt.
Bei der S7 muss auch, nachdem der FB definiert wurde, ein symbolischer Name mit einem Datentyp (nämlich der FB-Nummer) angegeben werden, d.h. hier wird auch eine Instanz gebildet, die dann den Speicherplatz für das reale Programm repräsentiert.
Gruss
Uwe
Originally created by: Michael_Kowatsch
Hi Blackenslaver666,
schick mir deine Mailadresse und ich sende dir einen FB/LIB mit flexiblem Takt.
Gruß Michael
e kowatsch@office-dateien.de e