采用RTU数据模式控制变频器,包括变频器的调频、正转、反转、停止命令的写入及运行频率的读取。
先了解下RTU帧的结构:
干货★★★★★资料
数据:2*N个字节的数据,为通讯的主要内容,包括数据地址、数据内容等。
在变频器的控制器,功能码主要用到两个03H和06H。
03H表示主机向变频器读取数据,要读取多少个数据由命令中“数据个数”而定,最多可以读取 16 个数据。读取的参数地址必须是连续的。每个数据占用的字节长度为 2 字节,也即一个字(word)。以下命令格式均以 16 进制表示(数字后跟一个“H”表示 16 进制数字),一个 16 进制占用一个字节,主要作用是读取变频器的参数及工作状态,比如变频器的频率、电压、电流以及运行状态(正转、反转、停机、故障状态的监视等)
06H的命令表示主机向变频器写数据,一条命令只能写一个数据,不能写多个数据。它的作用是改变变
频器的参数及工作方式,比如控制变频器正反转、停机,设定频率、转矩、加减速时间等。
我们从主机往从机发送命令后,如果发送成功,从机会返回一个回应信息,从这个返回信息中可以看出我们想要得到的东西,
这里说下发送写命令06H,它的返回信息与发送命令是一样的,所以我们只有在读命令03H才用到返回信息。下面我们举个例子说明发送信息与返回信息。
03H,从通讯地址为01的变频器,以地址0004H开始,连续读取两个数据内容就是去读0004H和0005H地址的内容。
从上表看出主机向从机发送命令需要知道从机的地址、功能码(命令)、数据地址、数据个数、CRC校验码,以上例子中我们知道从机的地址是01H,功能码是读03H,地址是0004H,拆分成高低位,数据个数是俩个0002H,同样拆分,最后的CRC校验码是根据以上数据计算出来的,数据发送到从机后,从机也根据信息计算一个CRC校验码,如果与主机计算的校验码一致,则通讯成功,会向从机发送一组返回信号,我们就知道了从变频器中读取的信号,例如0004H和0005H地址的数据是5000,0, 那么返回信息除了地址与命令码不变, 后面的数据就变成了字节个数、 数据内容了,5000的16进制是1388H, 因此数据内容是高位13H, 低位88H。
接下来我们举例子说下英威腾变频器的相关控制(电机正反转停止、频率设定、频率读取)
我们知道正反转停止、频率设定是写指令06H,频率读取是读指令03H,这大家应该清楚。
由变频器手册知道通讯控制的地址为2000H, 正转数据位0001H, 反转是0002H, 停机是0005H。
通讯频率设定值的地址是2001H, 变频器运行频率地址是3000H。
1、 正转指令,
01 06 20 00 00 01 67 90
2、 反转指令,
01 06 20 00 00 02 81 A7
3、 停机指令,
01 06 20 00 00 02 C0 65
4、 设定频率,
01 06 20 01 0B B8 56 E4
(设置变频器30.00Hz运行)
5、 运行频率,
01 03 30 00 00 01 8B 0A (返回信息,01 03 02 0B B8 BF 06)
那么上面的清楚后,
如何在PLC发送这些指令呢, 这里我们采用RS指令完成。
RS指令在以前的MODBUS-ASCII码通讯文章也说过, 指令格式是RS S m D n, 发送以S为开始的m个数据, 接受以D为开始的n个数据。比如发送正转指令,RS D0 K8 D20 K8,D0 D1 D2 D3 D4 D5 D6 D7是发送数据,D20 D21 D22 D23 D24 D25 D26 D27是接受数据,D0的内容是01,D1是06 , 依此论推下去,接受信息与发送数据一致。
从以上的图中看出, 写入指令的发送和接受都是一样的, 读取指令的接受数据就不一样了, 就比如频率读取指令返回的信息中就没有地址数据, 它的返回数据就是字节个数2, 数据内容07 D0, 转换成十进制就是2000, 也就是20.00Hz, 这在PLC编程时候需要注意。