TIA Mehrere FU V20 mit CPU1214 über CM1241 Modbus RTU ansteuern

WaSe

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe eine 1214 mit einem Kommunikationsmodul CM1241 und will 2 Sinamics V20 ansteuern. Die vorhandene Anlage hat bislang nur einen FU und damit funktioniert die Ansteuerung STW, ZST, HSW, HIW einwandfrei (ModBus RTU). Will ich jetzt einen 2. FU auch V20 ansteuern, kommen die Ansteuerbefehle durcheinander. Also läuft FU1 und ich will FU2 einschalten, geht FU1 aus, obwohl der Ein-Befehl anliegt. Fehlerauswertung mit Trace hat keine Ergbnisse gebracht, keinerlei Fehlerbits werden gesetzt.
Hat jemand ein Beispielprogramm für MEHRERE FUs? Wie gesagt mit einem FU funktioniert es, habe das Beispielprog von Siemens genommen.
Vielen Dank.
Gruß
Herbi
 
Hast du den FUs unterschiedliche Modbus-Adressen vergeben (P2021)? Im Auslieferungszustand ist diese 0, und wenn du von deinem Programm die 0 ansprichst, dann reagieren vermutlich beide darauf. Also unterschiedlich einstellen (1 und 2) und vom Programm aus auch explizit ansprechen.
 
die beiden FUs sind komplett gleich parametriert bis auf die Modbusadresse 1 + 2. So spreche ich die auch über DRIVE_ADDR an. Das funktioniert zum Teil auch, z.B. schalte ich FU 1 ein und wechsel dann zu DRIVE_ADDR2 und dabei geht FU1 aus. Es ist doch richtig, daß ich nur einen FB MODBUS_V20 und nur einen DB_ModBus_V20 benötige, oder?
Wie gesagt bei einem FU funktioniert das gut ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist doch richtig, daß ich nur einen FB MODBUS_V20 und nur einen DB_ModBus_V20 benötige, oder?
Was sind das für Bausteine? Was selbst-programmiertes oder von Siemens oder woher?
Wenn Du davon 2 Instanzen machst, dann musst Du ziemlich sicher auch noch die Kommunikation zwischen den 2 FU gegenseitig verriegeln/entkoppeln, wenn beide am selben RS485-Bus am selben CM1241 hängen. Wenn der Modbus-RTU-Master mit einem Modbus-RTU-Slave kommuniziert, dann muß er erst noch die Antwort vom Slave abwarten und eine kleine Nachpause machen, bevor er mit dem nächsten Slave kommunizieren darf.

Alternative: ein zweites CM1241 einbauen und eine eigene RS485-Verbindung zum zweiten VC20 verdrahten. Da brauchst Du bei der zweiten Instanz der Bausteine nur die Hardware-Adressen anpassen.

Harald
 
Die Bausteine sind die aus dem Siemens Beispiel FB MODBus_V20 mit dem dazugehörigen Instanz DB. Alles so gemacht wie in dem Beispiel beschrieben, funktioniert ja auchalles einwandfrei, solange ich nur einen FU betreibe.
Der Vorschlag mit den zwei Instanz DBs funktioniert leider nicht.
Werde wohl die Lösung mit einem zweiten CM1241 und eigenem Bus realisieren. Gehe davon aus, daß dies auf Anhieb funktioniert.
 
Die Bausteine sind die aus dem Siemens Beispiel FB MODBus_V20 mit dem dazugehörigen Instanz DB. Alles so gemacht wie in dem Beispiel beschrieben, funktioniert ja auchalles einwandfrei, solange ich nur einen FU betreibe.
Der Vorschlag mit den zwei Instanz DBs funktioniert leider nicht.
Werde wohl die Lösung mit einem zweiten CM1241 und eigenem Bus realisieren. Gehe davon aus, daß dies auf Anhieb funktioniert.
Hast du einen Link zu dem Siemens Beispiel? Ich kann mir fast nicht vorstellen, dass das nicht anders geht.
 
Ich habe mir das mal angesehen. In der Anleitung unter Kapitel 4 steht wie du das auf mehrere Antriebe erweiterst. Es reicht ein Aufruf des FBs mit nur einem Instanz DB so wie es dort steht.

Mir gefällt das Beispielprojekt überhaupt nicht, so würde ich niemals programmieren. Viel zu verwoben, von anderen Stellen wird auf Instanz-DBs geschrieben, sehr seltsam.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja, mittlerweile bin ich auch der Meinung "egal" wieviel FUs, nur ein FB und ein InstanzDB dazu. Nur schaffe ich es nicht mit 2 FUs.
Anbei mal ein Trace auf dem zu sehen ist wie ich die DRIVE_ADDR von 1 nach 2 wechsele und zeitgleich auch der Sollwert entsprechend angepaßt wird (10 -> 20). Soweit so gut. Aber kurze Zeit später schaltet sich der Antrieb 1 ab, obwohl immer noch DRIVE_ADDR = 2 ist und somit 1 gar nicht angesprochen wird. HIW zeigt FU 1 an, was sich meines Erachtens auch auf FU2 ändern müsste.
Sollwert FU1: 10, Sollwert FU2: 20
 

Anhänge

  • FU1 schaltet aus.PNG
    FU1 schaltet aus.PNG
    45,4 KB · Aufrufe: 14
Ich bin da auch nicht durchgestiegen, habs auch schnell wieder zugemacht. Ich verstehe nicht wie man etwas so einfaches wie ein paar Register lesen/schreiben so verfriemeln kann.
 
die Antwort vom Siemens support ....

Die Bausteine HMI und V20_MODBUS des Anwendungsbeispiel "SINAMICS V: Speed Control of a V20 with S7-1200 (TIA Portal) via USS® protocol/MODBUS RTU with HMI" ( https://support.industry.siemens.com/cs/ww/en/view/63696870 ) sind nicht KnowHow geschützt und können daher geöffnet und intern nachvollzoegen werden.

Die InOut Variablen STW und HSW werden abhängig von der IN Variable DRIVE_ADDR umkopiertz in die Statische Variable DRIVE[#drive_index].STW_IN_Internal z.B. in Schritt 4 im Netzwerk 7. Danach wird der Wert DRIVE[#drive_index].STW_IN_Internal über den MC_MASTER Baustein an den Antrieb mit der Adresse drive_index übertragen.
In Netzwrk 8 (Schritt 5) erfolgt im Prinzip die gleiche Prozedur, jedoch mit dem DRIVE[#drive_index].HSW_IN_Internal.
Daher wäre es ggf. sinnvoll die Variable drive_index, DRIVE[1].HSW_IN_Internal,DRIVE[1].STW_IN_Internal, DRIVE[2].HSW_IN_Internal,DRIVE[2].STW_IN_Internal, die Variable step, die variable REQ, _Done,_Error,_Status (Rückmeldungen der MB_Master_Instance) mitzutracen.
Dann erkennen Sie anhand von drive_index und REQ bzw. _Done/_Error ob DRIVE[1].HSW_IN_Internal oder DRIVE[2].HSW_IN_Internal erfolgreich oder nicht erfolgreich übertragen wurde an den Antrieb mit der Nummer in drive_index, sowie den Wert der Übertragen wurde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber kurze Zeit später schaltet sich der Antrieb 1 ab, obwohl immer noch DRIVE_ADDR = 2 ist und somit 1 gar nicht angesprochen wird.
Könnte es sein, daß der FU abschaltet wegen Kommunikationsausfall auf dem Bus?

Harald
 
die ganzen FehlerBits und Worte habe ich schon mal getract, kein einziger Fehler, und an dem V20 wird auch kein Fehler angezeigt.
 
Zurück
Oben