
2024-11-02 12:36 点击次数:171
S7-1200 援救Modbus RTU通讯样式的模块可算作Modbus RTU主站。以下以 CPU1215C DC/DC/DC和CM1241 RS485 模块为例大色网,先容S7-1200 Modbus RTU 主站通讯组态及编程行为。
硬件和软件需求及所完成的通讯任务:
硬件: ① CPU1215C DC/DC/DC (订货号: 6ES7 215-1AG31-0XB0) ② CM1241 RS485 (订货号:6ES7 241-1CH30-0XB0) ③ PS 307电源(订货号:6ES7307-1KA02-0AA0) ④ PC(带以太网卡) ⑤ TP以太网电缆
软件: ① STEP 7 Professional V11 SP2 UPD4+HSP ② ModSim(该软件是第三方软件,不错从 Internet 网罗下载) 所完成的通讯任务: 将Modbus RTU从站ModSim中Modbus地址从40001运转的5个字中的数据,辩认读取到Modbus RTU主站CPU1215C 中地址从DB1.DBW0运转的5 个字中。
1.组态Modbus RTU 通讯模块
在硬件目次里找到“通讯模块”→“点到点”→“CM1241(RS485)”,双击或拖拽此模块至CPU左侧即可,如下图1所示:
图1 组态通讯模块
接下来,在“拓荒视图”顶用鼠标选中CM1241(RS485)模块,在“属性”→“端口组态”中配置此模块硬件接口参数。如下图2所示:
以下以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,罢手位=1,其它保抓默许确立为例。
图2 RS485 端口确立
临了在“硬件标记符”里说明一下硬件标记符为271,如下图3所示:
图3 硬件标记符
2.添加启动OB
在模样树下弃取“CPU1215C DC/DC/DC”→“法式块”→“添加新块”,在弹出的窗口中弃取“OB 组织块”→ “Startup”,添加启动OB 100,如下图4所示:
图4 添加启动OB
3.调用MB_COMM_LOAD领导
为使端口一启动就被确立为Modbus RTU通讯样式,可在OB 100中调用“MB_COMM_LOAD”领导。调用“MB_COMM_LOAD”领导时会自动掸出创建相应布景数据块的界面,如下图5所示:
图5 调用MB_COMM_LOAD领导
点击“说明”为该领导创建布景数据块后,为各输入/输出引脚分派地址。尤其需扫视MB_DB输入引脚需指向“MB_MASTER”领导的布景数据块,如下图6所示:
扫视: “MB_COMM_LOAD”领导输入位“REQ”需使用高潮沿触发。由于OB 100只在S7-1200启动时实行一次,因此,此例中将“REQ”设为“TRUE”。
图6 MB_COMM_LOAD领导
MB_COMM_LOAD领导参数意旨如下表1所示:
引脚
EN
REQ
PORT
BAUD
PARITY
FLOW_CTRL
RTS_ON_DLY
RTS_OFF_DLY
RESP_TO
反应超时: 默许值 = 1000 ms。MB_MASTER 允许用于从站反应的时刻(以毫秒为单元)。
MB_DB
对 MB_MASTER 或 MB_SLAVE 领导所使用的布景数据块。
DONE
完成位:领导实行完成且未出错置1
ERROR
异常位:0-未检测到异常;1-检测到异常。在参数STATUS中输出异常代码。
STATUS
表1 MB_COMM_LOAD领导参数意旨
4.创建DATA_PTR数据发送、接受缓冲区
通过“法式块”→ “添加新块”,弃取“数据块(DB)”创建 DB 块,弃取“法式与S7- 300/400兼容” ,点击“说明”键。在DB中创建数据类型为5个字的数组,如下图7所示:
扫视:DATA_PTR数据发送、接受缓冲区使用的DB打听类型必须是法式与S7- 300/400兼容。
图7 创建DATA_PTR 数据发送、接受缓冲区
5.调用MB_MASTER领导
在OB1中调用“MB_MASTER”领导,调用该领导时会自动掸出创建相应布景数据块的界面,如下图8所示:
图8 调用MB_MASTER领导
点击“说明”为该领导创建布景数据块后,并为各输入/输出引脚分派地址,如下图9所示:
扫视:“MB_MASTER”领导的输入位“REQ”必须使用高潮沿触发。
以下以S7-1200算作Modbus RTU主站,用F03功能码读取Modbus RTU从站2,从Modbus地址40001运转的五个字,接受的数据存放在缓冲区DB3.DBW0运转区域为例。确立如下所示:MB_ADDR=2,MODE=0,DATA_ADDR=40001,DATA_LEN=5。
地址对应联系如下表2所示:
Modbus RTU主站CPU1215C 数据缓冲区地址 Modbus RTU从站Modbus地址 DB3.DBW0 40001 DB3.DBW2 40002 DB3.DBW4 40003 DB3.DBW6 40004 DB3.DBW8 40005表2 Modbus地址对应联系
图9 MB_MASTER领导
MB_MASTER领导参数意旨如下表3所示:
引脚 讲解EN
使能端
REQ
在高潮沿实行该领导,苦求将数据发送或读取到Modbus从站
MB_ADDR
Modbus RTU从站地址。默许地址界限:0至247;推广地址界限:0至65535。值0被保留用于将讯息播送到所有Modbus从站。
MODE
样式弃取:指定苦求类型
DATA_ADDR
从站中的肇始地址:指定Modbus从站中将供打听的数据的肇始地址。
DATA_LEN
数据长度:指定要在该苦求中打听的位数或字数。
DATA_PTR
数据指针: 指向要写入或读取的数据的 M 或 DB 地址(DB打听类型必须是法式与S7-300/400兼容)。
DONE
完成位:上一苦求已完成且莫得出错后,DONE 位将保抓为 TRUE 一个扫描周期时刻。
BUSY
0 – 无正在进行的 MB_MASTER 操作; 1 – MB_MASTER 操作正在进行
EEROR
异常位: 上一苦求因异常而断绝后,ERROR 位将保抓为 TRUE 一个扫 描周期时刻。 STATUS 参数中的异常代码值仅在 ERROR =TRUE 的一个扫描周期内灵验。
STATUS
异常代码
表3 MB_MASTER领导参数意旨
对于MODE,DATA_ADDR,DATA_LEN可不才表4中巡逻:
MB_MASTER Modbus功能Modbus地址参数
地址类型
Modbus数据长度参数
Modbus功能
样式0读取
00001到09999
输出位
1到2000
01
10001到19999
输入位
1到2000
02
30001到39999
输入寄存器
1到125
04
40001到49999
400001到465535(推广)
保抓寄存器
1到125
03
样式1 写入00001到09999
输出位
1(单个位)
05
40001到49999
400001到465535(推广)
保抓寄存器
1(单个字)
06
00001到09999
输出位
2到1968
15
40001到49999
400001到465535(推广)
保抓寄存器
2到123
16
twitter 拳交 样式2 有些Modbus从站不援救使用Modbus功能05H或06H写入单个位或字。在这么的情况下,可通过样式2强制使用Modbus功能15H或16H写入单个位或字写入
00001到09999
输出位
2到1968
15
40001到49999
400001到465535(推广)
保抓寄存器
1到123
16
样式11读出从站的通讯情状字和事件计数器:情状字指挥领导的实奇迹态(0:未在实行;0xFFFF:正在实行)。 每次收效传送一条讯息时,事件计数器值将递加。使用该功能时,忽略“MB_MASTER”领导的 DATA_ADDR 和 DATA_LEN 参数。
样式80通过读取异常代码 (0x0000) 查验从站情状:每个苦求1个字
样式81通过会诊代码 0x000A 复位从站的事件计数器:每个苦求1个字
表4 MB_MASTER Modbus功能表
6. Modbus 从站软件确立
扫视:Modbus RTU从站遴荐ModSim软件测试,该软件是第三方软件,不错从 Internet 网罗下载。
在通达的ModSim软件中缔造磋磨,h并确立RTU样式的参数:波特率Baud=9600,数据位Data=8,罢手位Stop=1,校验Parity=NONE,如下图10所示:
图10 缔造ModSim磋磨
弃取“File”→“New”通达ModSim通讯界面,确立Modbus RTU从站的地址Device Id=2,运转地址Address=0001,数据长度Length=5,Modbus数据类型功能码03。辩认双击各Modbus地址后的数据区,出现“Write Register"对话框,在此写入数据值,如下图11所示:
扫视:Device Id确立必须与“MB_MASTER”领导中输入引脚“MB_ADDR”确立的地址一致。
图11 确立ModSim
7. Modbus RTU测试成果
在STEP 7 Professional V11 UPD4软件中通达该模样CPU1215C DC/DC/DC的“监控表”,触发“MB_MASER”领导的输入位M10.0。Modbus RTU主站将ModSim从站地址40001中的数值11,40002中的数值12,40003中的数值13,40004中的数值14,40005中的数值15,辩认读取到了地址DB3.DBW0,DB3.DBW2,DB3.DBW4,DB3.DBW6,DB3.DBW8中,如下图12所示:
图12 Modbus RTU测试成果
S7-1200 Modbus RTU通讯样式的多地址或多站点轮询多个CM 1241 RS485 通讯模块之间不错使用 PROFIBUS 电缆相互磋磨。不错将 1 个主站和最多 31 个 MODBUS 从站使用 PROFIBUS 电缆磋磨组网。
S7-1200 Modbus RTU轮询需要通过上一条”MB_MASTER“领导输出位“Done“=1来触发下一条“MB_MASTER“领导。具体讲解及编程想路请参考以下通顺:
若何使用STEP 7(TIA Portal)V11为SIMATIC S7-1200缔造Modbus RTU通讯?
MB_COMM_LOAD和MB_MASTER领导STATUS异常代码 STATUS(W#16#) 讲解 0000 端口无异常 8180 端口ID值无效 8181 波特率值无效 8182 奇偶校验值无效 8183 流截至值无效 8184 反应超时值无效 8185 MB_DB参数不是MB_MASTER或MB_SLAVE的布景数据块表5 MB_COMM_LOAD领导STATUS异常代码
STATUS(W#16#) 0000 80C8 80D1要是接受方在恭候时刻内未检测到 CTS,则在硬件流截至技巧也会生成该异常。
80D2 80E0 80E1 80E2 80E3 80E4 8180 8186 8188对于播送调用,参数 MODE 的值无效。
8189 818A 818B 818C 8200表6 MB_MASTER领导STATUS异常代码(领导的通讯和组态异常讯息)
STATUS(W#16#) 从站的反应代码 8380 - 8381 01 8382 03 8383 02数据地址异常或地址超出 DATA_PTR 的灵验界限
8384 >03 8385 03 8386 - 8387 - 8388 -表7 MB_MASTER领导STATUS异常代码(Modbus 契约的异常讯息)
常问问题:若何查验S7-1200 通讯模块CM1241是否已被收效确立为Modbus RTU通讯样式?
可在法式或监控表中巡逻“MB_COMM_LOAD”领导的输出位“DONE”,“ERROR”以及“STATUS”情状来判断S7-1200 通讯模块CM1241是否已被收效确立为Modbus RTU通讯样式。
要是该模块被收效确立为Modbus RTU通讯样式:“MB_COMM_LOAD”领导输出位“DONE”=1,“ERROR”=0,输出情状字“STATUS”=0; 要是该模块未被收效确立为Modbus RTU通讯样式:“MB_COMM_LOAD”领导输出位“DONE”=0,“ERROR”=1,输出情状字“STATUS”输出异常代码。具体异常原因可巡逻“MB_COMM_LOAD领导STATUS异常代码”表。实行“MB_MASTER”领导,老是泄露输出位“Busy”=1,为什么?
因为端口正忙于惩处传送苦求。出现该异常时请查验“MB_MASTER“领导输入位”REQ“是否为高潮沿触发,或是否有其它的多个“MB_MASTER”领导在实行。
通过实行“MB_MASTER”领导无法写入或读取Modbus RTU丛站地址的数据,但法式中监视“MB_MASTER”领导异常位“Error”=0,异常代码“STATUS”=16#0,为什么?
“MB_MASTER”领导上一苦求因异常而断绝后,ERROR 位将保抓为 TRUE 一个扫描周期时刻,况且 STATUS 参数中的异常代码值仅在 ERROR =TRUE 的一个扫描周期内灵验,因此无法通过法式或监控表巡逻到。可遴荐如下所示的编程模样将ERROR 和 STATUS 参数读出。
图13 捕捉异常代码
S7-1200 算作Modbus RTU 主站,若何对Modbus RTU从站进行0-65535推广寻址?
时常,“MB_MASTER”领导的布景数据块“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”默许为0,不错对Modbus RTU从站地址0-247进行打听。
将“MB_MASTER”领导的布景数据块“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”确立为1,才气对Modbus RTU从站进行0-65535推广寻址。可按照如下行为确立“EXTENDED_ADDRESSING”:
最初找到“系统块”→“法式资源”,双击“MB_MASTER_DB”,在“MB_MASTER”领导的布景数据块“MB_MASTER_DB”中巡逻“EXTENDED_ADDRESSING”。
图14 推广地址区
在“监控表”内输入“MB_MASTER_DB.EXTENDED_ADDRESSING”,将该位置1。
图15 修改革量大色网