Variablenwerte vom System Manager werden nicht/falsch zum PLC Control übernommen

ludi81

Level-1
Beiträge
66
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe ein komisches Problem.
Wenn ich meine Eingangs-, Ausgangs-, Profinet Controller (EL6631),.. mit dem PC mit einem Koppler (EK1100) verwende funktioniert alles einwandfrei. Wenn ich jetzt aber statt dem Koppler eine CX9020 gibt es ein komisches Verhalten.
Beim Profinet wurde eine Kamera von Keyence angeschlossen welche ein Array von Byte liefert. Dieses Array habe ich im System Manager zu meiner UINT Variable (inVar) vom meinem Program verknüpft (mit jeweils den richtigen Offsets). Anschließend habe ich die Konfiguration aktiviert und das Program hinaufgespeilt (genau das gleiche wie mit dem Koppler nur habe ich den Prozessor Typ umgestellt).

Jetzt das komische Problem:
Beim System Manager sehe ich z.b. dass das Byte array 0x00 0x00 0x00 0x02 hat --> die Variable (inVar) hat den Wert 2 -> so weit so gut. Aber wenn ich jetzt die Variable inVar im PLC Control ansehe hat es den Wert 131072 -> 0x00020000. Also so wie es aussieht wird hier irgendwie die Bytes ein wenig verschoben.
Wie kann das sein?

inVar ist eine globale Variable und ich habe diese zu meinem StandardTask (2ms) angehängt. Der SyncTask vom Profinet Controller hat 1ms. Kann das das Problem sein? Muss ich die inVar zu dem Profinet SyncTask verbinden?

Vielen Dank
Ludi
 
So wie das aussieht ist da nur Hi- und LoWord vertauscht. Hast du im Systemmanger bei deiner Variablenverknüpfung irgendwo die Option "Tausche LOWORD und HIWORD" ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ja es gibt das flag, aber das habe ich nicht gesetzt. Außerdem müsste dann doch auch bei der Online Ansicht von der Variable im TwinCAT System Manager der falsche Wert stehen. Dieser stimmt aber.

Kann es sein weil der PC eine x86 und das CX9020 eine ARM Architektur hat?
 
hallo, ich mappe das Byte Array (4 Bytes) direkt auf meine UINT Variable (das erste byte hat den offset 24, das zweite 16, das dritte 8 und das vierte o).

es wird ja beim System Manager richtig angezeigt, deshalb müsste das mapping ja stimmen. Im Program ist es anders.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ändert sich das bei dieser Einstellung in der Registry? "HKEY_CURRENT_USER\Software\Beckhoff\TwinCAT System Manager\On Startup" ein DWORD "SubVarOffsByOffs" mit dem Wert "1" bei Neustart vom SystemManager und Rescan vom SPS Projekt?
 
Hallo,

ich habe gestern noch mit Beckhoff telefoniert und folgende 2 Sachen berücksichtigt. Jetzt scheint alles zu funktionieren:
1) Byte Alignment: Twincat 2 am PC (x86) verwendet 1 Byte alignment, Ein ARM Prozessor mit Twincat 2 verwendet 4. Dadurch wurden die Daten glaube ich verschoben.
2) Im System Manager habe ich zuerst das Programm mit dem Koppler erzeugt. Das hat ja funktioniert. Danach habe ich einfach das Projekt unter einem neuen Namen abgespeichert und die Hardware neu gesetzt. Laut Beckhoff muss man unbedingt ein neues Projekt anfangen.

Vielen Dank für eure Hilfe
Ludi
 
Zurück
Oben