Modbus RTU Master-Programmierung am Beispiel von Simatic S7-1200- und Sinamics V20-Laufwerken

Ich wollte schon lange über die Feinheiten der Programmierung des Austauschs über das Modbus RTU-Protokoll sprechen, wenn der Controller (in unserem Fall S7-1214) der RTU-Master ist. Kürzlich wurde ich gebeten, beim Austausch zwischen der SPS und dem Sinamics V20-Frequenzumrichter zu helfen. Warum also nicht gleichzeitig eine Notiz schreiben und versuchen, die Lösung des Problems den Kampfbedingungen näher zu bringen?





Tatsächlich haben sich die Deutschen selbst lange mit diesem Thema befasst:





SINAMICS V: Geschwindigkeitsregelung eines V20 mit S7-1200 (TIA Portal) über USS®-Protokoll / MODBUS RTU mit HMI





In diesem Beispiel ist es sehr sinnvoll gestaltet, mit Visualisierung,  Dialogen und Quests  und der Möglichkeit, das Anwendungsprogramm zu erweitern, um mehrere V20-Wechselrichter ĂĽber mehrere Schnittstellen abzufragen (mit S7-1200 können Sie bis zu 4 RS-485/422-Ports in seinem Warenkorb installieren). Das Beispiel ist sehr gut und sehr pedantisch gemacht. Ich habe die Probleme der Kommunikation mit dem Modbus-TCP-Protokoll bereits frĂĽher angesprochen, sie betreffen HabrĂ©.





Daher werde ich einige der Nuancen nicht noch einmal erläutern, sondern nur sofort schreiben, wie dies aus meiner Sicht richtig und bequem zu tun ist, insbesondere im Fall der V20-Umfrage. Die Ersteinrichtung des Frequenzumrichters ist in der Dokumentation beschrieben, einschließlich der zugehörigen Dokumentation zum obigen Beispiel. Lassen Sie uns nur die Punkte herausnehmen, die für uns als einleitende Punkte wichtig sind.





Modbus-Slave-Adresse im Netzwerk: 1





Kommunikationsparameter: 9600 8-Even-1





Slave-Speicherregister lesen:





40110 ZSW "Statuswort"





40111 HIW "Aktuelle Geschwindigkeit"





Speicherregister zum Schreiben:





40100 STW "Steuerwort"





40101 HSW "Geschwindigkeitsreferenz"





«Telegram off time (ms)» P2014[0] , 2000 (2 ), 130 . Modbus , , 130 , Fault 72.





. . S7-1214 1241 RS-485/422:





Step 7 V15.1 Update 4, CPU — 4.3.





, . Simatic : Modbus_Comm_Load (, ) Modbus_Master ( / /). FB Modbus_Comm_Load , Modbus_Master — , , , , ( ). , ( ) .





, , , SCL. ModbusMasterV20 SCL. « », .. . , Modbus_Master . , , , — «» , .









Init (Bool) — ,





PORT (PORT) —





BAUD (UDINT) —





STOP_BITS (USINT) — «»





PARITY (USINT) — , 0 — , 1 — odd, , 2 — even,





Step UInt, « » « »





Modbus RTU





, .





1.





#instModbusCommLoad.MODE := 4; // RS-485 4!





#instModbusCommLoad.STOPBITS := #STOP_BITS;





Modbus_Comm_Load, «» . , , . , () . ,     , , , . -, :





MODE , . , RS-485 4. 0, .





STOP_BITS — .





Modbus_Comm_Load. PORT ( ) . BAUD PARITY — — «» , . MB_DB . P2P_MB_BASE, Modbus_Master. «» , :





: .





«» CASE, , , .. .





Modbus Master :





#instModbusMaster(REQ := TRUE,
	MB_ADDR := 1,
	MODE := 0,
	DATA_ADDR := 40110,
	DATA_LEN := 2,
	DATA_PTR := #ZSWHIW);
      
      







REQ — . TRUE, , FALSE — . ( Modbus RTU S7-300/S7-400), TRUE





MB_ADDR — Modbus RTU. = 1.





MODE — , 0 — , 1 —





DATA_ADDR — . (  4), 110. Modbus ( RTU, TCP) «» «». . . 2 , 40110. Modbus 3. 3 Modbus. 40110, 109. , . , . , . ( ), , . « 0 », DATA_ADDR 30001. , - , «», . 16 , , 15 . ? 17. .





DATA_LEN — , 2





DATA_PTR — , «» . , , , . — STAT . , , , ( ). , , /.





FB:





,





ZSW — ( )





HIW —





, . , :





- , ( , №1). — - .





, , . , . , , «» , . , « ». . — . , Init . - .





OB1 CPU:





FirstScan «» OB. , CPU.





Port. Step 7, :





, . , , :





- , . ZSW:





Low enabled . , №15, , , 0, 1. watch table , , — , :





, . , , , , (fault, â„–3).





, WORD , - .





, . , — . , , - . DataV20:





, Inv :





- :





, Real, . , , . , , , .





— . .





:





, , , . , . , V20Data , Real.





â„–1, â„–2.





, :





. , , , / CPU.





. , . (MODE), 1, , . , .





, , — . ( ) . . , . , , «» ( ) , Invalid data. , «» , V20 . , , , . , «Control by PLC», . RTFM, !





, ( , ). , 0 16384. . , .





DataV20 «»:





V20 , , , .. 50 . , modbus.





, №1 ( ), №2 , . «» , , .





DataV20 .





25 , Running .





, V20, .





, , . (), (), , .. - , :





, , , , . .





, , , . , , - «» . , , DataV20. :





(mode = 0) 40025. [0..4] of WORD. Real .





, . Modbus_Master DONE Error (, «» , — ).





, Modbus. , 10 , , , «» , 30. , , , , .





Wir gehen davon aus, dass der Frequenzumrichter Informationen stabil mit der SPS austauscht, wenn alle drei Anforderungen erfolgreich abgeschlossen wurden. Daher lautet die allerletzte Zeile unseres Funktionsblocks wie folgt (wir fĂĽgen zuerst die boolesche Variable Connected im Datenblock DataV20 hinzu):












All Articles