Modbus协议是广泛应用于电子控制领域的一种现场总线协议,其免费开放性受到了很多商业用户的亲睐,成为全球最为流行的现场总线协议之一。它支持多种电器接口,如RS-232,RS-485等。Modus协议包括ASCII(美国信息交换码)、RTU(远程终端设备)两种。许多工业设备,包括 PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。
我国对于Profibus-DP技术的应用和研究主要以系统集成和工程应用为主,对于实现Profibus—DP与Modbus之间数据转换的产品相对较少,且被一些公司垄断,价格昂贵,针对变频器领域的具体应用的产品更是少之又少,对于不具备DP通信能力的变频器推广与应用形成了瓶颈。
因此,目前迫切需要开发出一种装置,可以实现采用Modbus通信协议的变频器与控制系统中的Profibus—DP主站之间进行通信,使该类变频器具有Profibus-DP通信接口。
1 协议转换通信接口硬件设计
1.1 协议转换通信接口总体结构框图
图1是针对变频器的Profibus—DP与Modbus协议之间转换的通信接口总体结构框图,主要包括主控制器、SPC3通信单元、光耦隔离电路、RS-485驱动电路、5 V隔离电源、用户接口电路及相应的外围电路。
1.2 协议转换通信接口硬件电路设计
如图2所示,协议转换单元中的主控制器采用PHILIPS公司的P89C51RD2HBBD单片机,主要用于控制Profibus-DP 协议芯片SPC3收发DP主站数据,并通过执行P89C51RD2HBBD单片机相应的协议转换程序,将DP数据转换为Modbus数据发送给变频器用户端;通过用户接口电路也可将变频器返回的数据信息通过SPC3通信单元传送给DP主站;另外,在协议转换过程中,由于变频器端有4种不同的波特率,分别为 19 200bps,9 600 bps,4 800 bps,2 400 bps,而对于Profibus—DP其传输速率最高可达到12 Mbps,为防止数据在传输过程中可能产生丢失的情况,所述协议转换单元另一重要功能即解决DP与Modbus协议在转换过程中出现的通信速率不匹配问题:为实现变频器与主控制器之问具有相同的传输速率,主控制器的两个I/O口通过用户接口单元与变频器连接,在协议转换单元开始工作时,主控制器通过此接口获得变频器发送的波特率选择信号,依此设置相应的异步串行通信的波特率,使变频器与主控制器的传输速率一致。
协议转换单元中的Profibus—DP协议芯片SPC3是Siemens为智能从站开发的一款Profibus专用通信芯片,该芯片集成有完整的DP协议,能自动检测9.6 Kbps到12 Mbps范围的波特率,内部集成有1.5KB的RAM。该芯片是专为循环MS0和非循环的MS1数据交换(即Profibus DP-V0和DP-V1)设计的。利用此芯片只需要极少的外部器件就可以实现一个Profib us的站点;在本通信接口模块中,其8根数据总线、11根地址总线以及相应控制总线分别与协议转换单元中的主控制器相连;另外,SPC3芯片的数据发送信号TXD,数据接收信号RXD以及发送使能信号RTS与RS-485驱动电路相接;SPC3的外部时钟接口有24 MHz和48 MHz两种可选,本设计采用48 MHz的有源晶振,为SPC3提供时钟信号。另外,SPC3通过对48 MHz的时钟信号四分频为主控制器提供12 MHz的工作时钟。
所述RS-485通信单元,实现了本接口通信装置DP从节点的物理层功能,其中,为避免总线信号受到DP从站设备的干扰,总线A、B数据信号线接口采用50 M波特率的光耦HCPL 7101隔离,RTS信号线采用10 M波特率的光耦HCPL0601隔离;此外,为防止设备启用时,RTS信号高电平占用总线而引起总线系统错误,HCPL7101输出端先经过反相器74HC132在接入总线;另外,对于光耦隔离电源本接口设计采用芯片ADUM5000,ADUM5000为2.5 kV隔离DC/DC转换芯片,其电源输入为5 V或3.3 V,输出5 V或3.3 V;本设计中所选ADUM50 00的输入输出所选均为5 V,其中输入端电源是由变频器通过用户接口提供,其隔离出的5 V电源为RS-485驱动电路以及光耦的后级供电。
2 协议转换通信接口软件设计
2.1 主程序流程
如图3所示,主程序流程:首先初始化SPC3,由DP主站配置相应的组态报文以及参数报文,同时初始化P89C51RD2HBBD单片机的异步串行通信接口;在SPC3完成初始化后,即可与DP主站进入数据交换状态,等待主站发送命令;若主站有数据输出,单片机取得数据存入输出数据缓冲区(相对于主站),如果缓冲区无溢出,调用Modbus协议程序,把数据封装为Modbus帧格式,通过串口传送给变频器端。如果输出缓冲区有溢出,产生外部诊断,在DP主站下一次轮询从站获取诊断报文时,发送给主站,由主站给予处理。变频器端在接收到DP主站发送的命令后,返回响应数据,单片机通过串口获取该数据,并存入输入数据缓冲区(相对于主站),若输入缓冲区无溢出,存入SPC3数据缓冲区,等待轮询,与主站交换数据。若有溢出,产生外部诊断,在DP主站下一次轮询从站获取诊断报文时,发送给主站,由主站给予处理。
2.2 关键技术研究——可靠性与实时性
在协议转换过程中,由于变频器端有4种不同的波特率,分别为19 200 bps,9 600 bps,4 800 bps,2 400 bps,而对于Profibus—DP其传输速率最高可达到12 Mbps,两者的通信速率并不完全匹配,为防止由于DP主站通信速率相对变频器较高而致使发送的控制命令信息被覆盖掉,在P89C51RD2HBBD单片机中开辟输出双缓冲区,即协议转换单元接收DP主站发送数据时,先将其存储在第一个缓冲区,待数据转送给变频器后,立即清空该缓冲区,并置位第一个缓冲区的空标志位,等待下一次数据存储,在下次数据到来时,首先查看两个缓冲区的空标志位,把数据存储到已经清空的缓冲区中,再通过协议转换程序处理后及时发送至变频器,通过该双缓冲区从而避免数据信息被覆盖掉的可能性,同时,为防止在一些特殊情况下,比如DP通信速率达到最高,而变频器数据传输速率设置为最低,可能导致双缓冲区溢出而丧失避免数据信息被覆盖的功能,可利用SPC3通信单元产生数据溢出用户诊断报文,发送至DP主站,主站通过读取诊断信息获知产生错误原因,并作出相应处理。对于变频器侧数据传输速率远远大于DP通信的波特率时,在单片机中开辟输入双缓冲区,采用同样的方式达到通信接口数据传输的可靠性与实时性。
3 测试实验与结果分析
为了验证本文所设计的Profibus-DP与Modbus协议转换接口软硬件的正确性与合理性,结合实验室现有的实验条件,采用PLC 300作为DP主站,搭建实验测试平台。测试流程如图4所示:首先,对DP主站进行初始化,在进入DP主站进入数据交换状态时,根据变频器实际的控制命令,由DP主站向变频器端发送控制命令帧,协议转换接口在接收到DP主站发送的数据后,解析出实际的变频器控制命令,将其封装为Modbus数据,送至变频器端,变频器根据所接收到的Modbus数据,做出相应的回复,其返回数据再通过DP与Modbus协议通信接口转换为DP帧格式的数据送至DP主站。同时为了更加直观的观察协议转换接口转换的DP数据与Modbus数据,分别采用ProfiTrace对DP主站发送和接收的数据进行监控,同时,协议转换接口将所得到Modbus数据送至串口调试助手,通过串口调试助手监控所转换的Modbus数据的与DP主站所交换的数据是否相同,从而提高了测试试验的可信度,也更进一步验证了协议转换接口的功能的可靠性。其中ProfiTrace为DP数据监测装置,通过相应的操作软件Proficore可以实时的获取DP总线上传输的数据。
对于DP主站的初始化,如图5所示,当DP主站完成参数报文配置和组态报文配置,在得到诊断信息00 0C 00 0100 08之后便进入数据交换阶段,如图6所示,实线方框圈起的部分为DP主站发送的变频器命令,虚线方框圈起的部分为变频器返经过DP与Modbus协议转换接口返回的响应数据,通过Proficore监测界面可以看到,DP主站输出的数据与所接收到的数据都为06 C8 00 00 25,其中,06 C8 00 00 25为DP主站向变频器发送的控制启动命令,变频器在正确接收到该控制命令之后,将所接收到的数据返回至DP主站,以便告知主站命令数据正确接收。
另外,如图7所示,通过串口调试助手获得的协议转换接口转换的Modbus数据为01 06 C8 00 00 25 76 71,总共8个字节,其中01为变频器定义的地址,76 71为Modbus数据的CRC校验码,06 C8 00 00 25为实际的数据部分,与DP主站发送和接收到的数据一致。
由于Profibus—DP通信速率最高可达到12 Mbps,对于变频器端定义了四种不同的波特率,分别为19 200bps,9600bps,4 800 bps,2 400 bps,为了验证协议转换接口在不同通信速率下转换数据的正确性与可靠性,通过DP主站以及协议转换接日分别设置不同频率的通信速率,经过上述实验对此通信接口进行多次测试,均能保证数据传输正确。
4 结论
综上所述,本协议转换通信接口是在一块电路板上有效的集成了Profibus-DP智能从站接口,又嵌入了DP数据与Modbus数据转换功能,使采用Modbus RTU协议通信的变频器可以与采用Profibus—DP协议的主站通信。在硬件方面,采用P89C51RD2HBBD+SPC3协议芯片+RS485驱动电路,即可实现Modbus协议与Profibus-DP协议之间的转换,通过用户接口与变频器物理连接;在软件方面,根据变频器的四类控制命令:控制变频器起停、读变频器当前状态、设置变频器参数与读取变频器参数,由DP主站把控制命令转化成相应的DP帧格式数据发送到本装置的DP从节点,主控制器通过SPC3通信单元获取该数据之后,将其封装为Modbus数据,利用单片机的异步串行接口发送给变频器,达到控制变频器的目的,同样,变频器根据接收到的控制命令返回相应的数据信息,主控制器通过用户接口电路获得,并提取有效数据将其发送至SPC3协议芯片的输出缓冲区,与DP主站进行周期性交换数据,另外,为实现变频器与DP主站的通信速率匹配,通过在主控制器内部RAM开辟5字节的双缓冲区,在主控制器通过SPC3通信单元接收DP主站数据时,先判断两缓冲区的空标志位,将数据存储到空标志位为0的缓冲区中,经协议转换处理发送给变频器后,立即清空该缓冲区以及相应的空标志位,等待下一次数据传输,同时,为确保协议转换的安全可靠性,如果双缓冲区产生溢出的情况时,通过SPC3通信单元产生溢出诊断报文返回至DP主站,由DP主站做出相应的处理。
与现有技术相比,本设计针对采用Modbus RTU协议的变频器,提供了一种Modbus与Profibus-DP之间进行协议转换的通信接口装置。通过实验验证,本通信接口软硬件设计正确,可以实现采用Modbus RTU协议的变频器与DP主站进行通信,且数据转换实时可靠。在一定程度上,对于采用Modbus协议通信的变频器,本通信接口扩大了其应用范围,具有重要的实际意义。