一、组态PLC: 打开博图V15软件,新建项目,进行PLC的硬件组态,在CPU的左侧添加CM1241 modbusRTU通讯模块。 二、组态通讯端口 双击CM1241 modbusRTU通讯模块,在下方“RS422/485接口”选项下,点击“端口组态”,右侧设置如下:协议---自由口;操作模式--半双工(RS485)2线制模式;接收线路初始状态--无;波特率--9600、奇偶校验--无、数据位--8位/字符、停止位--1;其余默认;如图1、图2所示:
三、设置CPU系统和时钟存储器 双击CPU,点击“系统和时钟存储器”,点击右侧“启用系统存储器字节”和“启用时钟存储器字节”,用于编程时使用首次扫描位和时钟脉冲;如图3
四、新建读写数据块 新建读写全局数据块DB3、DB5,数据块里新建数据类型为UINT的数组;如图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)二线制模式;
六、编写主站程序(读指令) 在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程序解析: 从站地址: 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程序解析: 从站地址: 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
九、运行监控画面: 给定频率32.6Hz
十、停机监控画面 给定频率32.6Hz,停机指令6(减速停机)
欢迎给作者打赏
|
|
来自: 阿明哥哥资料区 > 《69.PLC 自动化》