-> Hier kostenlos registrieren
Hallo miteinander,
im Rahmen einer internen Umstellung muss ich einen 9-stelligen numerischen String mit einem 20-stelligen ersetzen.
Vorher wurde dieser über Profibus als DINT an die nachfolgende Maschine übergeben.
Nun habe ich nicht mehr genügend Bytes zur Verfügung und habe mir was zusammengebastelt um diesen einzeln zu übergeben.
Leider kann ich das aktuell nicht an der betroffenen Anlage testen und zur Umstellung habe ich nur ein Zeitfenster von 2 Stunden.
Daher meine Frage an euch, habt ihr Vorschläge um das entweder anders zu lösen, oder zur Verbesserung des Bausteins?
Das einzige was mir Bauchschmerzen bereitet ist das XOR für #iCom/#oCom, bzw. der Sprung, um sicherzustellen, dass der Empfänger bereit ist für den nächsten Byte.
Grüße
pzky
Der Empfangsbaustein ist nahezu identisch, nur dass DbIn und DbOut getauscht sind, bzw. oCom vor dem Loop auf 0 gesetzt wird.
im Rahmen einer internen Umstellung muss ich einen 9-stelligen numerischen String mit einem 20-stelligen ersetzen.
Vorher wurde dieser über Profibus als DINT an die nachfolgende Maschine übergeben.
Nun habe ich nicht mehr genügend Bytes zur Verfügung und habe mir was zusammengebastelt um diesen einzeln zu übergeben.
Leider kann ich das aktuell nicht an der betroffenen Anlage testen und zur Umstellung habe ich nur ein Zeitfenster von 2 Stunden.
Daher meine Frage an euch, habt ihr Vorschläge um das entweder anders zu lösen, oder zur Verbesserung des Bausteins?
Das einzige was mir Bauchschmerzen bereitet ist das XOR für #iCom/#oCom, bzw. der Sprung, um sicherzustellen, dass der Empfänger bereit ist für den nächsten Byte.
Grüße
pzky
Code:
VAR_INPUT
iStart Bool // Übertragungsstart
iDbOut DB_Block // DB in welchen gespeichert werden soll
iDbOutAdr Int // Startadresse innerhalb des DB
iDbIn DB_Block // DB aus welchem gelesen werden soll
iDbInAdre Int // Startadresse innerhalb des DB
iLength Int // Länge des Strings (ohne Header)
iCom Bool // Kommunikationsaustauschsbit Senden
VAR_OUTPUT
oCom Bool // Kommunikationsaustauschsbit Empfang
VAR_STATIC
sStartTrig Bool // Flankenmerker Start
sComTrig Bool // Flankenmerker Com-Toggle
loop_DbInAdr Int // Zähler für Adresse
loop_count Int // Zähler für die Loopanzahl
_____________________________________________________________________________________
A #iStart
FP #sStartTrig
JCN wrt
L #iDbInAdr
+ -1
T #loop_DbInAdr
SET
= #oCom
L #iLength
anf: T #loop_count
xor: X #iCom
X #oCom
JCN xor
L #loop_DbInAdr
+ 1
T #loop_DbInAdr
SLD 3
OPN #iDbIn
LAR1
L DBB [AR1,P#0.0]
L #iDbOutAdr
SLD 3
OPN #iDbOut
LAR1
TAK
T DBB [AR1,P#0.0]
FP #sComTrig
X #oCom
= #oCom
CLR
= #sComTrig
L #loop_count
LOOP anf
wrt: NOP 0
Der Empfangsbaustein ist nahezu identisch, nur dass DbIn und DbOut getauscht sind, bzw. oCom vor dem Loop auf 0 gesetzt wird.