コントローラ(この場合はS7-1214)がRTUマスターである場合に、ModbusRTUプロトコルを使用して交換をプログラミングすることの複雑さについて長い間話したいと思っていました。最近、PLCとSinamics V20周波数変換器の間の交換を手伝うように頼まれました。それでは、問題の解決策を戦闘条件に近づけようとして、同時にメモを書いてみませんか。
実際のところ、ドイツ人自身がこのトピックを長い間カバーしていました。
SINAMICS V:USS®プロトコル/ MODBUS RTU with HMIを介したS7-1200(TIAポータル)を備えたV20の速度制御
この例を参照してください。視覚化、 ダイアログ、クエスト 、およびアプリケーションプログラムを拡張して、複数のインターフェイスを介して複数のV20インバーターをポーリングする機能を備えています(S7-1200では、バスケットに最大4つのRS-485 / 422ポートをインストールできます)。この例は非常にうまく行われ、非常にペダンティックです。Modbus TCPプロトコルを使用した通信の問題については、すでに触れましたが、Habréにあります。
したがって、微妙な違いについては再度説明しません。特にV20調査の場合は、私の観点から正しく便利に行う方法をすぐに説明します。周波数変換器の初期設定は、上記の例の付属のドキュメントを含むドキュメントに記載されています。入門として私たちにとって重要な点だけを取り上げましょう。
ネットワーク内のModbusスレーブアドレス:1
通信パラメータ:9600 8-Even-1
スレーブストレージレジスタの読み取り:
40110ZSW「ステータスワード」
40111HIW「現在の速度」
書き込み用のストレージレジスタ:
40100STW「コントロールワード」
40101HSW「速度リファレンス」
«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 .
, , . (), (), , .. - , :
, , , , . .
, , , . , , - «» . , , DataV20. :
(mode = 0) 40025. [0..4] of WORD. Real .
, . Modbus_Master DONE Error (, «» , — ).
, Modbus. , 10 , , , «» , 30. , , , , .
周波数変換器への3つの要求がすべて正常に完了すると、周波数変換器はPLCと安定して情報を交換していると想定します。したがって、関数ブロックの最後の行は次のようになります(最初に、DataV20データブロックにConnected boolean変数を追加します)。