工控智汇

工控智汇

S7-1200与CU240BE-2之间的Modbus-RTU通讯

admin 72 158

S7-1200与CU240B/E-2之间的ModbusRTU通讯

1S7-1200与变频器的连接

1.1本例程的系统配置
本例中用到的硬件:S7-1200(CPU1214C)、G120(控制单元CU240B-2)、一台装有TIAPortal软件的PC机、CM1241模块、电源模块、标准RJ45网线。

1.2硬件连接

1.2.1硬件连线
本例程中的硬件间的结构如下图所示:



图1-1

1.2.2PLC与控制单元通信端口之间的连接
用电缆将CU240B-2Modbus通讯接口与PLC通信模块连接起来,如下图所示。



图1-2


2变频器设置

2.1地址设置
可以通过控制单元上的地址开关,也可以通过参数P2021或STARTER中“ControlUnit/Communication/Fieldbus”页面来确定变频器的位置Modbus-RTU地址。
只有所有地址开关都设为“OFF”(0)时,P2021或STARTER中间的设置才有效。否则,Modbus-RTU地址为地址开关所设置的地址。

2.2参数设置
除了设置地址之外,还需要对其他一些变频器的通信参数进行设置,才可以进行MODBUS通信。具体需要设置的参数如表2-1所示:

表2-1

参数

描述

P0015=21

变频器宏程序
选择I/O配置

p2030=2

现场总线协议选择
2:Modbus

p2020

现场总线波特率
设置范围是4800bit/s…187500bit/s,出厂为19200bit/s

p2024

Modbus计时

索引0:最大从站应答延迟:
在该时间后,从站应答主站。

索引1:字符延时:
指一个Modbus消息帧内,单个字符之间允许的最大延迟时间。(即个字节标准的处理时间)

索引2:报文延时:
指Modbus报文之间允许的最大延时。(即个字节标准的处理时间)

p2029

现场总线错误统计
指现场总线接口上接收错误的统计、显示

p2040

过程数据监控时间
只是没有收到过程数据时发出报警的延时。
注:该时间必须根据总站数量、总线波特率加以调整,出厂为100ms。


3PLC组态和编程

3.1创建项目



图3-1

3.2硬件组态
按照新手上路的提示首先选择设备和网络,进行硬件组态。



图3-2



图3-3

在弹出的设备与网络的右侧硬件目录中,找到通信模块-点到点-CM1241(RS485),加入CM1241通信模块。



图3-4

双击设备视图中的RS485端口,设置端口组态,本例程配置如下图。



图3-5

在左侧的项目树-设备-在线访问-BroadcomNetXtreme。。。(本例程PC机所使用的网卡),双击更新可使用的设备,搜索到连接的设备。



图3-6

3.3编程
在左边的设备中找到S7-1200/程序块,打开主程序(Main[OB1])。在右边的指令栏里选择通信/通信处理器/MODBUS,添加MB_COMM_LOAD和MB_MASTER。



图3-7

在弹出的调用选项中,定义一个背景数据块。



图3-8

使用同样的方法,再加入一个MB_MASTER模块,同样定义背景数据块。



图3-9

分别按照图3-10、图3-11设置MB_COMM_LOAD和MB_MASTER模块。



图3-10



图3-11

其中,MB_COMM_LOAD与MB_MASTER指令的参数说明,请参考表3-1,表3-2。

表3-1MB_COMM_LOAD指令的参数

参数

声明

数据类型

存储区

说明

REQ

Input

BOOL

I、Q、M、D、L

在上升沿执行指令

PORT

Input

UINT

I、Q、M、D、L或常量

通信端口的ID:
在设备组态中插入通信模块后,端口ID就会显示在PORT框连接的下拉列表中。也可以在变量表的“常量”(Constants)选项卡中引用该常量。

BAUD

Input

UDINT

I、Q、M、D、L或常量

波特率选择:
300,600,1200,2400,4800,9600,19200,38400,57600,76800,115200
所有其它值均无效。

PARITY

Input

UINT

I、Q、M、D、L或常量

奇偶校验选择:
0–无
1–奇校验
2–偶校验

FLOW_CTRL

Input

UINT

I、Q、M、D、L或常量

流控制选择:
0–(默认值)无流控制
1–通过RTS实现的硬件流控制始终开启(不适用于RS485端口)
2-通过RTS切换实现硬件流控制

RTS_ON_DLY

Input

UINT

I、Q、M、D、L或常量

RTS延时选择:
0-(默认值)到传送消息的第一个字符之前,激活RTS无延时。
1至65535–到传送消息的第一个字符之前,“激活RTS”以毫秒为单位的延时(不适用于RS-485端口)。应用RTS延时必须与FLOW_CTRL选择无关。

RTS_OFF_DLY

Input

UINT

I、Q、M、D、L或常量

RTS关断延时选择:
0–(默认值)传送最后一个字符到“取消激活RTS”之间没有延时。
1至65535–在发送消息的最后一个字符到“取消激活RTS”之间以毫秒为单位的延时(不适用于RS-485端口)。应用RTS延时必须与FLOW_CTRL选择无关。

RESP_TO

Input

UINT

I、Q、M、D、L或常量

响应超时:
“MB_MASTER”允许等待从站响应的时间(毫秒)如果从站在此时间内没有响应,则“MB_MASTER”将重复该请求,或者在发送了指定数目的重试后终止请求并返回错误。
5ms至65535ms(默认值=1000ms)。

MB_DB

Input

VARIANT

D

“MB_MASTER”或“MB_SLAVE”指令的背景数据块的引用。在程序中插入“MB_SLAVE”或“MB_MASTER”之后,数据块标识符会显示在MB_DB框连接的下拉列表中。

DONE

Output

BOOL

I、Q、M、D、L

指令的执行已完成且未出错。

ERROR

Output

BOOL

I、Q、M、D、L

错误:
0–未检测到错误
1–表示检测到错误。在参数STATUS中输出错误代码。

STATUS

Output

WORD

I、Q、M、D、L

端口组态错误代码

表3-2MB_MASTER指令的参数

参数

声明

数据类型

存储区

说明

REQ

Input

BOOL

I、Q、M、D、L

请求输入:
0–无请求
1–请求将数据发送到Modbus从站

MB_ADDR

Input

UINT

I、Q、M、D、L或常量

ModbusRTU站地址:
默认地址范围:0至247
扩展地址范围:0至65535
值“0”已预留,用于将消息广播到所有Modbus从站。只有Modbus功能代码05、06、15和16支持广播。

MODE

Input

USINT

I、Q、M、D、L或常量

模式选择:指定请求类型:读取、写入或诊断:
有关详细信息,请参见Modbus功能表。

DATA_ADDR

Input

UDINT

I、Q、M、D、L或常量

从站中的起始地址:指定Modbus从站中将供访问的数据的起始地址。可在Modbus功能表中找到有效地址。

DATA_LEN

Input

UINT

I、Q、M、D、L或常量

数据长度:指定要在该请求中访问的位数或字数。可在Modbus功能表中找到有效长度。

DATA_PTR

Input

VARIANT

M、D

指向CPU的数据块或位存储器地址,从该位置读取数据或向其写入数据。对于数据块,必须使用“标准-与S7-300/400兼容”访问类型进行创建。

DONE

Output

BOOL

I、Q、M、D、L

0:事务未完成
1:事务完成,且无任何错误

BUSY

Output

BOOL

I、Q、M、D、L

0:当前没有“MB_MASTER”事务正在处理中
1:"MB_MASTER"事务正在处理中

ERROR

Output

BOOL

I、Q、M、D、L

0:无错误
1:出错,错误代码由参数STATUS来指示

STATUS

Output

WORD

I、Q、M、D、L

执行条件代码


3.4下载



图3-12



图3-13

3.5监视



图3-14

4MODBUS通信控制变频器

4.1使用MODBUS通信控制变频器启停
如下图所示,打开Tag_1,使能MB_MASTER。使能完成之后,关闭Tag_1。



图4-1

如图4-2,将MODE改为1(即写入数据),DATA_ADDR写入40101(主设定值寄存器号),DATA_PTR写入1000(给定值的写入值)。然后REQ使用一个脉冲沿来发送给定值。此时,变频器的给定值已经改为1000。
然后将DATA_ADDR写入40100(控制字寄存器号),DATA_PTR写入047E(停车),然后REQ使用一个脉冲沿来发送停车命令。再将DATA_ADDR写入40100(控制字寄存器号),DATA_PTR写入047F(启动),然后REQ使用一个脉冲沿来发送启动命令。



图4-2

注意:
MB_COMM_LOAD使能完成之后,一定要将Tag_1关闭,否则MB_MASTER模块将无法使用。
变频器启动位需要一个上升沿,所以先给其停车命令,然后发送启动命令,利用上升沿来启动变频器。

4.2使用MODBUS通信修改和查看变频器参数
现在,以参数P1120加速时间为例,对参数的修改和查看进行讲解。
首先,进行读参数的演示。将MODE输入改为0(即读参数模式),将DATA_ADDR中写入40322(即加速时间的寄存器号),然后REQ使用脉冲沿来发送一个读请求。此时,可以接收到参数P1120中的数据位1000(即加速时间为10s)。



图4-3

然后进行写参数:将MODE输入改为1(即写参数模式),将DATA_ADDR中写入40322(即加速时间的寄存器号),在DATA_PTR中写入500,然后REQ使用脉冲沿来发送一个写请求。此时,已经将500写入了参数P1120之中,加速时间改为5s。



图4-4

控制单元中的Modbus寄存器和对应的参数如下表所示:




表4-1Modbus寄存器和对应的参数
关键词
G120,CU240B-2,CU240E-2,ModbusRTU