TIA Byte Swap elegant

Matze001

Level-3
Beiträge
2.814
Reaktionspunkte
573
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

damit es nicht langweilig wird mal wieder ein Thema.

Ich hab ne 1200er, nen Roboter (Kuka) und nen TP900 Comfort.

Damit 1200er und Kuka kommunizieren können, muss ich die Bytes swappen (Wer es zugelassen hat das die scheiße nicht genormt ist gehört erschossen!).
Das ganze mache ich zur Zeit mit SWAP also z.B:

Code:
Kommunikation_Kuka_WORD1 := SWAP(Kommunikation_Kuka_WORD1)

Hat den Nachteil, dass ich die Variable immer schreiben muss, da sie sonst in jedem Zyklus umgedreht wird. Ziemlich unschön.
Außerdem habe ich den Nachteil, dass ich die Variablen auf meinem Comfort Panel anzeige, und das HMI holt die Variablen nicht immer am Zyklus Anfang oder Ende, sondern einfach mitten in den Zyklus rein.
Das heißt ich sehe ab und zu ein geswapptes Signal und mal nicht.

Somit suche ich jetzt nach einer eleganten Lösung.

Eine Möglichkeit (Die ich aber nicht schön finde) wäre die Struktur in meinem DB 2 mal abzulegen. Einmal für die SPS zum lesen und schreiben, und einmal geswapped für den Roboter.
Hat den Nachteil, dass ich die doppelte Datenhaltung habe, und in jedem Zyklus die ganze Struktur durch die Gegend schaufel und Swappe.

Also um die Frage zu vollenden... wie geht das ganze elegant?

Grüße

Marcel
 
Mich wundert es gerade etwas das du zwischen Kuka Roboter und ner Siemens Sps die Bytes tauschen musst.

Bei S7-300 + Profibus + Krc2/4 hatte ich das Problem bisher nicht.

Werde aber bald auch eine S7-1200 + Profinet + Krc4 haben.

Bin also schon mal vorgewarnt ...
 
@Roger : Das wäre ja viel zu einfach gewesen ;) Man denkt manchmal etwas... kompliziert...

@van: Die Profibus und Profinet CP bei den "alten" sind Siemens CPs, das könnte die Ursache sein.
Ich müsste mal forschen, bin aber der Meinung das man selbst dort drehen musste (Kann ich aber gern rausfinden wenn Du magst).
Vermutlich ist es dir nie aufgefallen, weil Du nie über ein Byte raus gekommen bist?

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Roger : Das wäre ja viel zu einfach gewesen ;) Man denkt manchmal etwas... kompliziert...

@van: Die Profibus und Profinet CP bei den "alten" sind Siemens CPs, das könnte die Ursache sein.
Ich müsste mal forschen, bin aber der Meinung das man selbst dort drehen musste (Kann ich aber gern rausfinden wenn Du magst).
Vermutlich ist es dir nie aufgefallen, weil Du nie über ein Byte raus gekommen bist?

Grüße

Marcel

Wem sagst du das... Ich mache solche Kommunikationen immer in eine FB und übergebe diesem die HardwareID. Mit getio und setio kannst die Kommunikation danach schön bereitstellen.
 
@van: Die Profibus und Profinet CP bei den "alten" sind Siemens CPs, das könnte die Ursache sein.
Ich müsste mal forschen, bin aber der Meinung das man selbst dort drehen musste (Kann ich aber gern rausfinden wenn Du magst).
Vermutlich ist es dir nie aufgefallen, weil Du nie über ein Byte raus gekommen bist?

Die KRC4 hat ja einen Beckhoff Koppler für Profbus, Profinet ist eine reine Softwareoption ?!
Die Byte Reihenfolge dürfte aber von der KSS kommen.

Wirst aber recht haben, bin nie über ein Byte raus gekommen


Das ganze mache ich zur Zeit mit SWAP also z.B:
Code:
Kommunikation_Kuka_WORD1 := SWAP(Kommunikation_Kuka_WORD1)

Es gibt auch noch
Code:
[LIST]
[*]READ_LITTLE (Daten in Little-Endian-Format lesen) 
[*]WRITE_LITTLE (Daten in Little-Endian-Format schreiben) 
[*]READ_BIG (Daten in Big-Endian-Format lesen) 
[*]WRITE_BIG (Daten in Big-Endian-Format schreiben) 
[/LIST]
https://support.industry.siemens.co...ionId=73837491339&TopicId=71168278667&Lang=de
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Arosafahrer,

danke für die Info! Das ist mir bekannt.

Es gibt dabei nur 2 Probleme:

1. Byte Swap funktioniert nicht für den Profinet Slave (Frag mich mal einer warum - Stand WorkVisual 3.1.4 Build 9 -> ggf. ist es mit der aktuellen jetzt möglich) (Ich kann zwar bei der E/A Verschaltung die Bits passend verschalten, aber siehe Punkt 2)
2. Wenn ich statt nem Kuka mal nen Fanuc habe, stehe ich vor dem selben Problem.

Grüße

Marcel
 
Zu Fanuc kann ich nichts sagen.
Wir haben die Kuka Funktion nicht genutzt, daher kann ich kein Feedback zum Erfolg der Funktion geben. Wir haben es im SPS Program geswapped, fanden wir auch irgendwie übersichtlicher.
 
Hallo Leute,

so noch eine Rückmeldung! Ich hatte eh schon einen FB der die Automatik Extern Schnittstelle bedient hat.
Dort habe ich immer die Schnittstelle via INOUT übergeben.
Das ganze habe ich nun wie folgt geändert:

In dem FB wird die komplette Kommunikation gehandhabt -> Werte aus dem DB an den PN-Teilnehmer schreiben und lesen / ggf. vorher swappen.
Ich übergebe dem FB "nur" noch den DB in dem die Variablen liegen, und die Hardware-ID des PN-Teilnehmers (sehr geil bei der 1200er, vollsymbolisch! - Da steht dann sowas wie "Roboter".512_Digitale_Ein_und_Ausgänge)

Die Auto Extern Schnittstelle wird nun weiterhin Bausteinintern abgewickelt, greift aber direkt auf die nun bekannten Variablen zu.

Wenn nun ein Fanuc-Roboter kommen sollte wird das gleiche für Fanuc gebaut, und aus sicht des SPS-Programms habe ich die gleiche Schnittstelle.

Schöne Sache sowas!

Grüße

Marcel
 
Zurück
Oben