欢迎来到众智博远官网网站!

7*24小时在线咨询电话

010-52873850

新闻资讯

contact us

24小时免费咨询热线

010-52873850

技术资讯

当前位置: 首页 >> 新闻资讯 >> 技术资讯

西门子CP341作Modbus主站的编程

发布时间:2019-07-21 来源:众智博远

实现CP341作Modbus主站的通信程序是“P_SND_RK”FB8负责发送控制字。编程如下:

image.png

FB8参数说明表格1。

SF

‘S’为发送,此处必须为大写的‘S’

LADDR

硬件组态中的起始逻辑地址,本例中为272

REQ

发送数据触发位,上升沿触发,本例中为M0.5,以1s为周期的脉冲信号

DB_NO

发送数据块号,本例中为1

DBB_NO

发送数据的起始地址,本例中为0

LEN

发送数据的长度,本例中暂时为6

R_TYP

‘X’为扩展的数据块,此处必须为大写的‘X’

R

取消通信,本例始终为初始值FALSE

DONE

发送完成位,无故障发送完成后为true,M100.0

ERROR

错误位,为true说明有错误,M100.1

STATUS

状态字,标识错误代码,查看Modbus Master和CP341手册

其它参数

查看在线帮助

表 1

IA&DT

其中创建发送数据块DB1结构如图10所示:

image.png

图10 发送DB块源区域结构

创建的发送数据块DB1,至少要有6个字节的长度,后面根据功能码的不同,所需长度不同,建议发送数据块创建的长度长一些。以上图为例6个字节Address为所通讯对象的Modbus地址为1,code为功能码FC03,所读对象寄存器的起始地址为0,所读寄存器的数量为4,其中一个寄存器为两个字节。

此处有几个注意事项:

1) R_TYP必须为大写的‘X’,

为小写"x"时,CP341 作为Modbus master时,调用FB8的状态字显示为 "0E4F" 错误。注意R_TYP必须为大写。且对于R_TYP可以写的值如下:

’D’ DB 区’X’ DX 区,extended data block ’E’ I 区’A’ Q 区 ’M’ M 区 ’T’ T 区 ’C’ C 区

2) LEN的长度要根据通信所需功能码来针对填写,

如下表所示

“P_RCV_RK”FB7用于接收通信数据。编程如图11所示:

image.png

FB7参数说明表格3

LADDR

硬件组态中的起始逻辑地址,本例中为272

DB_NO

接收数据块号,本例中为DB2

DBB_NO

接收数据的起始地址,本例中默认为0 

LEN

接收数据的长度反馈

EN_R

使能接收位,本例中始终为TURE

R

取消通信,本例始终为初始值FALSE

NDR

接收完成位,无故障接收完成后为true

ERROR

错误位,为true说明有错误

STATUS

状态字,标识错误代码,查看Modbus Master和CP341手册

其它参数

查看在线帮助