TIA S7 1200 und PtP RS 485 (SEND_PTP, RCV_PTP)

53tao

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,


ich mache meinen ersten Projekt in SPS. Hardware: S7-1200 mit CM1241 RS422/485 verbunden mit Nanotec SMCI174-S-2.Ich habe FB für die Steurung geschrieben.
Ich benutze PtP ( RS 485). Ich habe so gemacht: in jedem FB rufe ich zuerst SEND_PTP (z.B. Status abfragen, Motor starten usw.) dann RCV_PTP (Antwort bekommen) auf. Mit einer Steuerung läuft alles ohne Problem. Aber mit 2 oder 3 gleichzeitig - funktioniert nicht.


Wie kann ich am besten diese Funktionen (SEND_PTP, RCV_PTP) benutzen, damit ich mehrere Steuerungen abfragen und steuern könnte?
Oder vielleicht gibt es andere bessere Lösung für diesen Zweck :)


Vielen Dank für Ihre Hilfe.


Gruss
 
Guten Tag auch,

habe nur mit SMCI147 zu tun gehabt,
allgemein baust du ja ein Netzwerk RS485 auf, da musst du schonmal auf die richtige Verdrahtung und Terminierung achten (siehe Technisches Handbuch).
Am SMC sollte es zwei Hex-Codierschalter für die Adresse geben.
Beim senden des ASCII-String muss nach dem Startzeichen(#) die Motoradresse folgen (siehe Programmierhandbuch).

mfg MK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich benutze PtP ( RS 485).
[...]
Mit einer Steuerung läuft alles ohne Problem. Aber mit 2 oder 3 gleichzeitig - funktioniert nicht.
Was genau heißt "funktioniert nicht"? :confused:

Was meinst Du mit "2 oder 3 gleichzeitig"?
Hast Du womöglich einen RS485-Bus mit mehr als 2 Teilnehmern aufgebaut?

PtP heißt Point-to-Point - eine Verbindung zwischen genau 2 Teilnehmern.
Bei RS485 mit den selben 2 Adern für Senden und Empfangen schon nicht einfach zu handeln, doch spätestens bei mehr als 2 Teilnehmern braucht's ein vernünftiges Busprotokoll mit Kollisionserkennung, Senden/Empfangen-Mindest-Umschaltzeiten, Weitergabe der Sende-Berechtigung (Token), Telegramm-Prüfsummen, ... da nimmt man besser ein fertiges bewährtes Protokoll (wie z.B. Profibus).

Wenn Deine anderen Busteilnehmer nur antworten, wenn sie was gefragt wurden (sich also wie Slave verhalten), dann kannst Du Glück haben und mit einfacher Verriegelung der SEND_PTP-Bausteine und geschickter Realisierung von Wartezeiten und Timeouts eine überwiegend funktionierende Kommunikation zwischen Deinen Teilnehmern hinbekommen. Du mußt aber trotzdem mit verfälschten Daten in den Telegrammen rechnen und Vorkehrungen zu deren Erkennung treffen.

Harald
 
Guten Tag auch,

habe nur mit SMCI147 zu tun gehabt,
allgemein baust du ja ein Netzwerk RS485 auf, da musst du schonmal auf die richtige Verdrahtung und Terminierung achten (siehe Technisches Handbuch).
Am SMC sollte es zwei Hex-Codierschalter für die Adresse geben.
Beim senden des ASCII-String muss nach dem Startzeichen(#) die Motoradresse folgen (siehe Programmierhandbuch).

mfg MK

Danke für die Antwort. Ich habe Handbuch schon gelesen. Und mit einem Motor klappt es.)) Mein Problem : ich kann nicht mehrere Steuerungen zum laufen bringen. Hast du schon gemacht? Falls ja dann würde ich mich auf jede Information freuen=)
 
Harald, vielen dank für die Antwort)
Was genau heißt "funktioniert nicht"? :confused:

Was meinst Du mit "2 oder 3 gleichzeitig"?
Hast Du womöglich einen RS485-Bus mit mehr als 2 Teilnehmern aufgebaut?
Nein, der RS485-Bus wurde schon vor mir geplant=)
Und jetzt gibt es für jede S7-1200 Station ca. 5-10 solche Nanotec Steuerungen .Das Problem ist: falls ich nur einen Motor abfragen und starten möchte (egal welche Nummer), läuft sauber, ohne Fragen. Aber wenn ich während Ablauf zweiten oder noch dritten Motor dazu anschalten möchte - dann bekomme ich Überraschungen. Falsche oder fehlende Daten oder eine Steuerung reagiert nicht oder zu spät.
PtP heißt Point-to-Point - eine Verbindung zwischen genau 2 Teilnehmern.
Bei RS485 mit den selben 2 Adern für Senden und Empfangen schon nicht einfach zu handeln, doch spätestens bei mehr als 2 Teilnehmern braucht's ein vernünftiges Busprotokoll mit Kollisionserkennung, Senden/Empfangen-Mindest-Umschaltzeiten, Weitergabe der Sende-Berechtigung (Token), Telegramm-Prüfsummen, ... da nimmt man besser ein fertiges bewährtes Protokoll (wie z.B. Profibus).
Wir haben S7-1200 starter kit mit CM 1241. Also bleibt nur RS 422/485.

Wenn Deine anderen Busteilnehmer nur antworten, wenn sie was gefragt wurden (sich also wie Slave verhalten), dann kannst Du Glück haben und mit einfacher Verriegelung der SEND_PTP-Bausteine und geschickter Realisierung von Wartezeiten und Timeouts eine überwiegend funktionierende Kommunikation zwischen Deinen Teilnehmern hinbekommen. Du mußt aber trotzdem mit verfälschten Daten in den Telegrammen rechnen und Vorkehrungen zu deren Erkennung treffen.

Harald
Ja, alle andere Teilnehmern sind nur Slaves. Und Datentransfer geht als ASCII. Ich bin neu auch in SCL und wollte fragen, wie kann ich den Aufruf von den Bausteinen (SEND_PTP,RCV_PTP) aus einer eigenen Funktion (FC) machen ? Dann es ist leichter SEND_PTP zu verriegeln oder irre ich mich?

Und was meinst du mit geschickter Realisierung von Wartezeiten und Timeouts? Gibt es irgendwelche Einstellungen oder soll ich ganz normale Timern benutzen ? Mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ja hatte mehr als eine Steuerung am laufen, aber für jede einen CM :ROFLMAO:

was user PN/DP meint steht auch im Handbuch (das du gelesen hast):
Zweidrahtbetrieb RS485
Damit die RS485-Übertragung zweidrahtfähig ist, müssen alle Busteilnehmer über
eine Richtungssteuerung verfügen. Ein "Intelligenter" Konverter, der beim Empfang eines Startbits auf der RS232
-Schnittstelle automatisch auf Sendebetrieb umschaltet und nach Ende des Stopbits
wieder zurück in den Empfangsbetrieb fällt, ermöglicht den Zweidrahtbetrieb der SMCI47-S.
Diese Lösung erfordert keine Software - Unterstützung.
Wir können den Konverter ICP -7520 empfehlen, der z.B. bei Schuricht erhältlich ist.
Sprechen Sie unsere Technische Hotline an
, wenn Sie hierzu Unterstützung wünschen.

Du hast ja vor das per Software zu lösen:

....

Ja, alle andere Teilnehmern sind nur Slaves. Und Datentransfer geht als ASCII. Ich bin neu auch in SCL und wollte fragen, wie kann ich den Aufruf von den Bausteinen (SEND_PTP,RCV_PTP) aus einer eigenen Funktion (FC) machen ? Dann es ist leichter SEND_PTP zu verriegeln oder irre ich mich?

Und was meinst du mit geschickter Realisierung von Wartezeiten und Timeouts? Gibt es irgendwelche Einstellungen oder soll ich ganz normale Timern benutzen ? Mfg

Da die PTP Bausteine aber nur einen Port zulassen, solltest du auch nur einen Aufrufen.
Entscheidend sind dann die Daten. Du musst reih um jeden Motor ansprechen, wie geschrieben durch die Motoradresse nach dem Startzeichen.
Beim empfangen musst du in den Telegrammen die Motoradresse auswerten.
"geschickter Realisierung von Wartezeiten und Timeouts" heisst hier, dass du die Sendetelegramme erst abfeuerst wenn vom vorigen Auftrag eine Antwort empfangen wurde.
Es ist wie in der Schule, wenn alle Kids durcheinander reden versteht die Lehrerin nicht wer was antwortet, wenn aber auf (Hand)-Zeichen ein Schüler zur Antwort aufgefordert wird klappt das schon...

MfG MK
 
Zurück
Oben