S7-200 2xRS232 Waagen anschließen

Syntaxfehler

Level-1
Beiträge
117
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte mit einer S7-200 (6ES7 216-2AD23-0XB0) zwei Waagen über RS232 Steuern/Auslesen.
An dieser CPU ist auf der 1.Schnittstelle das Touch Panel TP177 angeschlossen.

Wie kann ich nun von der 2.Schnittstelle die zwei Waagen steuern?

Gruß
Syny
 
Wie kann ich nun von der 2.Schnittstelle die zwei Waagen steuern?
Waagen identisch ? --> Ja, manueller Umschalter.

Umschalter gibt es auch mit "Relaise", die die SPS umschalten kann.




Ist das ein "kleineres" Projekt ?

So mit 2 Waagen, die man mal schnell "unterm Arm" woanders hintragen kann.

ODER etwas anspruchvolleres ?
Dann empfehle ich S7-300 mit Siwarex.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo gravieren,

ist es so, das ich immer nur 1 Waage auslesen/steuern möchte, da es sich um 2 verschiedene Endprodukte handelt.

Beide Waagen sind identisch und werden fest an einen Ort installiert.

Ich habe einwenig gegoogelt, aber noch kein Relais gefunden mit der ich per SPS die Waagen umschalten kann.

Alle Befehle und die Antworten werden mit <SP><CP><SP><LF> (ASCII-Wertigkeiten 32,13,32,10) abgeschlossen.

Hast du ein ein Beispiel wie ich im ASCII Code die Waage steuern/auslesen kann?

Gruß
Syny
 
Achso Umschaltung auf 2 Schnittstellen.

Ich habe auf die schnelle nichts gefunden.

Ein Relaise 24Volt mit 4 Goldkontakten denke ich macht das gleiche und noch billiger.


Teste erst mal 1 Gerät, bei Funktion rühre dich hier nochmals.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vorweg, ich verwende hautsächlich die S7-300/400

Ich verwende auch hauptsächlich die S7-300/400. Die Kommunikation über ASCII Code hatte ich bis jetzt auch noch nicht programmiert, daher bin ich sehr dankbar für jede Hilfe.
Funktioniert der SFC216 und 217 auch auf meiner S7-CPU226? Kann mir jemand den Baustein schicken?

http://www.sps-forum.de/showthread.php?t=16658&highlight=ASCII+Code

Gruß
Syny
 
Zuletzt bearbeitet:
Das geht bei der S7-200 mit dem RCV (empfangen) und dem XMT (senden) Befehl.
Umschalten mit Relaise mußt du probieren. Wenn geht, dann sicherlich am günstigsten. Kommt mir aber komisch vor.

PPI/RS 232 Kabel brauchst du auch noch.

BESSER: Du könntest mit dem MPI BUS, auf welchem das HMI draufhängt, auch noch zu einer CPU 224XP weiterfahren. Diese macht dann über die 2te Schnittstelle die Komunikation mit der 2ten Waage. Werte dann über MPI zurück an die CPU 1.
 
BESSER: Du könntest mit dem MPI BUS, auf welchem das HMI draufhängt, auch noch zu einer CPU 224XP weiterfahren. Diese macht dann über die 2te Schnittstelle die Komunikation mit der 2ten Waage. Werte dann über MPI zurück an die CPU 1.

Da geb ich dir Recht. Schöner wäre es Siemens hätte einen Schnittstellenerweiterungs-Modul, den ich an meine CPU anbinden kann.

Gruß
Syny
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
So, ich habe nun die Waagen erhalten und diese an eine S7-200 CPU226 (6ES7 216-2AD23-0XB0) angeschlossen.

Ich erhalte an der S7-200 Werte (irgendwelche Zeichenketten) von der Waage. Nur kann ich diese nicht richtig wandeln. Ich habe mir auf der Siemens Seite den Tip52 gedownloaded.
Die Bausteine XMT und RCV benötige ich, nur was fehlt noch alles?

Wie wandel ich eine Real-Zahl z.B. "150,06g" in eine Zeichenkette um? Das wären doch pro Ziffer bzw. Komma ein Zeichen?
Und wie sende ich das zur Waage? Hintereinander? Oder in einer Zeichenkette?

Anbei die Doku von der Waage.

Gruß
Syny
 

Anhänge

  • Serielle Schnittstelle.JPG
    Serielle Schnittstelle.JPG
    104,3 KB · Aufrufe: 43
Strings..

Hallo,

die empf. Zeichenkette kann direkt umgewandelt werden:
MicroWin Hilfe:
"...Die Operation STR wandelt Zeichenketten mit dem folgenden Format um:
[Leerzeichen] [+ oder -] [Ziffern 0 - 9] [. oder ,] [Ziffern 0 - 9] ".

Die Befehle für die Waage werden genauso als String gesendet, und zwar den entspr. Befehl + Telegrammabschluss. In den Beispielen ist die Hantierung gut beschrieben.

V.
 
Vladi,
ich habe es nochmal probiert. Mit dem Baustein STR hatte ich es auch schonmal vergeblich probiert. Wie kann ich denn "erstmal" den aktuellen Waagenwert auslesen?
Ich hatte (siehe 2 Beiträge drüber) eine Bedienungsanleitung hochgeladen.
Dort steht der Befehl, den ich der Waage zusenden muss, um dann z.b. meinen Waagenwert zu erhalten.

Wie geht denn das erstmal? Und wie füge ich aus einer Zeichenkette, diese einzelnen Werte wieder zusammen (spich meinen aktuellen Waagenwert)?

Mit einer Zeichenkette hatte ich noch nie zu tun und ich bräuchte mal hier von einen Programmier-Genie ein Beispiel wie so ein komplettes Programmbeispiel aussehen würde!

Im voraus Danke !

Gruß
Syny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Waage

Hallo Kollege, :
1) Aktl. Waagenwert auslesen:
in der o.g. Bed.Anleitung steht nichts von aktl. Waagenwert, es gibt ein Wert "schon dosierte Menge"; das kann man abfragen mit dem Telegramm:
"IN_PV_AM <SP><CR><SP><LF>" (das ist ein STRING, oder deutsch: Zeichenkette)
Die Zeichen "<SP><CR><SP><LF>" sind immer der Abschluss des Telegramms.

Der o.g. String muss an die Waage gesendet werden, die antwortet dann mit:
"001234<SP><CR><SP><LF>", wobei 001234 ist das Gewicht in mg.
Diese Antwort: "001234<SP><CR><SP><LF>" (STRING) kann mit der schon erw. Funktion STR in eine Realzahl umgewandelt werden, da müsste rauskommen 1234.0.
Wie macht man ein STRING?:
Z.B. ab Adresse VB200:
MOVB 12, VB200 // Anzahl zu versend. Bytes
MOVD 'IN_P', VD201
MOVD 'V_AM', VD205
MOVB 32, VB209
MOVB 13, VB210
MOVB 32, VB211
MOVB 10, VB212

D.h., das kannst jetzt senden:
XMT VB200, 0 // String senden. Sendepuffer ist ab VB200
Empfangen geht mit(wird normal im Interrupt aufgerufen):
RCV VB300, 0 // String empfangen, Daten stehen ab VB300
Jetzt würde dein Gewicht ab VB301 drin stehen, dann:
STR VB301, 0, VD10 // in VD steht jetzt der Wert als REAL

Die Programmstruktur sieht so aus:
- einmalig beim Start die Schnittstelle parametrieren
- Empfangs-Interrupt freigeben und definieren
- Anfrage an Waage senden..
- Empfangsinterrupt kommt: Daten von der Waage auswerten
- wieder abfragen...

Ich habe keine Zeit, um das Ganze dir zu programmieren; die Beispiele von Siemens sind aber gut, da muss man durch :D.

V.
 
Hallo,

wenn du das hast, dann ein Tip von mir:

Wenn du an beiden Onboard Schnittstellen deine Waagen mittels ASCII (Freeport) verbunden hast, dann kannst du für das Panel auch ein EM277 verwenden. An einem EM277 funktionieren auch die Panels und ein PC gleichzeitig.

Gruss

Helmut
 
@Vladi

Ich kann über den "Mettler-Modus" den aktuellen Wert der Waage erhalten. Dazu sendet die Waage mir ständig ihren Wert zu.

Die Variante das ich die Waage ansteuer und nur den dosierten Wert erhalten kann, ist für die weiteren Programmablauf nicht so günstig. Ich bin daher von dem steuern der Waage abgekommen und will im "Mettler-Modus" diese betreiben.

Ich habe das Beispiel von Siemens benutzt (siehe *.pdf).

Jetzt versuche ich die Zeichenkette zu wandeln, erhalte aber keine plausiblien Werte. Ich habe mal Online ein Screenshot gemacht. Ich wundere mich über so viele Zeichen die dort ankommen?

Liegt das am Programm?

Danke
Gruß
Syny
 

Anhänge

  • Anleitung.JPG
    Anleitung.JPG
    65,8 KB · Aufrufe: 18
  • Beispiel Siemens.pdf
    48,7 KB · Aufrufe: 12
  • Beispiel Siemens2.pdf
    21,7 KB · Aufrufe: 6
  • Waage_ankommende_Zeichen.JPG
    Waage_ankommende_Zeichen.JPG
    20,8 KB · Aufrufe: 15
  • Waage_Main.JPG
    Waage_Main.JPG
    73,6 KB · Aufrufe: 15
Z.B. ab Adresse VB200:
MOVB 12, VB200 // Anzahl zu versend. Bytes
MOVD 'IN_P', VD201
MOVD 'V_AM', VD205
MOVB 32, VB209
MOVB 13, VB210
MOVB 32, VB211
MOVB 10, VB212

Hallo,

Ich habe mich mal wieder mit meiner Waage beschäftigt. Also Vladi nach deiner Lösung klappt das wohl nur bei S7 300/400er Serie. Bei der 200er Serie zeigt S7 mir fehler an, wenn ich als Doppelword MOVD "IN_P" schreibe.

Mit dem Hyperterminal klappt das einwandfrei, das ich ein Befehl sende und meinen Waagenwert empfange.

Also am 1.Pic stelle ich meine Schnittstelle ein, 9600baud. usw. wie im Siemens-Beispiel.
Ich habe folgende Variante mal ausprobiert. Nur glaube ich scheitere ich an der Request-Zeit?! Ich glaube so etwas muss doch da noch dazwischen?!

Das komische an meiner Variante ist, das ich 2x die Zeichen ab VB201 lade. Deswegen hatte ich im NW2 nach dem Zeichen ins VB201, nur die ersten 14 Zeichen des VB201 weitergesendet.

Kann mir da jemand weiterhelfen, wie ich meinen String mal endlich senden und empfangen kann?

Gruß
Syny
 

Anhänge

  • Waage1.JPG
    Waage1.JPG
    48 KB · Aufrufe: 11
  • Waage2.JPG
    Waage2.JPG
    42,7 KB · Aufrufe: 8
da gibts doch von Siemens so ein Beispielprojekt in welchem über die schnellen digitalen eingänge werte der seriellen Schnittstelle eines Conrad Temperaturmoduls gelesen werden.
vielleicht hilft das ja etwas weiter.
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Waage

Hi Kollege,
war lange nicht online..
So, du sendest mit XMT ab Adresse VB2001...muss da nicht zuerst die
Anzahl der Bytes stehen, die versendet werden sollen? Also z.B. die Zahl der Bytes in VB2000
schreiben, dann mit XMT ab VB2000 bearbeiten(dein Telegramm steht drin nachwievor ab VB2001).

V.
 
Zuletzt bearbeitet:
Hi Vladi,

das dachte ich auch, nur wenn ich über Hyper Terminal die Waage anspreche, schreibt mir das Hyper Terminal automatisch die Anzahl der Zeichen davor, wenn ich diese darüber versende? Weil dort schreibe ich ja auch nur meinen Befehl (ohne Anzahl der Zeichen) zur Waage.

Weil das dort ja funktionierte, dachte ich das meine Waage keine Anzahl Zeichen benötigt. Ich probier das montag gleich mal aus... aber ich glaube das hatte ich schon ausprobiert.

Ich möchte ständig kontinuierliche Waagenwerte haben. Könnte es daher eher sein, das die SPS 1x Befehl schreibt --> dann z.b. 5ms warten ---> auf Waagenwert empfangen, danach wieder den Befehl senden. Wie bekomme ich denn diese schleife hin?


Gruß
Syny
 
Rs232

Hi,
HyperTerminal ist was anderes, aber die Sende/Empfang Funktionen der SPSen brauchen u.u. ihre eigene Einstellungen(steht auch in der Beschreibung der Befehle un in den Beispielen).
Kontinuierlich lesen: da gibt es zwei Methoden:
-Waage abfragen-Wert empfangen-Waage abfragen-empfangen..zyklisch
oder
-Waage konfigurieren auf "dauernd senden", und dann nur auf
Empfang warten(da wird ein Interrupt ausgelöst) und die Telegramme
auswerten.

Normalerweise ist RS232 nicht so kompliziert, man muss aber einmal verstehen wie das ganze geht. :D wird schon klappen..
Ab Montag bin ich weg, erst am WE dann wieder..

Vladi
 
Zurück
Oben