S7-200: Serielle Schnittstelle

reini69

Well-known member
Beiträge
59
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallihallo.

Ich möchte mit einer S7-200 über die serielle Schnittstelle Daten an einen PC übertragen. Ich hab mir dazu den Tip19 von Siemens runtergeladen (Daten an einen Drucker senden), dies entspricht so ziemlich dem, was ich machen will.
In diesem Tip wird die Funktion "XMT" verwendet. Hier ein Auszug daraus:

LD 0.1
EU
MOVB 16#31, VB109
XMT VB100, 0

Hier wird bei einer positiven Flanke am Eingang E0.1 ein Byte (VB 109) beschrieben und anschliessend ein Datenblock, beginnend bei VB100 über die Schnittstelle geschickt. Dieses Beispiel würde ich nun gerne verwenden und auf meine eigene Applikation anpassen. Aber woher weiß ich wie lange der zu sendende Datenblock sein darf oder muß ? Gibt es da eine Beschränkung auf eine bestimmte Anzahl von Zeichen (Bytes) oder wird ein einfach ein Block gesendet, bist keine sinnvollen Daten mehr gefunden werden.

Bin etwas ratlos im Moment.
 

Heinz

Well-known member
Beiträge
657
Punkte Reaktionen
11
Also mit der S7-200 ist es schon einige Zeit her, aber ich glaube es gibt dafür ein Systemadresse vorgesehen. oder es ist einer einer Tabelle hinterlegt.
Genauso wie das Start und Endezeichen.
 

hubert

Well-known member
Beiträge
376
Punkte Reaktionen
25
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo reini69.

Arbeite seit etwa 3Wochen mit der Schnittstellenkommunikation mit der S7-200 und habe auch schon einiges mit XMT und REV ausprobiert. Du kannst pro XMT Befehl maximal 255 Bytes senden. Die Anzahl der Zeichen die du senden möchtest sind in dem Startadressebyte hinterlegt. In dem Beispiel was du aus Tip 19 herauskopiert hast liegt die längenangabe der zu übertragenen in Byts in VB100. Mochtest zu z.B. "Hallo" an das Hyperterminal deines PC's senden, so muss du es folgendermaßen schreiben:

LD SM0.0 // VKE 1
MOVB 6,VB100 // Zu übertagende Zeichen "Hallo" 5 Zeichen+1Längenbyte
MOVD 'Hall',VD101
MOVB 'o',VB105
LD E0.0
EU
XMT VB100,0 // Zeichen an Zwischenspeicher über Schnittstelle 0 senden

Ich hoffe ich konnte dir weiterhelfen. Solltest du aber noch fragen haben, so werde ich Versuchen mit meinem bisherigen Wissen dir weiterzuhelfen.

MfG
HUbert
 
A

Anonymous

Guest
Hallo
Die Begrenzung zu sendender Daten ist 255 Byte im Stück. (länger ist das Tabelleneintragsbyte eben nicht ...). Die Sende-Länge lässt sich über verschiedene Wege notfalls ermitteln, ist aber meist unnötig.
Der Tipp von Siemens ist etwas kompliziert - das geht viel einfacher.
....
Wenn Du garnicht weiterkommst kann ich Dir dazu ein (allerdings unkommentiertes) Stück der freien Kommunikation zukommen lassen welches hier mal vor langer Zeit aus dem 'Drucker Tip' hervorging und immer noch fleissig kopiert wird. Allerdings verzweifel auch ich jedesmal wenn ich da was ändern will - weil eben die Kommentare nicht mehr vorhanden sind. Müsste das auch erst zusammensuchen was bestimmt einige Tage dauern würde.
Wichtig war - daran erinnere ich mich - die freie Kommunikation erstmal überhaupt richtig zu konfigurieren. Es geht immer nur zeitgleich Senden oder Empfangen - dieses Freigabebit in einem der Sondermerkerbytes muss explizit jedesmal mit umgeschaltet werden (XMT oder RCV alleine reicht nicht). Bei Siemens machts das in dem Beispiel ja der Zustandsautomat - meine ich mich zu erinnern ....
Berthold
 
OP
R

reini69

Well-known member
Beiträge
59
Punkte Reaktionen
0
Vielen Dank für Eure Hilfe. Hat mir schon mal ein bisschen weiter geholfen. Bei Bedarf werde ich gerne wieder auf Euch zurück kommen.
 
A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo
Noch eins - steht aber auch in den Tipps - wenn Du das (alte) original Siemens PPI-Kabel (BF-irgendwas) zur Übertragung/ Wandlung RS485 <--> RS232 verwendest benötigst Du eine Zeitverzögerung (ca. 10ms) zwischen Senden und Empfangen.
XMT
T Warte 5ms
RCV
Nimmst Du den MPI-Adapter oder einen geeigneten einfachen RS485 - RS232 Umsetzer kann diese Umschaltzeit entfallen.
XMT
RCV
XMT
....
Das ist zu beachten für die Startroutine ('Init-Konfiguration') die zumeist im ersten Zyklus die Schnittstelle aktiviert. Wenn die z.Bsp. auf 'Warte auf Zeichen' 'gejumpert' ist kannst Du erst Senden wenn nach dem Umschalten etwas gewartet wird. Sonst gehen die ersten Zeichen verloren.
Das Du bei aktivr freinen Kommunikation nicht mehr per PPI auf die CPU zugreifen kannst ist ja klar ??? Die freie Kommu. muss vorher abgeschaltet werden - notfalls Stop durch Betriebsartenschalter !!! Also Schalter auf Stop.

Zum Druckeranschluss (benutze einen 'Star 24Naddeldrucker Bj. 18xx') verwende ich den seriell - parallell Umsetzer von Reichelt. Ewiges Probieren ergab dass eigentlich nur der in der Preisklasse '40Euro' überhaupt auch einzelne Zeichen sofort ausgibt. Jedenfalls in meiner Kombination. Die anderen Dinger puffern alle und reagierten nicht richtig auf die Steuerzeichen (Zeilenende 0A0D oder 0D0A ?) Da steht erstmal nichts und plötzlich alles auf dem Papier ....
Da müssen aber tausend Dips richtig geswitcht sein das funktioniert wirklich nur in einer Konfiguration. Einfacher geht mit den alten Epson Stylus mit RS422 Interface (für den MAC) allerdings braucht der eine Art Treiber für den Einzelblatteinzug. War nicht ganz ohne - ist jedoch hinzukriegen. Die Belegung des Epson RS422-Schnittstellensteckers ist mir zwischenzeitlich auch abhanden gekommen. Suche danach schon länger und muesste selbst von vorne beginnen das selbstgezimmerte Adapterkabel nachmessen.

Berthold
 
OP
R

reini69

Well-known member
Beiträge
59
Punkte Reaktionen
0
PC koppeln über serielle Schnittstelle

Tach.

Mittlerweile bin ich soweit das meine SPS etwas sendet (erfreulicherweise auch ziemlich genau das, was sie senden soll !). Nun lese ich diese Zeichen erstmal auf meinem PC mit Hyperterminal ein. Soweit ist alles klar. Zur Kopplung verwende ich das Siemens PPI-Programmierkabel.
Nun werden in unserer Firma ca. 30 derartige Kopplungen eingesetzt (ca. 30 S7-222 und an jeder ein PC). Wenn ich nun für jede dieser Kopplungen ein Siemens-Kabel kaufen muss, wird das eine recht teure Angelegenheit. Im Internet habe ich aber schon einige Lieferanten gesehen, die mir ein RS485-RS232-Wandlerkabel um einiges günstiger verkaufen. Ist es mit so einem "Wald-und-Wiesen-Kabel" auch möglich die Kopplung herzustellen oder auf welche Besonderheiten muss ich achten, wenn ich ein Nicht-Siemens-Kabel verwenden will ?
 
A

Anonymous

Guest
Kannst z.Bsp. den Adapter bauen und nehmen der im Forum unter 'Schaltpläne' aufgeführt ist.
Einfache RS485 <--> RS232C Wandler tuns oft nicht. Woran das liegt ist einfach herauszufinden aber mühsam zu erklären. Wer allerdings 30CPU's verdrahten will für den lohnt sich die Mühe das aufzudröseln allemal.
Berthold
 

lorenz2512

Well-known member
Beiträge
3.251
Punkte Reaktionen
310
Zuviel Werbung?
->Hier kostenlos registrieren
hallo,
bei ebay gibt es günstige nachbauten 24,99€, bei mir liefen die sachen einwandfrei, auch mit protool. der gute mann wird dir auch weiterhelfen können zumal 30 st. nicht von pappe sind.
mfg
dietmar
 

Kurt

Well-known member
Beiträge
462
Punkte Reaktionen
16
Unser Kollege Deltalogic hat auch so einen Pegelwandler im Bauchladen.
Die Elektronik ist da im SubD Stecker untergebracht.

kurt
 
OP
R

reini69

Well-known member
Beiträge
59
Punkte Reaktionen
0
S7-200 Kabel

Vielen Dank für Eure Hinweise. Noch ein paar Fragen:
- Wo finde ich denn im Forum "Schaltpläne" den tatsächlichen Schaltplan ? Ich hab nix gefunden.

- In Ebay hab ich nur einen Anbieter gefunden der ein Kabel für eine Übertragungsrate von 9.600 Baud anbietet. Datt is mir zu langsam. Gibts da auch was schnelleres ?

- Die Kabel von Deltalogic kosten ja noch mehr als die von Siemens. Oder hab ich da was falsches gelesen ?
 
Oben