TIA RS485 und Stromzähler

Bierboot

Level-1
Beiträge
44
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Modbus RTU (RS485) und Stromzähler

Hallo Leute,
nachdem mir hier im Forum schon bei einigen Dingen geholfen wurde hab ich jetzt ein etwas schwierigeres Problem mit dem "CB1241 RS485" (Das kleine Board für in die SpS zustecken).

Ich versuche mal ganz am Anfang anzufagnen.

Ich habe in meime 1214DC/DC/DC (Tia V12) einen CB1241 RS485 eingesteckt und in der Hardware eingefügt. Siehe Bild Gerätekonfiguration
Gerätekonfiguration.PNG

Der Port ist also 268 oder?

Anschließend habe ich versucht das Programm nach dem Beispiel aus dem Handbuch aufzubauen. Siehe Bild OB
OB.jpg

Passen hier die Daten an den Bausteinen ?

Ich bekomme keine Daten aus dem "B&G E-Tech Eastron SDM220Modbus" Datenblätter hab ich angehangen.
Anhang anzeigen SDM220StandardDE(1).pdfAnhang anzeigen SDM220Modbus protocol V1.1.pdf

Bei der Verdarhtung bin ich mir auch unsicher.

Ich habe am CB1241 die TA und T/RA verbunden sowie TB und T/RB verbunben

TA+T/RA habe ich dann an A vom SDM220
TB+T/RB habe ich dann an B vom SDM220 angeschlossen

A und B am SDM220 habe ich mit einem 120Ohm Widerstand verbunden als Abschluss (Richtig?)



Ich bin jetzt seit einiger Zeit am Tüffteln wie ich die Daten des SDM220 an die SpS übergeben bekomme.
Aber es blinkt nicht mal ein LED am CB1241 (ausser wenn ich die Stecker aus dem CB1241 rausziehe blinkt RxD einmal).

1) Stimmt die Verdarhtung ? Wo schließe ich "M" am CB1241 an? Wo schließe ich "M" am Stromzähler an?
2) Stimmt das Programm? ( würde mir jemande kurz etwas programmieren, um die KwH auszulesen ?)

Vielen Dank schonmal
 
Zuletzt bearbeitet:
Der Port ist also 268 oder?
Hab zwar noch kein Modbus RTU gemacht, aber der Teil kommt mir komisch vor.

Du verwendest vermutlich dieses Beispiel hier
https://support.industry.siemens.com/cs/document/47756141?lc=de-WW
Beispiel schrieb:
Nach Einfügen des Kommunikationsmoduls in der Hardwarekonfiguration lässt sich der symbolische Name des Kommunikationsmoduls am Parameter PORT auswählen. Die Kommunikationsparameter BAUD (Übertragungsgeschwindigkeit) und PARITY (Parität) müssen für alle Teilnehmer gleich sein. Die Portkonfiguration der RS485-Schnittstelle in der STEP 7 (TIA Portal)-Gerätesicht ist hierbei irrelevant.
Vergleich das mal mit dem Beispielprojekt, der Wert 11 dort muss von wo kommen. Schau mal nach ob dass das selbe ist.

PS: Vielleicht solltest du im Titel "RS485" durch "Modbus RTU" ersetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

also bin etwas weiter gekommen.

Ich habe das Beispiel nochmals komplett eingespiel und alles genau durch gelesen.
Jetzt blinken schonmal die Beiden LEDs am Signalboard :) aber im Programm wird ein Fehler angezeicht (siehe Bild Fehler)
Anhang anzeigen 28054
Laut Handbuch ist das eine "Slave-Timeout. Überprüfen Sie die Baudrate, Parität und die Anschlüsse des Slaves."

Ich denke ich mache was bei der Verdrahtung falsch.

RS485 angeschlossen.jpg
Ich hab das Mal hochpräzise auf gezeichnet. Verbindung von TA un T/RA TB und T/RB beim SDM220 ein Widerstand 120Ohm zwischen A und B
M an GND ????

Danke für eure Hilfe
 
Hallo Bierboot,
ich versuche mich zum Einstieg in Modbus RTU mit dem gleichen Zähler. Leider klappt das bei mir auch nicht so wie es soll. Hab schon mehrere Stunden damit zugebracht. Die Kommunikation will nicht. Der Zähler antwortet nicht und ich bekomme der Errorcode 8188. (Bei mir hat das CB1241 die Hardwarekennung 261. ) Ich versuche das Beispiel mit der Spannung auslesen Register 30001 mit dem Code 04 um die Sache erst mal zum Laufen zu bewegen...
Die Software-Module aus dem aktuellen TIA sind etwas gewachsen - damit leider auch die Möglichkeiten Fehler zu machen.:sad:
Die Verdrahtung sollte so passen - hab ich auch so rausgelesen. (und an anderer Stelle mit anderer Hardware so gemacht)
Läuft deine Komm. inzwischen? Wie hast du die Zählerparameter eingestellt?
(Dein "Anhang 28054" läuft ins Leere.)
Würde mich über den entscheidenden Tipp freuen.

Gruß, Jörg
 
neueste Erkenntnisse...

...wenn man die A-Ltg. von SPS mit B-Anschluß vom Zähler laut Aufdruck und Doku (und analog die andere) verbindet funktioniert es in meiner ersten Ausbaustufe. (Register 30001 mit Code 0 lesen) Leider sind in meinem Zähler nicht wirklich alle Werte aus der Beschreibung verfügbar. Bei mir sind es nur Strom, Spannung und Zählerstand. Die Werte liegen auch weit auseinander im DB, sodaß sich die Abholung der Werte einzeln besser macht... M-Leitung beim Schreibtischaufbau nicht angeschlossen, Abschlußwiderstände schon.
Mal sehen was sich noch ergibt...
Gruß, Jörg
Nachtrag:
Es gibt bei dem Zähler verschiedene Varianten, ich hab nur die Standard-Variante in Bearbeitung, deshalb nur die 3 Meßwerte. Die Modbus-Version für ein paar € mehr hat dann wohl das volle Programm an Meßwerten...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
RS485_30001.jpgRS485_40001.jpg

Hallo Jörg_24,

schön das jemand die gleichen Probleme hat wie Ich :)

Also die Tip mit Leitung A und B + Widerstand hat bei mir erstmal eine Verbesserung herbei geführt. Ich bekomme jetzt Werte vom Zähler in die SpS leider nur Quatsch.

Kannst du dir bitte die Bilder durch gucken und mir einen tipp geben, wie ich z.b die 30001 sauber auslesen kann?

Ich werde heute noch bissel weiter fummeln und mich heute abend nochmals melden.

Vielen Dank vorab schonmal
 
Hallo Bierboot,
das ist kein Quatsch, das sind die Meßwerte (betr. 30001-Spannung). Du mußt die Bits noch zurecht schieben. Die Zählerwerte werden als Real-Zahlen über zwei Register á 16bit verteilt übertragen, deshalb LEN = 2 oder vielfaches davon. Du mußt die zwei Einträge deines receive_data_arrays zusammenführen / als ein REAL ansehen.
Der Wert 17253, 27888 aus Bild 1 sind als REAL 229,4255 Volt.

Allerdings sieht mein Komm-DB aus TIA V13 SP1 ganz anders aus, macht aber nichts - es funktioniert. (und es ist eigentlich ganz einfach :grin: )

Gruß, Jörg
 
Ok

wie füge ich die zusammen?

Der Werte 27888 aus Bild 1 sind auch manchmal im Negativbereich wie kann das sein?
Der Wert 17253 ist immer unverändert.


Grüße

Ich hab es jetzt mal so versucht.
Volt.PNG

Passt noch nicht ganz ?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
...im einfachsten Fall adressierst du die Werte direkt an als DBx.DBDxx (2 Worte zusammen als Doppelwort abgefragt, entspricht m.W. dem S7-Datenformat 'Gleitpunkt') und schiebt den Wert mit dem Signal DONE vom Modbus_Master_Modul per Move in einen anderen DB, z.B. "Meßwerte" oder in ein MD... Deine DB-Nr. kann ich im Bild nicht sehen, z.B. DB1.DBD34. (Ob die 34 passt mußt mal schauen, ggf. anpassen, soll jedenfalls deine Zeilen 27 und 28 erfassen, von Bild 1) Den neuen DB vorher anlegen ein eine Anzahl Real-Variablen darin anlegen - je nachdem wie viele du brauchst/verwenden möchtes. Der Modbus-Zähler bietet da ja einiges an.
Ist zwar etwas schmuddelig programmiert, aber einfach.
(Vielleicht mag jemand schreiben, wie man die zwei als INT abgelegten Teilwerte des Geräteregisters 30001 (und 30000, REAL-Zahl) wieder sauber zusammenfügt...)

Gruß, Jörg
 
Nachtrag

das ist wohl einer der Unterschiede zum akt. TIA V13SP1. In der akt. Version ist der Sende- und Empfangs-Datenbereich als UINT definiert und nicht als INT. (INT kann auch in den negativen Bereich gehen, suche: gültige Datentypen) was hier wohl nicht ganz passt. Kannst du den UDT dazu auf UINT ändern oder geht das in der alten Version nicht/so einfach?
(Wir wäre es mit dem Update auf V13SP1Upd.2?)

So einfach ist das nicht, ist zwar eine schöne Zahl - aber passt überhaupt nicht. Lies mal die Beschreibung vom Zähler zum Datenformat, mit Mantisse, Exponent etc.

Nachtrag:
INT oder UINT ist hier irrelevant!, ist nur ein Bitmuster und soll ja an der Stelle nicht interpretiert werden.
Versuch es mal mit MOVE DB3.DBD34 nach z.B. MD1000, mit dem COVERT änderst du ja die eigentlichen Inhalte, in MD1000 als Real sollte der richtige Spannungs-Wert stehen.

Gruß, Jörg
 
Zuletzt bearbeitet:
HI Jörg,

also ich habe deine Tipp den UDT von Int in UInt zuändert befolgt.Jetzt werden die Daten im Recivie_Data nur in [0] gespeichert. Daraus kann ich jetzt wie im Bild zusehen ist mit Move und Convert den Messwert Volt konvertieren.

Vielen Dank für deine Hilfe wirklich Toll
jetzt versuch ich noch einige andere Daten dem Zähler zu entlocken.
Ich geb bescheid
 

Anhänge

  • Klappt.PNG
    Klappt.PNG
    49,9 KB · Aufrufe: 51
  • Recieve_Data.jpg
    Recieve_Data.jpg
    81,7 KB · Aufrufe: 39
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok

ich habe
30001 Volt
30007 Ampere
30013 Watt
30343 kwh

erfolgreich ausgelesen. Ich habe immer die Adressen eingeben. Jetzt möchte ich aber alle 4 direkt und automatisch auslesen, brauch ich da immer einen neuen MB_Master oder kann ich da irgendwie eine Abfolge erzeugen?

Danke
 
...es gibt einige Möglichkeiten: 1.) entweder in SCL eine kleine Routine schreiben, die aus einer "Datenbank" (DB) mit den abzufragenden Registernummern eine nach der anderen abklappert, Werte abfragt und wegspeichert oder 2.) per Schrittkette 4x nacheinander den Modbus-Master - versorgt mit den verschiedenen Reg.-Nummern - aufruft, mit DONE den Wert wegspeichert, die neue Reg.-Nr. lädt, den Step-Zähler um eins erhöht - nächster Schritt; wenn alle Werte durch, Stepzähler auf 0 setzen und es geht von vorn los, (so hab ich es gemacht) oder 3.) mit Multiinstanzen arbeiten... oder 4.) längere Registerbereiche (ich glaube max. 40 Register hintereinander möglich) mit einem Rutsch abfragt (bringt hier aber nicht viel, da der letzte aus der Reihe tanzt //
Wenn du nichts weiter an der Komm. dran hast ist das so ok, die Komm. "rennt" dann mit max. möglicher Geschwindigkeit und die TX/RX-LEDs flimmern fröhlich vor sich hin. Braucht man aber nicht wirklich - ein Aufruf des Komm.-FBs per Intervall-OB z.B. alle 50 oder 100ms reicht völlig aus.
Was ich noch gemacht habe: Die Komm-Fehlercodes pro Modul, wenn ein ERROR-Signal kommt, auch zugeordnet wegspeichern und automatisch nach einer gewissen Zeit löschen. Dann kannst du beobachten/auswerten ob immer wieder neue Fehler kommen, d.h. da was faul ist. (Bei mir kommt nur bei Programmstart beim ersten Meßwert ein Fehler, dann läufts rund.)

jetzt mach ich aber Ostern
viel Spaß noch damit...
Jörg
 
Hi

ich habe einen Zähler genommen der mit dem "Done" hochgeschaltet wird und vier Modbus-Masterbaustein die je eine Reg. Nummer aufrufen.
Funktioniert super schnell man merkt nicht das vier Daten nacheinander eingelesen werden.


Super Hilfe vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
und danke für diese Erkenntnis mit den vertauschten A und B Strippen. Ich hatte das Problem bei einer Kopplung über Modbus mit einer Insevis, der Fehler liegt also definitiv auf der Siemens Seite. Der Support von denen wird also auch offensichtlich im Regen stehengelassen und der Endkunde darf das dann ausbaden.....
Ich habe die ganze Zeit versucht herauszufinden auf welcher Seite der Fehler zu suchen ist und hatte schon ein wenig Siemens im Verdacht, da aber auch ein Fehler von meiner Seite nicht auszuschließen war, da ich nicht wußte ob ich den Busmonitor korrekt angeschlossen hatte. Also A und B richtig zugeordnet, der Adapter war für etwas anderes gedacht:ROFLMAO:.
Dieser Bockmist hatte mich mindestens eine Woche gekostet.:sb6:

Ganz großes Kino und danke Jungs;).

Gruß
Mario
 
danke für diese Erkenntnis mit den vertauschten A und B Strippen. Ich hatte das Problem bei einer Kopplung über Modbus mit einer Insevis, der Fehler liegt also definitiv auf der Siemens Seite. Der Support von denen wird also auch offensichtlich im Regen stehengelassen und der Endkunde darf das dann ausbaden.....
Heißt das jetzt, daß seit Jahren die Siemens-Dokumentation zum CB 1241 RS485 in den verschiedenen Ausgaben des S7-1200 Systemhandbuches falsch ist, was die Steckerbelegung des X20 betrifft?
Also daß die Klemme, die am CB als T/RA beschriftet ist, in Wirklichkeit die RS485-Datenader B ist und die Klemme T/RB ist die RS485-Datenader A?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
ich weiß nicht ob ganz einfach nur die Firmware einfach nicht zur Dokumentation paßt, denn eigentlich ist das Signal durch das Vertauschen nur invertiert, wenn also kein HW Controller dahinter ist läßt sich sowas korrigieren. Ich könnte mir also vorstellen das das ganze eventuell mit irgendeiner FW Version verschwindet.

Gruß
Mario
 
Das Problem kann nicht durch Firmware-Updates beseitigt werden (da steckt ein Leitungstreiber-Chip dahinter). Es ist ein Verdrahtungsproblem was aus einem (zu spät-)Bezeichnungs-Standardisierungsproblem herrührt.

Bei RS-485 gibt es eine nichtinvertierte (positive) Signalleitung RxD/TxD-P (aka TxD+/RxD+) und eine invertierte (negative) Signalleitung RxD/TxD-N (aka TxD-/RxD-).

Manche Hersteller (und Siemens) bezeichnen die Leitungen übereinstimmend mit dem ANSI/TIA/EIA-485-A-Standard und dem Profibus-Standard
RxD/TxD-P = B
RxD/TxD-N = A

andere Hersteller haben die Bezeichnung von den Leitungstreiber-Chips übernommen
RxD/TxD-P = A
RxD/TxD-N = B

Beide Bezeichnungsvarianten existieren schon seit Jahrzehnten mit jeweils Millionen Geräten - da wird man sich nicht mehr auf eine Variante als die "einzig Richtige" einigen können. Zum Glück geht beim Vertauschen der Leitungen prinzipbedingt nichts kaputt.

Es ist halt wie immer, wenn 2 gleichwertige Varianten möglich sind und kein verbindlicher Standard vorgegeben wird bzw. zu spät: nach einer Weile wird es beide Varianten geben, z.B. Links- und Rechtsverkehr. Beide haben eine Logik, sind Tradition und kaum noch zu ändern.

en.wikipedia.org/wiki/RS-485#Pin_labeling
www.bb-europe.com/tech_articles/polarities_for_differential_pair_signals.asp
www.profibus.com 9-polige Sub-D-Steckverbindung
www.profibus.felser.ch D-Sub Stecker

Harald
 
Hi,
so wie das für mich aussieht funktionieren die Leitungstreiber scheinbar aber auch falsch herum, nur halt das was rauskommt ist invertiert, so ist es denkbar bei einer Softwaredekodierung das ganze hinterher richtig zu drehen. Ob das bei allen Leitungstreibern so ist weiß ich nicht, die Siemens und die Insevis hatten jedenfalls zumindest reproduzierbaren Datenmüll im Puffer.
Aber zurück zur Gretchenfrage, stimmt da nun das Handbuch oder nicht:ROFLMAO:?

Gruß
Mario
 
Zurück
Oben