S7-1200与迈凯诺变频器进行modbus RTU进行通讯

2021-11-09 15:59:46 浏览数 (1)

一、组态PLC:

打开博图V15软件,新建项目,进行PLC的硬件组态,在CPU的左侧添加CM1241 modbusRTU通讯模块。

二、组态通讯端口

双击CM1241 modbusRTU通讯模块,在下方“RS422/485接口”选项下,点击“端口组态”,右侧设置如下:协议---自由口;操作模式--半双工(RS485)2线制模式;接收线路初始状态--无;波特率--9600、奇偶校验--无、数据位--8位/字符、停止位--1;其余默认;如图1、图2所示:

图1

图2

三、设置CPU系统和时钟存储器

双击CPU,点击“系统和时钟存储器”,点击右侧“启用系统存储器字节”和“启用时钟存储器字节”,用于编程时使用首次扫描位和时钟脉冲;如图3

图3

四、新建读写数据块

新建读写全局数据块DB3、DB5,数据块里新建数据类型为UINT的数组;如图4

图4

五、编写modbusRTU初始化程序

在OB1里,编写modbusRTU初始化程序,点击右侧“通信”--“通信处理器”--“MODBUS(RTU)”--“Modbus_Comm_Load”,拖拽到程序段1中,自动生成背景数据块;

Modbus_Comm_Load模块的引脚说明:

EN--使能端,一直使能;

REQ--只在第一次扫描周期为1,且必须是上升沿触发;

PORT--指定CM1241模块的硬件标识符(标注方法:如图7)

BAUD--指定通讯波特率(9600);

PARITY--指定奇偶校验位(0--无校验)

MB_DB--指向主站生成的背景数据块的MB_DB参数;

输出引脚指定地址即可,如图6

注意:在左侧“程序块”--“系统块”--“程序资源”下拉列表中,双击Modbus_Comm_Load的背景数据块,Modbus_Comm_Load_DB,修改第19行MODE的数值,由默认值修改为16#04;如图8

0=全双工(RS232);

1=全双工(RS422)四线制模式(点对点);

2=全全双工(RS422)四线制模式(多点主站,CM PtP(ET200SP));

3=全全双工(RS422)四线制模式(多点从站,CM PtP(ET200SP));

4=半双工(RS485)二线制模式;

图6

图7

图8

六、编写主站程序(读指令)

在OB1里,编写modbusRTU主站程序,点击右侧“通信”--“通信处理器”--“MODBUS(RTU)”--“Modbus_Master”,拖拽到程序段2中,自动生成背景数据块;

Modbus_Master模块的引脚说明:

EN--使能端,一直使能;

REQ--上升沿触发;

MB_ADDR--从站地址;

MODE--读或写指令(0是读指令,1是写指令);

DATA_ADDR--从站的起始地址(需将从站的地址由16进制转换为10进制,转换成10进制后,数据加1(因为从站地址是从0开始的,而PLC的地址是从1开始的,所以要加1));

DATA_LAN--指定读取的数据长度(即一下读取几个数据);

DATA_PTR--指定读取的数据存放到此数组中;

输出引脚指定地址即可,如图9

图9

图9程序解析:

从站地址:

1000--频率给定(只写);

1001--运行频率(只读);

1002--母线电压(只读);

1003--输出电压(只读);

1004--输出电流(只读);

1001H转成10进制是4097,4097 1=4098;

所以此程序就是用4号功能码读取从站地址为1的从4098(从站从4097)开始的4个数据(运行频率、母线电压、输出电压、输出电流),存放到数据块_1(DB3)的第一个变量的数组里(对应关系是一一对应的,即DB3.DBW0是运行频率,DB3.DBW2是母线电压,DB3.DBW4是输出电压,DB3.DBW6是输出电流),也就是说在上位机或监控里监控时,只要写DB3.DBW0、DB3.DBW2、DB3.DBW4、DB3.DBW6即可;

七、编写主站程序(写指令)

同第六项读指令一样,只是将MODE改为1即可;如图10

图10

图10程序解析:

从站地址:

2000--变频启动停止指令(只写);

2000地址=1:正转运行;

2000地址=2:反转运行;

2000地址=3:正转点动;

2000地址=4:反转点动;

2000地址=5:自由停机;

2000地址=6:减速停机;

2000地址=7:故障复位;

2000H转成10进制是8192,8192 1=8193;

所以此程序就是用4号功能码向从站地址为1的从8193(从站从48192)开始的1个数据写数据(变频器启停控制),存放到数据块_2(DB5)的第一个变量的数组里(对应关系是一一对应的,即DB5.DBW0是启停信号,即DB5.DBW0=1时变频器正转,DB5.DBW0=6时变频器减速停机),也就是说在上位机或监控里写命令时,只要将DB5.DBW0数值写成0~7即可;

八、轮询

当一个CM 1241带很多从站时,或者带一个从站,但是一个从站里需要多次用到读或写指令时,就需要用轮询的方式来读写,不能同时对多个Modbus_Master模块进行读写;

轮询程序如图11~图16

图11

图12

图13

图14

图15

图16

九、运行监控画面:

给定频率32.6Hz

图17

十、停机监控画面

给定频率32.6Hz,停机指令6(减速停机)

图18

0 人点赞