シーメンスS7-1200 Modbus RTU通信及V3版指令功能

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

シーメンスS7-1200 Modbus RTU通信及V3版指令功能

第一部分:S7-1200 Modbus RTUCommunication

(一)概述

Modbus具有两种串行传输モード:分别为ASCII和RTU。Modbus是一种单マスター的主从通信モード,Modbus网络上只能有一个マスター存在,マスター在Modbus网络上ないアドレス,每个スレーブ必须有唯一的アドレス,スレーブ的アドレス範囲为0 - 247,among them0ブロードキャストアドレス,スレーブ的实际アドレス範囲为1-247。Modbus RTU通信以主从的方式进行データ传输,在传输的过程中Modbus RTUマスター是主动方,即マスター送信データリクエスト报文駅から。,Modbus RTUスレーブ戻るレスポンス报文。S7-1200以下モジュールサポート Modbus RTUCommunication:

通信モジュール/通信板订货号
CM1241 RS2326ES7241-1AH32-0XB0
CM1241 RS422/4856ES7241-1CH32-0XB0
CB 1241 RS4856ES7241-1CH30-1XB0

注意:

(1)使用通信モジュールCM 1241 RS232作为Modbus RTUマスター时,只能与一个スレーブ通讯。
(2)使用通信モジュールCM 1241 RS485作为Modbus RTUマスター时,则允许建立最多与 32 个スレーブ的通讯。

(3)使用通信板CB 1241 RS485时,CPU 固件必须为 V2.0 或更高版本,且使用软件必须为STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。

(二)Modbus RTU指令版本与限制

随着博途软件和 S7-1200 CPU 固件的不断更新,S7-1200 Modbus RTU 指令也出现了不同的版本。用户需要根据使用的软件和硬件,正确選択使用符合要求的 S7-1200 Modbus RTU 指令来実装 Modbus RTU Communication,其软件和硬件要求和指令版本説明如下。

(1)博途中的 S7-1200 Modbus RTU 指令

博途中提供了2个版本的 Modbus RTU指令。如下图 1 所示:

  • 早期版本的 Modbus RTU 指令(图1. 中 MODBUS (V2.2))仅可経由 CM1241 通信モジュール或 CB1241 通信板进行 Modbus RTU Communication。
  • 新版本的 Modbus RTU 指令(图1. 中 MODBUS(RTU) V3.0)扩展了 Modbus RTU 的功能,该指令除了サポート CM1241 通信モジュール、CB1241 通信板,还サポート PROFINET 或 PROFIBUS Distributed I/O 机架上的 PTP 通信モジュール実装 Modbus RTU Communication。

(2)新版本 Modbus RTU 指令的使用限制条件
新版本 Modbus RTU 指令経由CM1241通信モジュール或CB1241通信板进行Modbus RTU通信时,需要满足如下条件:
a. S7-1200 CPU 的固件版本不能低于V4.1
b. CM1241通信モジュール V2.1 以上或 CB1241

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト

图1. 2つ版本 Modbus RTU 指令

(三)common problems

(1)S7-1200 是否サポート Modbus ASCII 通信モード?

シーメンス不提供サポート上述通信モード的的现成指令,需要用户自己用自由口モードプログラミング。

(2)Modbus RTU指令V1和V22つ版本違いは何ですか??

Modbus RTU指令版本 V2 将参数 “REQ” 和 “DONE” 追加到“MB_COMM_LOAD”指令。而且,“MB_MASTER”和“MB_SLAVE ”指令的“MB_ADDR ”参数现在允许一个 UInt 值以进行扩展寻址。

(3)同一CPU程序中是否可以同使用するときV1和V22つ不同版本的Modbus RTU指令?

不能在同一CPU 程序中同使用するときV1(V1.x)和V2(V2.y)指令版本。用户程序的 Modbus 指令必须具有相同的主版本号;主版本组内的各个指令可具有不同的次版本号。

(4)S7-1200 通信モジュールCM1241是否可作为Modbus RTUマスター或作为Modbus RTUslave?

对S7-1200 通信モジュールCM1241组态并プログラミング调用“MB_COMM_LOAD”指令,可将其設定为Modbus RTU通信モード。経由プログラミング调用“MB_MASTER”指令,S7-1200 通信モジュールCM1241可作为Modbus RTUmaster,或调用“MB_SLAVE”指令,S7-1200 通信モジュールCM1241可作为Modbus RTUslave。

注意:无论S7-1200 通信モジュールCM1241作为Modbus RTUマスターまだスレーブ,都呼び出しが必要です“MB_COMM_LOAD”指令进行プログラミング。

(5)S7-1200 CM1241/CB1241 Modbus RTU 通信是否サポート两位ストップ·ビット?

サポート。

注意:S7-1200 CM1241/CB1241属性里可以設定ストップ·ビット, 但是该モジュール用于 Modbus 通信时,此設定的ストップ·ビット无效, 需要在 Modbus_Commload 指令その背景は DB 里 Static 修改 STOP_BITSストップ·ビット数值为 2。如下图 2-3所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト1

图2. CM1241 設定ストップ·ビット参数

Modbus_Commload 指令その背景は DB 里 Static 修改 STOP_BITSストップ·ビット数值为 2(デフォルト値=1)

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト2

图3. 修改 Modbus RTU 通信ストップ·ビット

PART 02

第二部分:V3版指令功能

(一)Modbus RTU指令概述

博途V13 SP1版本软件中提供了2个版本的Modbus RTU指令:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト3

图1. 2つ版本Modbus RTU指令

(1)早期版本的Modbus RTU指令(图1. 中 MODBUS (V2.2))仅可経由CM1241通信モジュール或CB1241通信板进行Modbus RTUCommunication。
(2)新版本的 Modbus RTU指令(图1. 中 MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了サポートCM1241通信モジュール、CB1241通信板,还サポート PROFINET 或 PROFIBUS Distributed I/O 机架上的PTP通信モジュール実装Modbus RTUCommunication。

(3)新版本 Modbus RTU指令所サポート的PTPモジュール如下图2所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト4

图2. 新版本 Modbus RTU指令所サポート的PTPモジュール

(二)Modbus RTU指令实例环境介绍

新版本Modbus RTU指令中包含Modbus RTU マスター指令和スレーブ指令。本記事以 CPU1217C+CM1241 RS422/485+ET200SP CM PTP モジュール为例,介绍新版本 Modbus RTU 指令主从通信的プログラミング步骤。among themCPU 机架CM1241 RS422/485作为Modbus RTUslave,分布式机架ET200SP 中 CMPTP モジュール作为Modbus RTUmaster。

1、网络構造图如下:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト5

图3. Modubus RTU 网络通信構造图

2、本项目で使用する。到的硬件和软件如下:

(1)硬件:
① CPU1217C (订货号:6ES7 217-1AG40-0XB0),固件版本V4.1.3
② CM1241 RS422/485モジュール (订货号:6ES7 241-1CH32-0XB0),固件版本V2.1
③ 24V 电源PS307(订货号:6ES7307-1KA02-0AA0)
④ ET200 SP IM155-6PN HF(订货号:6ES7155-6AU00-0CN0)
⑤ CM PTPモジュール(订货号:6ES7137-6AA00-0BA0)

(2)软件:
① 博途SP1 UP 9

(三)实例之デバイス组态

1、ConfigurationCM1241 RS422/485モジュール

(1)打开デバイス视图,追加S7-1200CPU,并在硬件目录里找到“通信モジュール”→“点到点”→“CM1241(RS422/485)”,拖拽此モジュール至CPU左侧即可,如下图4所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト6

图4. 追加 CM 1241 RS422/485モジュール

注意:固件版本>=V2.1 的CM 1241 RS422/485モジュール,才サポート新版本Modbus RTU指令。

(2)接下来,在“デバイス视图”中用鼠标选中CM1241(RS422/485)モジュール,在“属性”→“ポート组态”中設定此モジュール硬件接口参数,本例以传输率=9.6Kbps,パリティ検査=パリティなし,data bit=8位文字,stop bit=1为例。如CM 1241 ポート组态設定如下图5所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト7图5. CM1241 RS422/485 モジュールポート组态

(3)最后在“ハードウェア識別子”里確認一下ハードウェア識別子为269(该参数在程序プログラミング中会被使用),如下图6所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト8

图6 ハードウェア識別子

(4)另外,S7-1200 还提供了系统和时钟存储器功能,为了便于后续指令,建议使能该功能。在CPU “属性”→“常规”→“系统和时钟存储器”使能系统和时钟存储器功能,如图7所示。

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト9

图7. 系统和时钟存储器功能

2、ConfigurationET200 SP CM PtP モジュール

(1)插入一个ET200SP分布式站点,打开网络视图并拖入一个ET200SP站点,并将其分配给相应的IO Controller(本例CPU1217C 为 IO Controller),如图8所示:
シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト10

图8. 插入ET200SP站点

(2)ConfigurationET200SP 站点,在ET200SP的"デバイス视图"环境下,为ET200SP 站点追加信号、通信モジュール和サーバー·サーバーモジュール,在本例中只追加了CM PTPモジュール和サーバー·サーバーモジュール。在ET200SP"デバイス视图"中用鼠标选中CM PTP,在“属性”→“常规”→“Interface”→“操作モード”中設定此モジュール硬件接口参数,本例设定“指定工作モード":"ハーフデュプレックス(RS485)2线制操作";"受信线路的初始ステータス":"无"。如下图9所示:
シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト11

图9. CM PTP 操作モード

注意:ET200SP站点中,サーバー·サーバーモジュール是必须组态的。サーバー·サーバーモジュール随接口モジュール一起采购,无需单独购买。ET200SP接口モジュール需要为其分配IPアドレス和Device Name, 有关ET200 SP DistributedIO 组态详细步骤,请参照《ET200 SP 使用クイック·エントリー》,本例不再説明Profinet IO通信的相关設定与步骤。《ET200 SP 使用クイック·エントリー》下载链接:

https://support.industry.siemens.com/cs/cn/zh/view/78304711

(3)接下来,在“属性”→“常规”→“Interface”→“ポート组态”中設定此モジュールポート组态参数,本例设定"Protocol":"Freeport/Modbus";"ポート·パラメータ"設定:传输率=9.6Kbps,パリティ検査=パリティなし,data bit=8位文字,stop bit=1为例。ポート组态設定如下图10所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト12

图10. CM PTP ポート组态

(4)最后需要在“ハードウェア識別子”里確認一下CM PTP モジュールハードウェア識別子,该参数在程序プログラミング中会被使用。

(四)实例之软件プログラミング

1、Modbus RTU マスタープログラミング

Modbus RTUマスタープログラミング呼び出しが必要ですModbus_Comm_Load 指令和Modbus_Master 指令,among themModbus_Comm_Load 指令経由 Modbus RTU 协议对通信モジュール进行组态,Modbus_Master 指令可経由由 Modbus_Comm_Load 指令组态的ポート作为 Modbus マスター进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Master 指令的(静态)MB_DB parameter。本例中分布式机架ET200SP 中 CM PTP モジュール作为Modbus RTUmaster,其相关プログラミング步骤如下:

(1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Master 指令。如图11所示:
シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト13

图11. 拖入Modbus RTU マスター指令

Modbus_Comm_Load指令各参数意义如下表1所示:

引脚説明
REQ上昇エッジトリガー
PORT通信ポート的ハードウェア識別子
BAUDボーレート選択:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200
PARITY奇偶检验選択:0-无;1-odd parity;2-even parity
FLOW_CTRLフロー制御制選択:0-(デフォルト値)フロー制御なし制
RTS_ON_DLYRTS延时選択:0-(デフォルト値)
RTS_OFF_DLYRTS关断延时選択:0-(デフォルト値)
RESP_TOレスポンス·タイムアウト:デフォルト値 = 1000 ms。MB_MASTER 允许用于スレーブレスポンス的时间(以毫秒为単位)。
MB_DB对 Modbus_Master 或 Modbus_Slave 指令その背景はデータ块的引用。
MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。
DONEもし上一个リクエスト完成并且ないエラー,DONE 位将变为 TRUE 并保持一个周期。
ERRORもし上一个リクエスト完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的エラー代码仅在 ERROR = TRUE 的周期内有效。
STATUSポート组态エラー代码,请参照TIA 软件オンライン帮助或S7-1200 系统手册。

表1 MB_COMM_LOAD命令パラメータ意义

Modbus_Master指令各参数意义如下表2所示:

引脚説明
EN使能端
REQTRUE = リクエスト向 Modbus スレーブ送信データ ,建议采用上昇エッジトリガー
MB_ADDRModbus RTUslave address。デフォルトアドレス範囲:0至247;アドレス範囲の拡張:0至65535。值0被保留用于将メッセージ广播到すべてのModbusslave。
MODEモード選択:指定リクエストタイプ(読み取り或写入)。
DATA_ADDRスレーブ中的開始アドレス:指定Modbusスレーブ中将供アクセス的データ的開始アドレス。
DATA_LENデータ長さ:指定要在该リクエスト中アクセス的位数或字数。
DATA_PTRデータ指针:指向要进行データ写入或データ読み取り的标记或データ块アドレス。
DONE完成位:上一リクエスト完了且ない出错后,DONE 位将保持为 TRUE 1回のスキャンサイクル时间。
BUSYFALSE – Modbus_Master 无激活命令:
TRUE – Modbus_Master 命令执行中
ERROR对 Modbus_Master 或 Modbus_Slave 指令その背景はデータ块的引用。
MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。
STATUSもし上一个リクエスト完成并且ないエラー,DONE 位将变为 TRUE 并保持一个周期。
ERRORもし上一个リクエスト完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的エラー代码仅在 ERROR = TRUE 的周期内有效。
STATUSエラー代码

表2 Modbus_Master命令パラメータ意义

注意:
①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其入力位“REQ”需使用上昇エッジトリガー,本例中该入力位采用 “FirstScan” 系统存储器位。
②Modbus_Comm_Load指令背景データ块中的静态变量“MODE”用于説明PTPモジュール的工作モード,有效的工作モード包括:

  • 0 = 全二重 (RS232)
  • 1 = 全二重 (RS422) 四线制モード(点对点)
  • 2 = 全全二重 (RS 422) 四线制モード(多点マスター,CM PtP (ET 200SP))
  • 3 = 全全二重 (RS 422) 四线制モード(多点スレーブ,CM PtP (ET 200SP))
  • 4 = ハーフデュプレックス (RS485) 二线制モード

该静态变量“MODE”デフォルトデータ为0(RS232 全二重モード),需要根据CM PTPモジュール实际组态修改该数值,本例中CM PTPモジュール工作在RS485ハーフデュプレックスモード需要将该数值修改为4,如图12所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト14

图12. Modbus_Comm_Load背景データ块静态变量“MODE”修改为

③Modbus_Master指令的“DATA_PTR”参数用于指向要进行データ写入或データ読み取り的データエリアアドレス,该データエリアサポート优化アクセス的データ块或者非优化(標準的)データ块,建议采用非优化アクセス的データ块。
本例で使用する。的データ区为非优化アクセス的データ块,在データ块的属性中キャンセル“优化的块アクセス”即可将データ块修改为非优化アクセス的データ块(鼠标右クリックデータ块,Choice“属性”,Cancel“优化的块アクセス”),如图13所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト15

图13. 設定データ块为非优化アクセス

当Modbus_Master指令的“DATA_PTR”指向非优化アクセス的データ块时,该入力参数需要使用指针方式填写如P#DB3.DBX0.0 WORD 5 方式填写。
④当Modbus RTU网络中存在多个modbus RTUスレーブ或一个modbus RTUスレーブ同时需要読み取り操作。和書き込み操作。,则呼び出しが必要です多个Modbus_Master指令,Modbus_Master指令之间需要采用ポーリング方式调用。
下图14. 用于説明2つModbus_Master指令ポーリング调用的方式。

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト16

图14.Modbus_Masterポーリング调用方式

(2)插入"Pull or plug of modules" 中断OB83

本例中Modbus RTUマスターモジュールインストール在分布式IO站点上,因此程序中需要考虑分布式IO站点故障、CM PTP モジュール插拔モジュール等故障。DistributedIO站点中插出、拔入モジュール时,オペレーティングシステム都会调用一次OB83。経由OB83接口区的入力变量“16#Event_Class”判断故障的モジュール和タイプ:事件タイプ16#39表示モジュール被拔出,事件タイプ16#38表示モジュール被插入。CM PTP モジュール被重新插入的时候,需要在中断OB83中调用Modbus_Comm_Load 指令对通信モジュール进行重新组态,如图15所示。

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト17

图15. OB83中再次调用Modbus_Comm_Load 指令

注意:
①OB83 中调用Modbus_Comm_Load指令その背景はデータ块需要与OB1中调用的Modbus_Comm_Load指令その背景はデータ块相同。
②CM PTPモジュール的ハードウェア識別子也可以在"PLC变量"--->"系统常数"中查询,如图16所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト18

图16. 系统常量

(3)插入"Rack or Station failure" 中断OB86

DistributedIO站点故障和恢复时,オペレーティングシステム都会调用一次OB86。経由OB86接口区的入力变量“16#Event_Class”判断故障的モジュール和タイプ:事件タイプ16#39表示站点故障,事件タイプ16#38表示站点恢复。CM PTP モジュール所在的IO站点恢复时,需要在中断OB86中调用Modbus_Comm_Load 指令对通信モジュール进行重新组态,如图17所示:

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト19

图17. OB86中调用Modbus_Comm_Load 指令

注意:
①OB86 中调用Modbus_Comm_Load指令その背景はデータ块需要与OB1中调用的Modbus_Comm_Load指令その背景はデータ块相同。
②DistributedIO 站点的ハードウェア識別子也可以在"PLC变量"--->"系统常数"中查询。

2、Modbus RTU スレーブプログラミング

Modbus RTUスレーブプログラミング呼び出しが必要ですModbus_Comm_Load 指令和Modbus_Slave 指令,among themModbus_Comm_Load 指令経由 Modbus RTU 协议对通信モジュール进行组态,Modbus_Slave 指令可経由由 Modbus_Comm_Load 指令组态的ポート作为 Modbus スレーブ进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Slaver 指令的(静态)MB_DB parameter。本例中CPU 机架CM1241 RS422/485作为Modbus RTUslave,其相关プログラミング步骤如下:

(1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Slave 指令。如图18所示:
シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト20

图18. 拖入Modbus RTU スレーブ指令

Modbus_Slave指令各参数意义如下表3所示:

引脚説明
MB_ADDRModbus スレーブ的標準寻址:
標準寻址範囲(1 to 247)
扩展寻址範囲(0 to 65535)
MB_HOLD_REGデータ指针,指向Modbus レジスタを保持する。的アドレス, Modbus レジスタを保持する。可以为M存储区或DBdata area。
もしModbus レジスタを保持する。为DBdata area,则DBデータ区サポート优化アクセス的データ块或非优化アクセス的データ块,建议采用非优化アクセス的データ块。
NDR可用的新データ:FALSE - 无新データTRUE – 表示新データ已由 Modbus メインステーション書き込み
もし上一个リクエスト完成并且ないエラー,NDR 位将变为 TRUE 并保持一个周期。
DRRead switch status:FALSE - 无新データTRUE –表示该指令已将 Modbus マスター受信到的データストア在目标エリア中。
もし上一个リクエスト完成并且ないエラー,DR 位将变为 TRUE 并保持一个周期。
ERRORもし上一个リクエスト完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。もし执行因エラー而终止,则 STATUS 参数中的エラー代码仅在 ERROR = TRUE 的周期内有效。
STATUSエラー代码

表3 Modbus_Slave命令パラメータ意义

注意:
①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其入力位“REQ”需使用上昇エッジトリガー,本例中该入力位采用 “FirstScan” 系统存储器位。
②Modbus_Comm_Load指令背景データ块中的静态变量“MODE”用于説明PTPモジュール的工作モード,有效的工作モード包括:

  • 0 = 全二重 (RS232)
  • 1 = 全二重 (RS422) 四线制モード(点对点)
  • 2 = 全全二重 (RS 422) 四线制モード(多点マスター,CM PtP (ET 200SP))
  • 3 = 全全二重 (RS 422) 四线制モード(多点スレーブ,CM PtP (ET 200SP))
  • 4 = ハーフデュプレックス (RS485) 二线制モード

该静态变量“MODE”デフォルトデータ为0(RS232 全二重モード),需要根据CM1241 RS422/485モジュール实际组态修改该数值,本例中CM1241 RS422/485モジュール工作在RS485ハーフデュプレックスモード需要将该数值修改为4,如何修改“MODE”静态变量见图12所示。

③Modbus_Slave指令的“MB_HOLD_REG”用于指向Modbus レジスタを保持する。的データエリアアドレス,该データエリアサポート优化アクセス的データ块或者非优化(標準的)データ块,建议采用非优化アクセス的データ块。本例で使用する。的データ区为非优化アクセス的データ块,固该入力参数需要使用指针方式填写如P#DB6.DBX0.0 WORD 100 方式填写。如何在データ块的属性中キャンセル“优化的块アクセス”,见图13所示。将程序下载到PLC中,并使用Profibus DP通信电缆将CM1241 RS422/485与CM PTPシリアルポートモジュール连接起来,即可测试Modbus RTU通信了。

(五)common problems

1. 新版本 Modbus RTU指令的使用存在するか些限制条件?
新版本 Modbus RTU指令経由CM1241通信モジュール或CB1241通信板进行Modbus RTU通信时,需要满足如下条件:

a. S7-1200 CPU 的固件版本不能低于V4.1;
b. CM1241通信モジュール或CB1241通信板的固件不能低于V2.1。

S7-1200 V4.0 固件CPU可以経由固件更新到V4.1版本,V2.0固件的CM1241通信モジュール也可以経由固件更新的方式更新到V2.1版本。相关固件更新的方法请参照 S7-1200 固件更新 。

2 .Modbus_Comm_Load指令背景データ块中的静态变量“MODE”的作用是什么?なぜか。一般项目中,都需要对该变量进行修改?
新版本的 Modbus RTU指令扩展了Modbus RTU的功能,该指令除了サポートCM1241通信モジュール、CB1241通信板还サポート PROFINET 或 PROFIBUS Distributed I/O 机架上的PTP通信モジュール実装Modbus RTUCommunication。而分布式 I/O 机架上的PTP通信モジュール可以サポート多种工作モード,以ET200SP CM PtPモジュール(订货号:6ES7137-6AA00-0BA0)为例,其可以サポートRS232、RS485以及RS422等多种工作モード。Modbus_Comm_Load指令背景データ块中的静态变量“MODE”则用于定义PTPモジュール的工作モード。“MODE”的デフォルト数值为0,代表“全二重 (RS232)”工作モード,实际项目组态中则需要根据实际工作モード对该变量进行修改。

3. Modbus_Comm_Load指令能否在启动组织块OB100中调用?
Modbus_Comm_Load指令不建议在启动组织块OB100中调用。新版本的Modbus RTU指令扩展了Modbus RTU的功能,该指令サポート PROFINET 或 PROFIBUS Distributed I/O 机架上的PtP通信モジュール実装Modbus RTUCommunication。オペレーティングシステム呼び出しが必要です読み取りデータ記録和写入データ記録等指令来実装与分布式I/O机架上PtPモジュール的Modbus RTUCommunication。読み取りデータ記録和写入データ記録指令为异步读命令を書く。,指令的执行需要N个スキャンサイクル,所以不建议Modbus_Comm_Load指令在启动组织块OB100中调用。

4. 如何查询Modbus RTU通信エラー时的エラー代码?
以Modbus_Master指令为例,当通信出现エラー时,Modbus_Master指令的“ERROR”出力位将变为 TRUE 但是只保持1回のスキャンサイクル,所以経由TIA 软件程序モニタリング时无法查询到エラー。Modbus_Master指令“STATUS” 参数中的エラー代码仅在“ERROR” = TRUE 的スキャンサイクル内有效,为了取得了Modbus RTU通信エラー的エラー代码我们可以采用下图19. 方式プログラミング。

シーメンスS7-1200 Modbus RTU通信及V3版指令功能イラスト21

图19. 取得STATUS

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.