Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: serielle Kommunikation über DP/DP Koppler

  1. #1
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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.
    Zitieren Zitieren serielle Kommunikation über DP/DP Koppler  

  2. #2
    Registriert seit
    16.05.2007
    Ort
    im Stahlwerk...
    Beiträge
    1.178
    Danke
    120
    Erhielt 429 Danke für 236 Beiträge

    Standard

    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?
    Nihil est in cpu, quod non fuerit in intellectu" - Nichts ist in der CPU, was nicht (zuvor) im Verstand war.

  3. #3
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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.
    Geändert von matziane (14.08.2013 um 08:18 Uhr)

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    ... 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

  5. #5
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    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

  6. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    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/...i=io_digit.zip
    http://lischis-home.dyndns.org/files..._digit.zip.txt
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  7. #7
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    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

  8. #8
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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	
    ]

  9. #9
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    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.

  10. #10
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 18.06.2013, 21:07
  2. Serielle Kommunikation, ReceivedString als Transition?
    Von Monty87 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 08.02.2013, 07:21
  3. Serielle Kommunikation
    Von Thomate im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.10.2012, 16:30
  4. Antworten: 5
    Letzter Beitrag: 10.05.2011, 10:15
  5. Antworten: 2
    Letzter Beitrag: 27.09.2005, 09:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •