西门子PLC通信板CB1241与变频器RS485通信
一、设备组态
硬件目录–通信板–点到点–CB 1241(RS485)
二、硬件接线
TA和T/RA短接,然后接到变频器 485- 端针脚,TB和T/RB短接,然后接到变频器 485+ 端针脚。
三、通信板参数设置
IO-LINK设置波特率,奇偶校验,数据位,停止位。
我这里波特率:9.6kbps
奇偶校验:无
数据位:8
停止位:1
与变频器那边相对应即可。其他参数都是使用的默认值。
四、程序编写
1、组态端口
Modbus Comm Load :组态modbus端口
Modbus Master:作为modbus主站通信
我这里plc是作为主站,变频器作为从站。
REQ:第一次上电扫描完成组态初始化
PORT:CB1241通信板的硬件标识符
MB_DB:对 Modbus_Master或 Modbus_slave 指令的背具数据块的引用
2、变频器端设置
主频率输入通道选择,设置为4:通讯给定。
运行命令通道选择,设置成2:通讯运行命令控制
通讯参数我这里直接使用的默认值。
协议选择:modbus协议,
波特率配置:9600bps,
数据格式:无奇偶校验,8位数据位,1位停止位,
本机地址使用的默认地址:1。
3、写入1个数据到变频器
REQ:引脚为true时,请求向 Modbus 从站发送数据。
MB_ADDR:从站的通信地址,上面变频器设置的为1。
MODE:0是读取数据,1是写入数据。
DATA_ADDR:从站中的起始地址,我这里是47682。1E01H是主频率地址,换成十进制是7681,PLC端地址从40001开始,40001+7681=47862,所以此处填写为47862。
DATA_LEN:需要写入或者读取的数据长度,我这里只是对一个地址写入数据。
DATA_PTR:存放需要写入的数据地址。
操作命令字的地址为1E00H,换算算法与上面主频率地址算法一样。
命令执行成功会将存在地址中的数据写入到变频器的地址之中。
4、从变频器读取1个数据到PLC
REQ:引脚为true时,请求向 Modbus 从站发送数据。
MB_ADDR:从站的通信地址,上面变频器设置的为1。
MODE:0是读取数据,1是写入数据。
DATA_ADDR:从站中的起始地址,我这里是41311。F05.30是同步频率地址,高位是05,低位是30,都是十进制,不能合起来算530,高位换成十六进制是05H,低位换成十六进制是1EH,高低位合起来就是051EH,换成十进制就是1310,PLC端地址从40001开始,40001+1310=41311,所以此处填写为41311。
DATA_LEN:需要写入或者读取的数据长度,我这里只是对一个地址读取数据。
DATA_PTR:存放需要写入的数据地址。
变频器状态地址为1E02H,换算算法与上面主频率地址算法一样。
命令执行成功会将变频器的数据读取存入到所指定的地址之中。
5、从变频器读取多个数据到PLC
REQ:引脚为true时,请求向 Modbus 从站发送数据。
MB_ADDR:从站的通信地址,上面变频器设置的为1。
MODE:0是读取数据,1是写入数据。
DATA_ADDR:从站中的起始地址,我这里是41309。F05.28是设定频率地址,高位是05,低位是28,都是十进制,不能合起来算528,高位换成十六进制是05H,低位换成十六进制是1CH,高低位合起来就是051CH,换成十进制就是1308,PLC端地址从40001开始,40001+1308=41309,所以此处填写为41309。
DATA_LEN:需要写入或者读取的数据长度,我这里对5个连续地址读取数据。
DATA_PTR:存放需要写入的数据地址,我这里是用的数组存放。
可以看到单独一个一个读取数据和一次性读取5个数据,读取到的数据是一致的。
此测试创建的数据块,最上面两个是写入数据的变量,其他的都是读取数据的变量。