1 引言
广泛应用的PLC的数据管理能力与显示功能较差。如果将个人计算机与 PLC结合起来,二者实现优势互补,利用个人计算机强大的数据处理能力、丰富的应用软件和低廉的价格,可组成高性能价格比的控制系统,实现由上位机和PLC组成的控制系统的关键是二者之间的通信,本文给出了一种基于VC++的上位机和丰炜PLC串行通信的实现方法,首先介绍了丰炜PLC的串行通信协议,研究了丰炜PLC接受上位机的命令格式和数据帧格式;然后详细列举了几个VC++关于串行通信的WINOOWs API,分别介绍了每个API函数的功能、原型和参数;最后给出了基于VC++的上位机和丰炜PLC串行通信的参考程序。
2 总体结构
在本文的通信系统中,上位机选用面向对象的结构化程序设计语言Visual C++,使用Visual C++编写的程序具有代码尺寸小、运行速度快、移植能力强等优点,这些优点都是其它编程工具(Visual Basic、Delphi等)所不具备的。下位机选用丰炜VB1系列PLC,丰炜VB1系列PLC通讯功能完备,可满足复杂通讯需求。使用Visual C++实现串行通信主要有两种方法,一种方法是使用串行通信控件MSComm,另一种方法是使用WINOOWs API。使用串行通信控件MSComm的方法方便快捷,用较少的代码可以实现相同的功能,从而提高了编程效率,减少了因编程不当而导致的系统不稳定因素;使用WINOOWs API的方法功能强大,针对不同的要求,有多种不同的应用方式,灵活性更好,本文使用第二种方法。
基于VC++的上位机和丰炜PLC的串行通信连接如图1所示。
图1 上位机和PLC的通信连接
上位机端使用九针的DSUB,PLC端使用USB。DSUB的8脚(CTS)和USB的1脚(Vcc)相连;DSUB的3脚(TXD)和USB的2脚(D-)相连;DSUB的2脚(RXD)和USB的3脚(D+)相连;DSUB的5脚(GND)和USB的4脚(GND)相连;DSUB的4脚(DTR)和DSUB的6脚(DSR)相连。
2 丰炜PLC的串行通信协议
2.1丰炜PLC串行通信的命令格式
丰炜PLC接收上位机的命令格式如图2所示,通信格式由六个部分组成,分别是起始码、站号、命令、传输资料、结束码、检查码。