登录
首页 PLC论坛 台达PLC
回帖 发帖
正文

主题:台达PLC与威纶通触屏不能用9600.8.E.1 格式?

点击:3093 回复:24

引用 404513201 在 2019/4/27 21:18:22 发言【内容省略】

台达PLC做Modbus RTU从站的话,需要写一小段程序:
附件 image.jpg
01、通信协议:MODBUS RTU
02、起始位:1位
03、数据位:8位
04、校验方式:偶校验
05、停止位:1位
06、波特率:9600bps
07、站号:1
19-04-28 00:01

引用 404513201 在 2019/4/27 21:18:22 发言【内容省略】

附件 image.jpg
第一行:MOV H87 D1120表明程序通信格式设置为无起始符、无第一结束符、无第二结束符、波特率为19200bps、停止位为1位、校验方式为偶校验、数据长度为8位。详情可见台达系列通信手册,如下所示:
附件 image.jpg
附件 image.jpg
附件 image.jpg
第二行:MOV H1 D1121,表明从站地址是01,可依次设置为02、03、04、05、06……根据从站个数进行设置。详情可见台达通信手册,如下所示:
附件 image.jpg
第三行:MOV K100 D1038,表明PLC作为从站时,响应主站命令的延迟时间为100ms,详情可见台达通信手册,如下所示:
附件 image.jpg
第四行:SET M1120,是通信格式设定保持用标志位,详情见台达系列手册,如下所示:
附件 image.jpg
第五行:SET M1143,表明选择MODBUS RTU通信协议,详情可见台达系列手册,如下所示:
附件 image.jpg
19-04-28 00:06

引用 404513201 在 2019/4/27 21:18:22 发言【内容省略】

附件 image.jpg
设置后各元件对应的Modbus地址如下所示:
附件 image.jpg
附件 image.jpg
19-04-28 00:08

引用 404513201 在 2019/4/27 21:18:22 发言【内容省略】

通信测试如下:
举例一:
比如要用串口调试助手对PLC的Y0进行置位操作,可以用串口调试助手对PLC发送如下数据:
01 05 05 00 FF 00 8C F6
Y0置位有效后,PLC会原样返回如下数据给串口调试助手的
01 05 05 00 FF 00 8C F6
附件 image.jpg
解释如下:
01:PLC从站地址
05:MODBUS RTU功能码
05 00:Y0的MODBUS RTU地址,查上面的表格可知
FF:对Y0置位
00:Y0原状态
8C F6:计算出的CRC校验,高位在后,低位在前
CRC计算小工具如下所示:
附件 image.jpg
这之前,请使用USB转RS485 接PLC的COM2口
硬件接线无误后,请点击手动发送进行测试

最后修改:2019/4/28 0:11:56
19-04-28 00:09
举例二:
比如要用串口调试助手对PLC的Y1进行复位操作,可以用串口调试助手对PLC发送如下数据:
01 05 05 01 00 00 9C C6
Y1复位有效后,PLC会原样返回如下数据给串口调试助手的
01 05 05 01 00 00 9C C6
附件 image.jpg
解释如下:
01:PLC从站地址
05:MODBUS RTU功能码
05 01:Y1的MODBUS RTU地址,查上面的表格可知
00:对Y1复位
00:Y1原状态
9C C6:计算出的CRC校验,高位在后,低位在前
CRC计算小工具如下所示:
附件 image.jpg
这之前,请使用USB转RS485 接PLC的COM2口
硬件接线无误后,请点击手动发送进行测试

最后修改:2019/4/28 0:11:45
19-04-28 00:10
各功能码介绍如下:
(一)对X、Y、M等元件进行读操作的话,一般使用功能码02或者01
比如要对X0-X7进行读操作的话,假如PLC地址是01,那么串口调试助手应该给PLC发送如下数据:
01 02 04 00 00 08 78 FC
解释如下:
01:PLC从站地址
02:功能码
04 00:是X0的地址
00 08:连续读8个,所以是00 08
78 FC:计算出的CRC校验
PLC收到命令后,会返回如下数据(假如X0-X7状态全为1):
01 02 01 FF E1 C8
解释如下:
01:PLC从站地址
02:功能码
01:字节计数,因为X0-X7共8位计1个字节,不足8位按1个字节算,超过8位按2个字节计算
FF:X0-X7的状态
E1 C8:CRC校验
19-04-28 00:12
(二)对Y、M、S单个元件进行置位、复位操作一般用功能码05;对多个进行置位、复位一般用15功能码
比如要对Y0-Y7全部置位,假如PLC地址是01,那么串口调试助手应该向PLC发送如下数据:
01 0F 05 00 00 08 01 FF BE 80
解释如下:
01:地址码
0F:功能码,10进制就是15
05 00:Y0的地址
00 08:连续对Y0-Y7进行写操作,所以是8个
01:是字节计数,连续对Y0-Y7进行写操作,共计是1个字节
FF:预写的数据,我们要求是对Y0-Y7全部置位
BE 80:计算出的CRC校验
PLC收到命令后,会给串口调试助手返回如下数据:
01 0F 05 00 00 08 54 C1
01:地址
0F:功能码
05 00:Y0地址
00 08:预写的个数,Y0-Y7
54 C1:CRC校验
19-04-28 00:13
(三)对D寄存器进行读操作,一般使用功能码03,
比如我们要读D0 D1的数据,假如D0=16#0012 D1=16#0034,假如PLC地址是01
应该用串口调试助手给PLC发送如下数据:
01 03 10 00 00 02 C0 CB
解释如下:
01:PLC地址
03:功能码
10 00:D0地址,查上面两个表可知道
00 02:读寄存器的个数,因为读D0 D1两个
C0 CB:计算出的CRC校验
当PLC收到此命令后,会向串口调试助手返回如下数据:
01 03 04 00 12 00 34 5B E1
解释如下:
01:PLC地址
03:功能码
04:字节计数,这里注意一下,因为读的是D0 D1两个寄存器,一个寄存器是16位,也就是2个字节,那么两个寄存器自然就是4个字节了
00 12:D0的数据
00 34:D1的数据
5B E1:CRC校验数据
19-04-28 00:13
(四)对多路D寄存器进行写操作,一般使用16功能码
比如我们要对D2 D3 D4进行写操作,D2=16#0020,D3=16#0011,D4=16#1001,假如PLC地址是01,串口调试助手应该向PLC发送如下数据:
01 10 10 02 00 03 06 00 20 00 11 10 01 0E 48
解释如下:
01:PLC地址
10:功能码,10进制就是16了
10 02:D2的地址
00 03:预写的寄存器个数,因为写的是D2 D3 D4,所以是00 03
06:字节计数,因为是3个寄存器,所以就是6个字节
00 20:写D2的数据
00 11:写D3的数据
10 01:写D4的数据
0E 48:计算出的CRC校验
当PLC接收到此命令后,会返回如下数据给串口调试助手
01 10 10 02 00 03 25 08
解释如下:
01:PLC地址
10:功能码
10 02:D2地址
00 03:寄存器个数
25 08:CRC校验
19-04-28 00:14
附上PLC程序和串口调试助手:
附件:台达PLC做MODBUS RTU从站.rar
[本地下载]
附件:串口通信调试助手.rar
[本地下载]
19-04-28 00:16

上一页 下一页

工控新闻

更多新闻资讯