TIA RS232 Kommunikation mit S7-1200

FvO

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich versuche seit geraumer Zeit eine serielle Kommunikation mit ner S7-1200 und CM1241 ans laufen zu bekommen.
Ich habe bis dato ein Projekt angelegt, die Hardware (incl. RS232 Bereich 9600 Baud, keine Parität, usw.) eingerichtet und ein Testprogramm geschrieben.
Das Testprogramm führt zu einer Aktivität an der TX Lampe auf der CM Baugruppe. Der Statuswert zum Zeitpunkt des kurzzeitigen Vorhandenseins von Done am Send_ptp_db ist 0000 und dann wieder 7000. Sieht für mich nach erfolgreichem Senden aus. Auf nem angeschlossenen XP-Rechner läuft ein RS232 Logger. Dort kommt nichts an. Was für Möglichkeiten bleiben mir noch um herauszufinden ob das Senden geht?

Für die andere Richtung habe ich aus dem Hyperterminal (identische Einstellungen wie in der Hardwarekonfiguration) einzelne Zeichen versendet. Ich hatte erwartet im Testprogramm im empfangspuffer hexadezimale ASCII Zeichen wiederzufinden. Dem ist aber nicht so. An RX vom CM1241 stelle ich keine Aktivität fest.

Das Kabel läuft in einer anderen seriellen Verbindung problemlos.

Vielen Dank für Eure Hilfe.


Viele Liebe
Grüße
 
Hi!

TX und RX der RS232-Verbindung sind korrekter Weise vertauscht (also gekreuzt)?


Gruß,

Ottmar
 
Das senden habe ich mittlerweile hingebracht. Der andere Gesprächsteilnehmer wollte nicht. Hab jetzt ne brücke in der Schnittstelle und schicke mir selbst Nachrichten.
Nun habe ich keine Chance eine z.b. 7byte lange Nachricht von DBxy.zeichen1 zu senden. Wenn der typ mw ist gehen 2 byte, wenn es md ist gehen 4 byte. String geht garnicht, arry of Char auch nicht.
Denke es sollte mit nem Zeiger gehen. Habe keine Ahnung wie.

Kann von Euch jemand mit Zeigern und S7-1200 umgehen?

Gruß :ROFLMAO:
 
Zuletzt bearbeitet:
Hi

also ich hab ein Programm, dass es geschafft hat Strings zu versenden. Nur kommt ich da jetzt nicht dran. Muss mal morgen auf Arbeit schauen wo das war. Sogar komplette UDT können verschickt werden. Zeiger oder anderer anachronistischer Kopfstand aus der Step7 V5 Zeit sind auf der 1200 oder 1500 nicht notwendig. Eines der Probleme die ich am Anfang nicht ganz überrissen hatte war wie man die Puffergröße angibt. Da ist ein Längenparameter für den Puffer. Wenn ich mich jetzt richtig erinnere kann der entweder auf die echt zu sendende Länge oder auch auf 0 gestellt werden. Letzteres ist meistens einfacher, denn dann kümmert sich die AS selber darum wieviel da übertragen wird. Auf der Empfangsseite ist das genauso. Also den Puffer ausreichend groß machen und die Länge auf 0 lassen.

Bei den Strings muss man wie immer bei Simatic zwei Bytes mehr vorhalten, denn nach Hans Berger hat ein Simatic-String ja eine Maximal und eine tatsächliche Länge. Das wird auch geprüft und es wird entsprechend darauf reagiert. Ich habe von einer 300 zu einer 1200 einen UDT mit String drin kopiert. Dabei habe ich ganz absichtlich die Strings unterschiedlich groß gemacht und damit versucht aus dem einen String raus in den anderen hinein zu schreiben. Es ging nicht :) Wenn das Ziel in einem optimierten DB liegt, dann werden maximal soviele Zeichen aus der Quelle kopiert wie ins Ziel passen.
In der Gegenrichtung also von einer 1200 zu einer 300 wird nix geprüft. Damit kann man sich ganz schnell den zweiten String im UDT kaputt machen, denn plötzlich hat er eine falsche maximal Länge.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Hellebarde,

Klingt genau nach dem Zeug des ich brauch. Werd mich heute Abend gleich wieder dran machen. Im Sendstring die Länge 0 hab ich noch nicht getestet. Ich bilde mir nur ein dass als Fehlermeldung irgendwas mit String oder Datentyp nicht erlaubt drin stand. Im Status beim anstehen des Fehlers während des Sendens.

Wenn Du noch ein paar Details zu der Sache hast fände ich das Super.

Danke.

Komme später nochmal ins Forum.

Gruß
 
Hallo,

ich habe an das CM1241 einen Epson-Drucker angeschlossen. Das Senden funktioniert auch soweit, allerdings immer nur einmal und zwar direkt nach dem Überspielen des Programms auf die SPS.
Hat jmd. eine Idee, an was das liegen könnte?
 
Hallo meyde

asynchrone Funktionen wie TSEND verlangen von dir als Anwender immer einen Automaten außen rum.
1. schritt: Daten vorbereiten, REQ auf false --> status 16#7000
2. schritt: REQ auf true --> status 16#7001
3. schritt: warten bis status 16#0
4. schritt: REQ auf false --> status 16#7000

jetzt kannst du wieder neue Daten vorbereiten und danach geht es mit Schritt 2 weiter.
Wenn REQ immer auf true bleibt, dann weiß der TSEND nicht, dass du neue Daten für ihn hast.

'n schön' Tach auch
HB
 
Hallo liebe Forengemeinde,

ich möchte Manometer-Kalibrierstände mit einer S7-Steuerung aufrüsten um Drücke automatisch anfahren zu können.
Derzeit benutzen wir "Const 211" Digitalmanometer von der Firma Europascal als Referenzgeräte.
Diese haben lediglich eine RS232-Schnittstelle.

Wenn ich das richtig verstanden habe, kann ich mit RS232 keinen permanenten Datenstream erzeugen,
sondern müsste für eine geregelte Kommunikation immer wieder die Daten abfragen.
Also Anfrage schicken, Antwort abwarten, Quittieren, Port freigeben und wieder Anfrage schicken.
Könnt ihr das vorbehaltlos bestätigen oder gibt es doch die Möglichkeit eines Streams.

Das Problem ist folgendes:
Die Daten von dem Manometer sollen verwendet werden, um den den ausgegebenen Druck zu regeln.
Wenn der Messwert also nicht live übertragen wird, ist ein Regeln kaum möglich.

Alternativ würde ich einen Drucksensor mit analogen Ausgang verwenden z.B. den "Pascal Ci4" der Firma Labom, jedoch sind die Const 211 bereits vorhanden und sollen nach Möglichkeit weiter genutzt werden.

Freue mich auf eure Antworten.

Gruß

 
Zurück
Oben