V80系列PLC与变频器的通信案例
一、引言
在各种机械设置上,PLC与变频器的应用可谓无处不在。常见的用法是使用模拟量模块(一般是电压)来对变频器进行控制。这种方法的主要的缺点是成本高,并且容易受干扰(电压方式),控制精度也很难作得很高,而采用通信方式就可以很好地避免这个问题。但是,一般PLC的通信编程是一件很不容易的事。本文介绍了V80系列PLC与变频器的通信方法。
二、V80 PLC介绍
V80系列PLC是深圳德维森科技有限公司开发的一款通用型高性价比的小型可编程控制器(PLC),采用32位高性能CPU芯片和高速逻辑解析ASIC芯片,相对于一般的小型PLC,在通信应用方面具有以下特点:
1、本机自带双串口,其中一个是232编程口,工作于MODBUS从模式,一般只用于编程和连接人机设备。另一个口为485接口,除了具有串口1所具有的功能外,还能工作于MODBUS主模式、自由通信模式,具有强大的通信功能。与一般的PLC相比,它不需要额外购买连接电缆和通信组件。
2、具有48K的程序空间,9000个中间接点,9999个内部寄存器,加上极其强大的应用指令,能够方便地编写很复杂的程序,甚至是复杂的通信协议。
3、V80 PLC的默认通信协议就是MODBUS从协议(RTU),甚至内部变量的编址方式也是按照协议进行的,所以在MODBUS通信的应用性上具有无可比拟的优势。对于不支持MODBUS协议的设备,则可以通过自由通信方式编写。
三、与兼容标准MODBUS RTU协议的变频通信
对于采用MODBUS RTU从协议的设备,可以把V80PLC的串口2设置成MODBUS主的方式与其进行直接互连。下面以东元7200MA变频器为例,下面是引用其说明书上的一段文字:
东元7200MA变频器采用了MODBUS RTU从协议,它的通信数据格式描述如下:
在MODBUS RTU 模式的通讯协议中,一个信息(Message)乃由4 个部份组成:Slave 地址、功能码、数据及CRC-16数据校验,并依序送出。每一个信息的开始与结束,皆以3.5个字符(Character)的间隔时间来做识别。
对于V80系列PLC,上面的信息只是证明了它采用了部分MODBUS从协议(只支持03、10H这两种命令,也就是读写寄存器4XXXX命令),是可以与V80直接连接的,而具体的细节就不需要关心了,因为V80_PLC的M_BUS指令已经封装了这些数据过程。我们只关心如下参数:
1、读写类型及设备地址。
2、目标设备的寄存器(线圈)号,本地存放数据的寄存器(线圈)号,信息长度。
3、通信间隔,也就是多久通信一次。
4、一些通信参数,如波特率、奇偶校验位、通信超时时间等
根据这几项参数,用以下程序就可以实现与东元变频器的通信了。
假设东元变频器上的设备地址为1,上图的程序完成了这样一种功能:把PLC内部41100~41115变量的内容,写到东元变频器寄存器区域偏移为00~015的连续16个寄存器里去,中间继电器01000每次从0变为1,双方通信一次。当然在之前要对PLC进行一下参数设置,具体可参见V80PLC的软件手册。
四、与其它协议的变频器通信
对于不兼容标准MODBUS RTU协议的变频器,可以采用自由通信功能块实现。相对于M_BUS指令,自由通信的编程难度要大得多,但也灵活得多,大体上跟一些高级语言(如C语言)的编程思路差不多。用户最好具有一定的通信编程的经验,并需要先准备好一些调试工具,如232->485转换器、串口监控软件等,因为影响通信的因素太多,有一些好的调试工具往往可以收到事倍工半的效果。
下面以正弦SINE003系列变频器为例,说明V80PLC的自由通信协议编程方法。
正弦SINE003系列变频器的通信格式如下:
异或校验
数据含义:数据帧从机地址至数据信息的异或结果。既第 2字节与第3字节异或的结果,再与第4字节异或,以此类推至第13字节。
数据类型:16进制,单字节。
发送方式:将校验和字节的高 4位和低4位拆分并转换为ASCII码,先高后低发送。
结果处理:当校验结果小于等于 1FH,则校验结果加20H。
它使用了ASCII码来表示传输内容,用STX(02H)、ETX(03H)作为开始和结束标志,也是一种比较典型的通信协议。使用前首先要把数据转换成ASCII码,V80PLC提供了ASCBIN及BINASC指令,来完成 “0~H”这十六个ASCII数字与十六进制码的互换。
当发送脉冲产生时,各数据被换成ASC码并存放在发送缓冲区中,每个二进制码转换后占二个字。
SINE003采用异或校验,只针对ASC码部分,这部分程序如下:
实际上还有几个字节的异或指令没列出来,然后对异或结果进行判断,小于1FH则加20H,之后可以用字组拆分指令“PACK”把它拆成两个字节,按先高后低填到发送区,这部分比较简单,不再单独列出,下面是发送和接收程序。
发送程序比较简单,只需填一个发送长度即可,而接收的情况则要复杂一点(图里没有体现出来)。在发送的同时就打开接收,使能开始字符和结束字符(通过设置控制位,这里没画出来),并把开始字符和结束字符填好,还有一些超时时间之类的设置(有兴趣的可以参见V80PLC的软件手册),这样当接收到“02H”就认为是一帧的开始,接收到“03H”就认为是一帧的结束,当然也可以结合其它条件,如字符超时等,各种状态都可以在状态位里体现。
接收到完整的一帧后,状态位里会有指示,然后把接收回来的数据进行校验,并重新转换成十六进制,就可以进行各种处理了。
五、结束语
采用V80系列PLC与变频器通信的方案,可以大大地节省成本,并带来更高的可靠性。
文章版权归西部工控xbgk所有,未经许可不得转载。