3. PLC组态及Modbus组态
3.1 组态
在博图中组态硬件,CPU和RS485通信模块。
如图,在组态界面对RS485进行通信连接的设置,与变频器保持一致即可。
3.2 Modbus指令的配置
软件里面提供了两种指令——Modbus(RTU)和Modbus,我这里用的是Modbus(RTU),毕竟用新不用旧。
建议大家提前看一下官方的教学视频——《S7-1200和G120 MODBUS RTU通讯》,虽然只提供了手动读写从站数据的演示,但对理解一下运行机理还是有点帮助的。这个视频演示的是G120的变频器,启停这一块跟G120XA有所不同。
3.2.1 Modbus_Comm_Load
Modbus_Comm_Load: 对 Modbus 的通信模块进行组态 。
创建一个FC块,加入Modbus_Comm_Load指令,根据每个参数的说明和数据类型进行赋值。
REQ:当此输入出现上升沿时,启动该指令。正常情况下Modbus_Comm_Load指令只需要在PLC启动的时候激活一次对通信模块进行组态即可。
PORT:硬件标识符
早期版本的博图会让你在硬件组态界面查看,但较新版本的看不到了,可以直接在列表中找,一看就能找到。
BAUD:波特率,9600
PARITY:奇偶校验
0 – 无
1 – 奇校验
2 – 偶校验
选2
RESP_TO:响应超时:
5 ms 到 65535 ms - Modbus_Master 等待从站响应的时间(以毫秒为单位)。如果从站在此时间段内未响应,Modbus_Master 将重复请求,或者在指定数量的重试请求后取消请求并提示错误。
从站不多的话默认的1000ms即可。当从站比较多的时候,需要酌情减小,比如说20个从站依次轮询,其中10个未上电或有其他问题,那读一轮数据就需要 10x1000ms + 10x正常通信时间 > 10s,写一轮数据又是10s+。
MB_DB:
对 Modbus_Master 或 Modbus_Slave 指令的背景数据块的引用。
MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令的(静态,因此在指令中不可见)MB_DB 参数相连。
这个在后面创建了Modbus_Master 或 Modbus_Slave 指令后就可以选,操作如下:
还有一个很重要的必须要改却藏得有点深的参数,也是官方给用户留的坑:
Modbus_Comm_Load 数据块变量
变量 | 数据类型 | 标准 | 标准 |
---|---|---|---|
MODE | USInt | 0 | 工作模式有效的工作模式包括: 0 = 全双工 (RS232) 1 = 全双工 (RS422) 四线制模式(点对点) 2 = 全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP)) 3 = 全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP)) 4 = 半双工 (RS485) 二线制模式 1) 1) 使用 PROFIBUS 电缆连接 CM 1241 的 RS485 时所需的设置 |
具体在这个位置修改:
3.2.1 Modbus_Master
Modbus_Master: 作为 Modbus 主站进行通信
参数含义如下,每一个都需要了解。需要注意的是,对G120XA变频器,DATA_LEN长度只能为1。如果想要读写多个参数,只能通过改变DATA_ADDR来进行新一轮的通信。
我这里接口用的都是PLC变量,如果有掉电保持等特殊需求,也可以采用DB块。
这里解释一下几个参数对应变频器的实际意义:
“modbusMaster_ADDR”:对应之前5个变频器设定好的从站地址——1、2、3、4、5.
“modbusMaster_DATA_ADDR”:要读写的从站数据起始地址,变频器操作说明里面有变频器数据的映射表,这里我们只用到控制字和状态字的数据。
寄存器 | 描述 | 访问 |
---|---|---|
40100 | 控制字 | R/W |
40101 | 主设定值 | R/W |
40110 | 状态字 | R |
40111 | 主实际值 | R |
控制字 40100: | ||
这个控制字在G120XA的很多官方文献中都有很冲突的解释。 | ||
《G120XA 宏51 Modbus RTU 控制》中这么说: |
宏51 功能描述:
起停控制:电机的起停通过数字量输入DI0 控制,DI0 信号断开时电机自由停车。
然而《G120XA变频器宏功能手册》里面又这么说:
启停控制:变频器的启动停止通过Modbus 通讯控制,控制字寄存器地址为40100,常用控制命令如下:
变频器就绪/变频器OFF1停车 047E(16进制)
变频器启动 047F(16进制)
变频器OFF2停车 047C(16进制)
变频器反向启动 0C7F(16进制)
变频器故障故为 04FE(16进制)
我这里都实践了一下,发现,变频器上电后,需要先给40100写入一次047E,变频器才会进入接通就绪状态,然后接通和断开DI0是可以控制变频器的启停的,写入047F无法启动变频器。
状态字 40110:
一般情况下我们主要看里面的0~3位,具体看实际需求。后面实际运行时会展示一下其数值变化。
主设定值 40101:
速度给定寄存器地址为40101,上位机发送16进制的4000 hex(十进制为16384)对应100%转速,对应参考转速p2000的值。
文档解释得很清楚了啊,这个值用来控制变频器转速,0~ 16384对应0~100%转速,后面编程里面要用到。
主实际值 40111:
与主设定值相对应,是变频器实际输出的反馈,0~ 16384对应0~100%转速。
这里整体的组态基本上就完成了,下一步就开始编写读写程序了。
G120XA与S7-1200的Modubus通信(三)