您好!欢迎光临工博士商城

台达plc服务商

产品:90    
联系我们
您当前的位置:首页 » 新闻中心 » 台达PLC的DVP系列Modbus通讯实例
产品分类
新闻中心
台达PLC的DVP系列Modbus通讯实例
发布时间:2022-10-20        浏览次数:7082        返回列表

    ***近遇到一个需求,某厂一台智能型烘干机用到的自动化控制是台达的PLC,台达的DVP16EC要与本设备内置的一台电子式电能表做通讯。PLC做主站(Master),电能表做从站(Slave),一对一通讯,看起来蛮简单,需求也很明了,就是想把电能表的读数(电压、电流、用电量、有功、无功、功率因数、频率等)读取到PLC,然后PLC的编程口连接一个台达的触摸屏做显示。***终实现在触摸屏即可读取电气参数和用电量,不用再去打开电气柜。

    OK先说这件事情的结果:客户的PLC型号为DVP16EC带一个RS485口,且的确支持MODBUS通讯,但此款PLC的Modbus程序指令***大只支持读取6个字长度,即12个字节,长度太小,读了ABC三相电流就已经把空间占满了,无法满足需求所以没什么大的意义,***终没能完成这个需求。

    不过这个通讯的方法还是可以拿来讲一讲的,毕竟台达PLC做MODBUS的案例在网上少之又少。接下来我们开讲:

 

1、软件环境:

操作系统:Windows XP SP3 X86

PLC编程软件:WPLSoft V2.50(可以在Delta官网下载)

HMI组态软件:DOPSoft V4.00.10.17(可以在Delta官网下载)

MODBUS调试软件:Modscan32、Modsim32

 

2、主要设备:

主站:PLC一台

图2-1,PLC外观图

 

从站:电子式电能表一台(支持Modbus RTU)

图2-2,电子式电能表外观示意图


从站电子式电能表的通讯参数为9600/8/N/1,寄存器地址部分如下:

图2-3,电子式电能表寄存器地址表

 

  3、开始编程:  

通讯参数和点表拿到手,就可以开始给PLC编程序了。没错,我***时间拿到了台达DVP的编程手册,找到了下面这一段:

图3-1,台达DVP编程手册关于API100即MODRD指令的程序范例

 

然后我照着这段程序范例写了如下程序:

图3-2,根据此次需求所写的程序

 

这里我们来讲几个关键指令:

首先MOV  H81 给寄存器D1120是什么含义

H81即16进制的81,转换成二进制为:10,00,00,01。这四个字节从低到高分别是b0,b1,b2,b3

b0:数据长 b0=0:7 b0=1:8

b2 b1:奇偶性

b2, b1 = 00 :无 (None)

b2, b1 = 01 :奇校验 (Odd)

b2, b1 = 11 :偶校验 (Even)

b3:停止位

b3 = 0:1 bit

b3 = 1:2 bit

b4b5b6b7 波特率

b7 ~ b4 = 0001 (H1) :110 bps

b7 ~ b4 = 0010 (H2) :150 bps

b7 ~ b4 = 0011 (H3) :300 bps

b7 ~ b4 = 0100 (H4) :600 bps

b7 ~ b4 = 0101 (H5) :1200 bps

b7 ~ b4 = 0110 (H6) :2400 bps

b7 ~ b4 = 0111 (H7) :4800 bps

b7 ~ b4 = 1000 (H8) :9600 bps

b7 ~ b4 = 1001 (H9) :19200 bps

b7 ~ b4 = 1010 (HA) :38400 bps

b7 ~ b4 = 1011 (HB) :57600 bps

b7 ~ b4 = 1100 (HC) :115200 bps

所以H81就代表波特率9600,数据位8,停止位1,无校验。

 

其次MODRD指令

就是用来读寄存器的指令,功能码03,其中三个参数K1,K0,K32含义K代表十进制,后面的数字可根据自己的需求修改

K1:从站地址为1

K0:起始地址0,即从40001开始读

K32:读取32个字(Word)长度

 

***后就是特殊寄存器

台达PLC自带若干特殊寄存器,我们可以在软件当中打开帮助即可查看:

 

 

    写完程序后,我用笔记本电脑模拟Modbus从站,用USB转485线将A+ B+两颗线接到PLC右上角的A+ B+上,用modscan打开串口读取Modbus报文,发现报文为 01 03 00 00 00 06 4D 2A,其中01表示从站地址,03表示功能码,00 00 代表起始地址,  00 06代表读取6个字的长度。百思不得其解的是明明我们设置了32个长度,但是报文只读了6个字的长度,于是我修改了K32参数,改成K12,又改成K8,发现报文不变,***后改成K5,报文变成00 05 了。于是又反复查阅资料发现一处关键的描述才瞬间豁然开朗。

原因找到了,***下面一行写着n操作数范围K1≤n≤K6。也就是说,modrd指令只能读6个字的长度。我读了ABC三相电流,三个浮点数,6个字的长度刚好用完。
资料来源于网络,如有侵权,联系删除。

了解更多产品相关信息请关注:台达plc服务商




 

联系热线:0731-88706966   联系人:周经理 联系地址:上海市宝山区富联一路98弄6号

技术和报价服务:星期一至星期六8:00-22:00 台达plc服务商