Step 7 Serielle übetragung nachbauen möglich? Tipps

Benni89

Level-1
Beiträge
153
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich würde gerne die Serielle schnittstelle zum Datenaustausch nachbauen, habe allerdings keine idee wie :(

Idee:
S7:
ein Di und ein Do (TX RX)

Optokoppler um mit einem µC zu arbeiten

µC auch Ein Di und ein Do

wie kann man das nun nachbauen?

Maximal Sollten 255byte empfangbar sein aber die länge Variable. z.B. "Hallo Welt!" wären dann in meinem DB0 11 Bytes

ab leider keine idee bzw wär sowas überhaupt möglich? Alternativ sollte man mit einem PC ebenfalls daten an die SPS senden können (PC gegen µC getauscht) Programm zum senden wär dann Putty.
 
Du wirst die strengen Timings für die Bitzeiten nicht einhalten können. Hat Deine SPS eine frei programmierbare serielle Schnittstelle?
Oder nimm einen CP mit serieller Schnittstelle (z.B. CP341).

Oder nimm ein Protokoll mit je 2 Leitungen (Data + Takt, SDA + SCL), wie z.B. I²C. Das wird aber sehr langsam (schätzungsweise 6 bis 12 Sekunden für 255 Byte), die SPS wird höchstens 20 bis 40 Zeichen je Sekunde schaffen. Und es gibt vermutlich kein fertiges Programm für die PC-Seite.

Meine Empfehlung: vergiss das Basteln. Nimm eine richtige serielle Schnittstelle. So wie Du hier Deine Frage stellst, traue ich Dir nicht zu, daß Du die Bastellösung hinkriegst.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab sowas mal vor zig Jahren gemacht.
Bei einer Signaleitung musst du alles übers Timing machen.
Start = 100ms
Wert 0 = 10ms
Wert 1 = 20ms
Begin Neues Zeichen = 30ms
Ende = 40ms
Dazwischen immer 10ms Pause.

Fürs Zeitraster hab ich den OB35 verwendet.
Normale Eingangsbaugruppen haben Eingangsfilter mit ca. 2-3ms drin.
Schneller als 10ms Takt hab ich nicht zuverlässig hinbekommen.
Das Ganze war sowieso nur ein Provisorium und aufgrund der langsamen Geschwindigkeit kaum Praxis tauglich.

Gruß
Dieter
 
ok, werde mir das mal von Thomas anschauen.

gibt es denn eine gute Seite, wo das genau erklärt wird? Also es gibt ja nur 2 Zustände, High und Low,

angenommen das Startbit ist High und das erste Datenbit auch, wie erkenne ich denn das? muss ja alles irgendwie zeitlich funktionieren?

versteh das leider nicht ganz so :(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also es gibt ja nur 2 Zustände, High und Low,

angenommen das Startbit ist High und das erste Datenbit auch, wie erkenne ich denn das? muss ja alles irgendwie zeitlich funktionieren?

versteh das leider nicht ganz so :(

Du musst dem Startbit einen anderen Zeitwert zuordnen.
Also Datenbit 10ms und Startbit eben z.B. 100ms

Gruß
Dieter
 
Okay,
also das Projekt wär auch nicht für die Praxis gedacht, sondern einfach zum verstehen, wie so eine verbindung genau arbeitet.

wo liegt man denn gebraucht preislich bei einem Seriellen CP ungefähr?
 
Du musst dem Startbit einen anderen Zeitwert zuordnen.
Also Datenbit 10ms und Startbit eben z.B. 100ms

Ne, das Start- und das Stopbit dient ja eben zur Synchronisierung. Wozu eine Zeit für das Startbit?
Man wartet auf das Startbit und startet damit seinen Taktgenerator, dann misst man zu den Zeiten die sich aus der Baudrate plus Zuschlag um in der Mitte des Impulses sampeln den Zustand der Leitung, und schiebt das Bit in das Empfangsbyte.
Hat das letzte Bit nicht den Zustand der für das Stopbit vorgegeben ist, ist etwas schiefgelaufen.
Mit jedem neuen Startbit wird der Taktgenerator neu aufsynchronisiert sodass die Fehler sich nicht aufsummieren.

Hier ist das ganz gut gezeichnet:
http://www.mikrocontroller.net/articles/RS-232
 
Und wie erkennst du das Startbit?
Start- und Stop-Bit sind invers zueinander, Du hast also immer eine Flanke, auf die Du triggern kannst. Überprüfen, ob Dein Timing stimmt, kannst Du nur durch das Stop-Bit und eventuell das Paritäts-Bit.

Ich hab's damals eben mit unterschiedlichen Zeitwerten die verschiedenen Bits gelöst
Das kannst Du machen, wenn Du beide Kommunikationspartner softwaremäßig realisierst. Der TE will aber eventuell auf der anderen Seite einen PC einsetzen. Das Timing der UARTs ist nicht sonderlich flexibel. Du kannst wählen ein Stopbit oder zwei, Parität odd, even oder keine und die Datenrate. Das Startbit ist dann immer genau so lang wie die Datenbits, das Stoppbit bei Einstellung zwei doppelt so lang.

Mit einer aktuellen S7/300-CPU mit 1ms Auflösung hat man gute Chancen, die 75Bit/s zu decodieren, 150Bit/s gehen wahrscheinlich auch noch.

Gruß
Erich
 
Umerlich zusein benutz einfach eine CP z.B. die CP341. Das erspart eine menge arbeit und Frustration.:ROFLMAO: Wenn du noch was angeben willst kanst du dann noch ein BT Modul an die CP hängen und alles Drathlos machen. Mit nem RS232 Logger kannste dann alle epfangenenn werte Anzeigen.
 
Zurück
Oben