Ich hab ein Problem mit CoDeSys und Excel. Es handelt sich hierbei um WAGO CoDeSys 2.3 und Excel 2007.
Excel soll aus CoDeSys Werte von Variablen lesen. Gekoppelt sind sie mittels einer DDE-Verbindung – das funktioniert auch schon teilweise.
Genauer gesagt handelt es sich um eine JobListe mit 120 Jobs. Ein Job ist ein Struct aus verschiedenen Variablen.
Jetzt habe ich eine Excel-Tabelle angelegt, in der ich für jeden Job und seine Variablen ein paar Zeilen spendiert hab.
Die Formel zum auslesen steht direkt in jeder Zeile.
Beispiel:
=CoDeSys|'C:\test\CoDeSys\Modbus_Register_Access_FINAL.pro'!'PLC_PRG.JobList[3].ASCII_MODE'
Hier wird auf das dritte Element der JobListe zugegriffen und die Variable "ASCII_MODE" ausgelesen - das funktioniert tadellos jedes Mal.
Wenn wir allerdings die weiteren Jobs auslesen wollen, funktionieren manche, manche jedoch nicht. Excel zeigt in diesen Feldern "#NV" an.
Job 1 bis 4 wird ausgelesen, 5 bis 9 nicht, 10 bis 43 geht, 44 bis 99 nicht, der Rest geht.
Dieses Muster tritt immer auf.
Was ich schon probiert habe:
Fehler in Excel? --> Indize ausgetauscht in den "fehlerhaften" Zellen (z.B. Job 5 durch Job 3) - Job 3 wird dann korrekt eingelesen.
Fehler in JobListe? --> Komplette JobListe mit Werten von einem korrekt eingelesenen Job befüllt - geht trotzdem nicht.
Mit DDESpy die Verbindung abgehört: Die Anfragen gehen von Excel korrekt raus, bei den "korrekten" Jobs antwortet CoDeSys mit Daten, bei den fehlerhaften nur mit einem ACK.
Ich erstelle in CoDeSys eine Symboldatei, lasse CoDeSys allerdings im Simulationsmodus laufen (lass nur kurz ohne Sim. laufen, damit die Datei erstellt wird).
Auch den extra DDE-Server lasse ich nicht laufen - es funktioniert ja trotzdem bei manchen Jobs.
Woran kann es liegen, dass die immergleichen Jobs - egal wie die Jobs aussehen - nicht eingelesen werden?
Liebe Grüße
Doenercola
Edit: Ich habs auch mal auf der realen Steuerung versucht - die Daten in den korrekten Jobs werden eingelesen, leider kommt bei den anderen Jobs der selbe Fehler.
E2: Habs jetzt provisorisch mit einem Workaround gelöst - die fehlerhaften Jobs ausgelassen, indem der Arrayindex z.B. bei 4 auf 10 gesetzt wurde
Hallo zusammen!
Ich hab ein Problem mit CoDeSys und Excel. Es handelt sich hierbei um WAGO CoDeSys 2.3 und Excel 2007.
Excel soll aus CoDeSys Werte von Variablen lesen. Gekoppelt sind sie mittels einer DDE-Verbindung – das funktioniert auch schon teilweise.
Genauer gesagt handelt es sich um eine JobListe mit 120 Jobs. Ein Job ist ein Struct aus verschiedenen Variablen.
Jetzt habe ich eine Excel-Tabelle angelegt, in der ich für jeden Job und seine Variablen ein paar Zeilen spendiert hab.
Die Formel zum auslesen steht direkt in jeder Zeile.
Beispiel:
=CoDeSys|'C:\test\CoDeSys\Modbus_Register_Access_FINAL.pro'!'PLC_PRG.JobList[3].ASCII_MODE'
Hier wird auf das dritte Element der JobListe zugegriffen und die Variable "ASCII_MODE" ausgelesen - das funktioniert tadellos jedes Mal.
Wenn wir allerdings die weiteren Jobs auslesen wollen, funktionieren manche, manche jedoch nicht. Excel zeigt in diesen Feldern "#NV" an.
Job 1 bis 4 wird ausgelesen, 5 bis 9 nicht, 10 bis 43 geht, 44 bis 99 nicht, der Rest geht.
Dieses Muster tritt immer auf.
Was ich schon probiert habe:
Fehler in Excel? --> Indize ausgetauscht in den "fehlerhaften" Zellen (z.B. Job 5 durch Job 3) - Job 3 wird dann korrekt eingelesen.
Fehler in JobListe? --> Komplette JobListe mit Werten von einem korrekt eingelesenen Job befüllt - geht trotzdem nicht.
Mit DDESpy die Verbindung abgehört: Die Anfragen gehen von Excel korrekt raus, bei den "korrekten" Jobs antwortet CoDeSys mit Daten, bei den fehlerhaften nur mit einem ACK.
Ich erstelle in CoDeSys eine Symboldatei, lasse CoDeSys allerdings im Simulationsmodus laufen (lass nur kurz ohne Sim. laufen, damit die Datei erstellt wird).
Auch den extra DDE-Server lasse ich nicht laufen - es funktioniert ja trotzdem bei manchen Jobs.
Woran kann es liegen, dass die immergleichen Jobs - egal wie die Jobs aussehen - nicht eingelesen werden?
Liebe Grüße
Doenercola
Edit: Ich habs auch mal auf der realen Steuerung versucht - die Daten in den korrekten Jobs werden eingelesen, leider kommt bei den anderen Jobs der selbe Fehler.
E2: Habs jetzt provisorisch mit einem Workaround gelöst - die fehlerhaften Jobs ausgelassen, indem der Arrayindex z.B. bei 4 auf 10 gesetzt wurde
Related
Talk.ru: 3