' schrieb:Also ich habe an
Position 1: KL2134
Position 2: KL2134
Position 3: KL1418
Das Example von dir hat bereits unmodifiziert funkioniert für die Digital-Inputs.
Dh beim Vi "TCP read bytes" hab ich als Parameter
Index group: xF020
index offset: 0
length: 0
Dh obwohl das 1418 an Position 3 ist hat es indexoffset = 0. Wenn ich indexoffset verändere (1 oder 2), dann funktioniert das Einlesen nicht mehr.
Oder beginnt die Nummerierung von hinten aus, also von rechts? Dann würde es ja wieder passen.
Ich habe jetzt mal versucht einfach in das Example das "TCP Write bytes" mit reinzuhängen, aber jetzt frage ich mich wie du auf den Wert von indexgroup gekommen bist? Der ist F020 beim readbytes.vi.
Ich hab bisher nur gefunden, dass in der Twincat-Demoversion auch eine ADS-Info ist für die einzelnen Module.
Dort steht zb für Kanal 1: Port: 300, IGrp: 0x13001, IOffs: 0x0, Len: 1
Dort steht zb für Kanal 2: Port: 300, IGrp: 0x13001, IOffs: 0x1, Len: 1
Dort steht zb für Kanal 3: Port: 300, IGrp: 0x13001, IOffs: 0x2, Len: 1
Dort steht zb für Kanal 4: Port: 300, IGrp: 0x13001, IOffs: 0x3, Len: 1
Aber wie kann ich jetzt diese Info weiterverwenden?
Also den F020 habe ich irgendwo tief in der Beckhoff Dokumentation zum ADS Protokol gefunden. Ist zwar nicht wirklich eine Protokoldokumentation aber gewisse Informationen darin sind durchaus hilfreich.
Scheint ja dass Input und Output in zwei unterschiedliche Indexgruppen gemappt werden. Deshalb wohl auch der Offset von 0 da alle Inputmodule hintereinancer gemappt werden und alle Outputmodule ebenfalls aber in eine andere Indexgruppe.
In Deinem Fall denke ich mal dass die Twincat Info schon mal sehr hilfreich sein könnte. Der Port ist deutlich da; 300 ist hier für alle IOs und auch die meisten anderen Informationen. Der wird ja intern in den VIs default gebraucht. Gewisse Konfigurationsparameter sind dagegen soviel ich mich erinnern kann unter Port 100 erreichbar. Aber auf automatische Konfiguration und dergleichen habe ich bewusst verzichtet da das ohne ausführliche Dokumentation des Protokolls praktisch nicht zu tun ist und es ist ja nicht die Idee um ein komplettes Twincat in LabVIEW bauen zu können sondern eben nur die IO Daten lesen und schrieben zu können.
IGrp klingt verdammt verdächtig nach einer Abkürzung für Index Group
Also würde ich das mal versuchen. Kannst ja zur Verifikation mal schauen was IGrp für das KL1418 in Twincat ist. So irgendwas wie 0xF020 schiene mir hier logisch. ^_^ IOffset ist deutlich der index offset. Wie sich das jetzt verhält respektive zu Bits/Bytes oder gar Words kann ich hier mal schwierig sagen.
Meine ADS VIs funktionieren grundsätzlich im Byte Modus. Darum herum müsste man gegebenenfalls noch VIs schreiben um spezifische logische Bits oder eventuel 16 Bit analoge Werte anzusprechen.
Rolf Kalbermatter