Step 5 serielle Kommunikation über DP/DP Koppler

matziane

Level-1
Beiträge
120
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
um Daten von einer zur anderen Steuerung (S5 <-> S5, S5<-> S7) zu übermitteln, haben wir diese mittels DP/DP Kopplern miteinander verbunden.
Das läuft auch alles.
Nun möchte ich ziemlich große Datenbereiche über diese Kommunikationsschnittstelle übermitteln.
Bei dieser Schnittstelle stehen mit insgesamt 64 Bit zur Verfügung, 32 Bit für die Daten und nochmal 32 Bit für die Kommunikation.

Habt ihr Ideen, fertige Programmteile bzw. Quellen wo ich fertige Programmteile bekommen kann die diese Aufgaben erledigen.

Ich würde mich jetzt bei machen und einen Baustein programmieren der diese Aufgabe erfüllt.

Ich danke euch schonmal im voraus.
 
Liegt ein Schreibfehler vor?
64 BIT sind ja nicht gerade ein großer Datenbereich.
Die würdest Du mit 4 Datenworten (oder 2 Doppelworten) erschlagen haben.

Du suchst sicher eine Art "blockmove" für S5, richtig?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, da liegt kein Schreibfehler vor, es sind 64bit.
Eine Art Blockmove für S5 wäre schon ein guter Ansatz.

Die Daten die da übertragen werden sollen, sind aber sehr groß (40 Datenworte werden es wohl werden) und die größe könnte dazu auch noch variabel werden.
Also müssen diese 40 Datenworte durch diese 2 Datenworte nach und nach durchgeschoben werden.
Idealerweise mit einer Prüfung was gerade geschoben wird bzw wurde und ob es korrekt angekommen ist.
 
Zuletzt bearbeitet:
... da wirst du dir wohl selber "etwas Nettes" zusammen-programmieren müssen.
Auf S7-Seite ist das, wenn du hier SCL einsetzt, sicher nicht so problematisch - aber auf der S5-Seite mit nur AWL sehe ich schon ein wenig bedingte Adressierung und so weiter ...

Gruß
Larry
 
Hallo matziane,

man könnte das so lösen (nur mal schnell ins unreine geschrieben):
Code:
A DB 1 

UN E 0.0 // Freigabe vom Empfänger
SPB =M003

UN E 0.1 // Quittierung vom Empfänger
R M 0.0 // Flankenmerker
UN E 0.1 // Quittierung vom Empfänger
O M 0.0 // Flankenmerker
SPB =M001
L DW 1 // Wortzähler
ADD KF +1
T DW 1
U M 0.1 // feste 1
S M 0.0 // Flankenmerker
M001: NOP 0
B DW 1 // Nr. zu sendendes Datenwort
L DW 0 // indirekt laden
T AW 2 // auf Ausgangswort schreiben

L DW 1 // Wortzähler
L DW 2 // Anzahl zu sendender Worte
<=F // Alle Worte gesendet?
SPB =M002 // Nein, dann weiter
M003:L KF +0
T DW 1 // Wortzähler löschen
M002: NOP 0

Das soll nur nen Denkanstoss sein.
Da gibt es noch einiges zu beachten wie z.Bsp. Handshake, variable Telegrammlänge etc...
Vllt. hilfts Dir

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich weiß jetzt nicht genau. normal kann der dp-koppler doch viel mehr daten übertragen. oder geht das auf der s5-seite nicht?

schau dir das mal auf meiner hp an. hab ich mal irgendwann geschrieben für den datenaustausch zwischen s5 und s7 über digitale io's. aber vom prinzip ist dp/dp ja nix anderes

http://lischis-home.dyndns.org/php4/download.php?pfad=files/SPS/S7_Bausteine/&datei=io_digit.zip
http://lischis-home.dyndns.org/files/SPS/S7_Bausteine/io_digit.zip.txt
 
ich weiß jetzt nicht genau. normal kann der dp-koppler doch viel mehr daten übertragen. oder geht das auf der s5-seite nicht?
Doch das geht auch auf S5-Seite, aber ich habe es so verstanden, dass matziane auf eine bestehende Kopplung aufsetzen muss.
Und dann bist Du bei der S5 ja auch noch bei den E/As ziemlich eingeschränkt: jeweils 256 Byte P-, Q-, IM3- und IM4-Peripherie.
Wobei sich IM3 und IM4 nicht mit einfachen Befehlen ansprechen lassen.

Grüße
Gebs
 
Guten Morgen,
im großen und ganzen bin ich durch mit dem Baustein und wollte mal sehen was ihr davon haltet.

Habe nur noch einen doofen Fehler, weiss aber nicht wo es her kommt.
Lasse mir S5 seitig die rausgehenden Daten in einen DB umladen und schaue mir das ganze in einem Bildbaustein an, sieht alles sehr sauber aus.
S7 seitig habe ich einen ähnlichen Baustein geschrieben der mit der S5 kommuniziert und lasse dort auch die kommenden Daten in einem DB zuordnen.
Gelegentlich kommen die Daten nicht sauber an, sende aktuell 18 Datendoppelworte und hier und da wird mal eins zweimal gesendet oder S7 seitig nicht korrekt zugeordnet.

Wie gesagt, weiss noch nicht an wem es liegt, das finde ich aber noch oder ihr stolpert im S5 Programm über einen Fehler.

Code:
[1	S5 Seriell
NAME:	S5PUT   	
BEZ :	DBIP	B
BEZ :	STIP	EBY
BEZ :	DLG 	EBY
BEZ :	DSNI	EBY
BEZ :	DSSI	EBY
BEZ :	DATI	ED
BEZ :	DSNO	ABY
BEZ :	DSSO	ABY
BEZ :	DATA	AD
BEZ :	STAT	EW
	
	***	
]
[2	Eingangssignale umladen
	B	=DBIP
	L	=STIP
	T	MB 200
	L	=DLG 
	T	MB 201
	L	=DSNI
	T	MB 202
	L	=DSSI
	T	MB 203
	L	=STAT
	T	MW 220
	***	
]
[3	Flankenauswertungen
	U	M  203.1	;Signal Daten empfangen
	UN	M  220.0	;Flankenhilfsmerker
	=	M  215.0	;Flankenmerker
	U	M  203.1	;Signal Daten empfangen
	=	M  220.0	;Flankenhilfsmerker
	
	U	M  203.2	;Signal Länge empfangen
	UN	M  220.4	;Flankenhilfsmerker
	=	M  215.2	;Flankenmerker
	U	M  203.2	;Signal Länge empfangen
	=	M  220.4	;Flankenhilfsmerker
	
	U	M  203.6	;Signal Reset
	UN	M  220.1	;Flankenhilfsmerker
	=	M  215.1	;Flankenmerker
	U	M  203.6	;Signal Reset
	=	M  220.1	;Flankenhilfsmerker
	***	
]
[4	Funktion zurücksetzen
	O	M  205.5
	O	M  215.1
	R	M  220.2
	R	M  220.3
	R	M  205.2
	R	M  205.1
	R	M  205.5
	***	
]
[5	Gesamtlänge senden
	U	M  220.2
	SPB	=ENDE
	L	MB 200	;Startposition im DB
	T	MB 221	;global zwischenspeichern
	L	MB 201	;Datenlänge laden
	T	MB 204	;und übergeben
	UN	M  215.2	;Daten wurden noch nicht empfangen
	S	M  205.2	;Signal für neue Daten übergeben
	L	MB 202	;zurück gemeldeter Datenlänge
	L	MB 204	;gesendeter Datenlänge
	!=F	
	U	M  215.2	;Datenlänge wurde korrekt empfangen
	S	M  220.2	;global merken
	R	M  205.2
ENDE:	***	
]
[6	Daten senden aktivieren
	U	M  215.0	;Daten wurden empfangen
	U	M  220.2	;Länge wurde korrekt gesendet
	O		;global merken
	U	M  215.2
	U	M  220.2
	=	M  220.3
	***	
]
[7	Daten senden
	UN	M  220.3	;Daten senden inaktiv
	SPB	=ENDE
	L	KF +0	;Pointer nullen
	T	MW 222
	R	M  205.2	;Bit neue Datenlänge gesendet rücksetzen
	L	MB 204	;Nummer des zu sendenden Datensatzes
	L	MB 201	;Datengesamtlänge
	!=F	
	O	M  205.5	;Senden beendet
	SPB	=NEU 
	SPA	=DSCH
NEU :	L	KF +0	;mit 0 überschreiben für erstes senden
	T	MB 204	;Nummer des zu sendenden Datensatzes
DSCH:	L	MB 221	;Startposition im DB
	T	MW 222	;zwischenspeichern
	B	MW 222	;als Zeigers laden
	L	DD 0	;Datenwort des Zeigers laden
	T	MD 210	;Inhalt des Datenworts zwischensp
	UN	M  203.3	;Kopieren ist aktiviert
	SPB	=X-BL	;Quellinhalt nullen uberspringen
	L	KF +0
	B	MW 222	;Zeiger auf Quelle setzen
	T	DD 0	;Inhalt schreiben
X-BL:	L	MB 221	;Startposition im DB
	ADD	KF +2	;um 2 erhöhen
	T	MB 221	;global speichern
	L	MB 204	;Datensatznummer
	ADD	KF +1	;um 1 erhöhen
	T	MB 204	;ausgeben
	L	MB 201	;Datenlänge
	L	MB 204	;Nummer des zu sendenden Datensatzes
	!=F	
	S	M  205.5	;Senden beendet
	U	M  220.3	;Daten senden aktiv
	=	M  205.1	;neue Daten liegen vor melden
ENDE:	***	
]
[8	Informationen senden
	L	MB 204	;zwischengespeiecherte Datensatznummer
	T	=DSNO	;ausgeben
	L	MB 205	;zwischengespeicherte Signale
	T	=DSSO	;ausgeben
	L	MD 210	;zwischengespeicherte Daten
	T	=DATA	;ausgeben
	L	MW 220	;global zu merkende Daten
	T	=STAT	;ausgeben
	BE	
]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das so lösen, dass ich in einen Teil des DP-Bereichs den Wert schreibe und in einen anderen eine Nummer des Messwertes.
Bei 40 Werten braucht man da:
16Bit für DW-Wert (oder 32Bit für DD) und 6 Bit für die "Adresse".
Wenn es auch einen DP- Eingangsbereich gibt (das steht da zumindest nicht) könnte man auch eine Quittierung machen indem der Kommunikationspartner nach erfolgreichem einlesen die gerade eingelesen Nummer zurückschreibt. Dann weiss die Sende CPU dass nun der nächste Wert kommt.
Eigentlich einfach und sicher, habe sowas schon mal bei einer 135er und einer 95U gemacht (vor 15 Jahren) mittels E/A's allerdings.
 
So läufts ja ansich.
Habe 8 Bit für die Datensatznummer.
Noch mal 8 Bit für digitale signale wie Handshake usw.
Und weitere 32Bit für die Daten

Im DP/DP Koppler ist es so als Eingangs und Ausgangsbereich konfiguriert.
Also kann ich von der anderen Steuerung aus über die gleiche Adresse Datensatznummer und digitale signale zurückmelden.
 
Zurück
Oben