VB下PLC与PC串口通信的实现解析文档格式.docx
《VB下PLC与PC串口通信的实现解析文档格式.docx》由会员分享,可在线阅读,更多相关《VB下PLC与PC串口通信的实现解析文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
VB;
串行通信;
MSComm;
PLC中图分类号:
TP391.8文献标识码:
A
ImplementationofSerialCommunicationBetweenPLCandPC
ZHANGChuan-wei,WANGYun-rui
(SchoolofMechanicalEngineering,XicanUniversityofScience&
Technology,Xican710054,China
Abstract:
AccordingtothecharacteristicsofDVPseriesProgrammableLogiccontrollers,acommunicationmethodbetweenthecomputerandPLCwithVBlanguageisintroduced,programmingandprocessisgivenindetail.Thisschemehasasimplehardwarestructureandispracticable,whichhasalsoareferencevaluetotherealizationofcommunicationbetweencomputerandPLCinothersupervisorsystem.Ithasbeenappliedsuccessfullyinelectricalreactivepowercompensationcontrolsystem.Keywords:
visualbasic;
serialcommunication;
PLC
0引言
PLC是80年代发展起来的新一代工业控制装置,由于可靠性高、适应性好、抗干扰能力优、接口功能强、编程简单、直观以及模块化结构、使用方便等优点,在工业控制领域中得到了广泛应用。
但是PLC无法进行复杂的运算和显示各种实时控制图表,人机交互性差、管理人员不能及时了解现场情况,为弥补PLC这方面的不足,工业控制中一般与计算机组成控制系统,PLC作为下位机使用,用来完成输入输出控制、逻辑运算、数据采集及状态判别等工作。
上位机一般用工业控制计算机,用来完成数据分析、计算、信息存储、状态显示、打印输出等功能,以实现对被控制系统的实时监控。
这种监控系统将计算机与PLC结合起来,使两者优势互补,且能够充分利用个人计算机强大的人机接口功能、丰富的应用软件、低廉的价格,组成高性能价格比的PC-PLC监控管理系统。
另外,考虑目前使用专业组态软件成本仍较高,且控制起来不够灵活,便利用VB下的MSComm通信控件,实现PLC与上位机之间的通信,开发了基于VB的变压器二次侧低压补偿PLC监控系统。
1系统构成
变压器二次侧低压补偿PLC监控系统的组成如图1所示,在PLC监控系统中,上位机PC的主要任务是通过电力变送器(PDM获取电力用户的用电信息,并通过标准RS232串行接口将现场数据实时传送到上位机,完成数据处理、储存、以及各数据量的实时显示等功能,并控制下位PLC按给定的控制算法实
现动作。
另外,在用户出现故障时上位机可控制下位PLC,及时报警以便尽快修复故障;
下位机采用台达DVP系列PLC,其主要任务是对用户端的用电品质进行控制,使功率因数基本稳定在用户设定值(一般0.91以上,设备发生故障时按上位机命令执行,
也可手动紧急处理。
图1系统组成
2串口通信控件
VB是Windows环境下简单、易学、高效的可视化编程语言开发系统,以其所见所得的可视化界面设计风格和面向对象的程序设计等特点,在实际的工程应用中得到了广泛的应用,是很多计算机软件开发人员开发的工具。
它不但提供了良好的界面开发环境,而且具有功能强大的通信控件MicrosoftCommunica-tionsControl(MSComm,提供了很强的串口通信能力。
VB中的MSComm控件的实用性强、功能完善,是实现计算机与外部设备数据交换的强有力工具。
该控件可设置用来发送和接收二进制数据或ASCII码数据,可对串口状态及串口通信的信息格式进行设置,实现对下位机地址和数据的接收和发送,达到多机通信的目的。
MSComm控件的编程非常方便,程序员不必花时间去了解复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
62
#控制与检测#
组合机床与自动化加工技术
MSComm控件提供了两种处理通信的方式:
一是事件驱动通信,它是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,因而可以利用MSComm控件的OnComm事件捕获并处理这些通信事件,On-Comm事件还可以检查和处理通讯错误。
编程时,在OnComm事件处理函数中加入自己的处理代码就可以了。
这种方法的优点是程序响应及时、可靠性高。
缺点是每个MSComm控件对应着一个串行端口,如果应用程序需要访问多个串行端口,必须使用多个MSComm控件;
另一种是查询方式,其实质上还是事件驱动,在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误,做出相应的处理。
如果应用程序较小,并且是自保持的,这种方法就更可取。
MSComm控件同时支持二进制格式和文本格式数据的接收和发送。
使用时须注意以下两点:
(1Input和Output属性接收和发送的字符串类型是Var-iant,因此在读取和写入缓冲区的数据要转换设置为Variant。
在接收时InputMode属性决定着接收的数据类型,InputMode设为ComInputmodeText,就可利用Input属性返回文本数据,如果Input-Mode设为ComInputModeBinary,就可利用Input属性返回二进制数据;
(2在VB程序编写时RThreshold和InputLen属性设置的值最好与PLC发送的值相等,否则极易引起数据传输混乱。
MSComm控件有很多重要的重要属性,其中最主要的有¹
CommPort属性:
设置并返回通讯端口号,格式为MSComm.Comm-Port=[PortNumber],设计时PortNumber可以设置成从1到16的任何数,但是如果用PortOpen属性打开一个并不存在的端口时,就会产生错误;
º
Settings属性:
以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位,格式为MSComm.Settings=[ParaString],ParaString是一个包含四部分的字符串,如/9600,N,8,10;
»
PortOpen属性:
设置并返回通讯端口的状态,也可以打开和关闭端口,格式为MSComm.PortOpen=[True/False];
¼
Input属性:
从接收缓冲区返回和删除字符,该属性在设计时无效,运行时为只读,格式为MSComm.Input;
½
Output属性:
向传输缓冲区写一个字符串,该属性在设计时无效,运行时为只读,格式为MSComm.Output=OutData,OutData为要发送的数据,可以是文本数据或二进制数据。
3PC与DVP系列PLC的通信
上位计算机数据传输程序设计在PLC与上位计算机通讯过程中,虽然PLC可以具有优先权启动通讯,但一般不使用这一方法,而采用上位机具有优先权,向PLC发送命令启动通讯,PLC自动返回响应的通讯方式。
计算机在与PLC通讯时,首先必须对通讯端口进行初始化处理,其初始化参数必须与PLC的通讯参数相同。
计算机与PLC之间采用主从应答方式,计算机始终具有初始传送优先权,根据需要向PLC发出读写命令;
下位机处于被动状态响应上位机的命令。
上位机读数据时通过通信口向PLC发出读数据命令,PLC响应命令并将数据传回上位机,上位机通过读通信口即可取得所需数据;
写数据时,上位机通过通信口向PLC发出写命令及数据,PLC即可接收。
当PLC没能正确响应时,PLC返回没能正确响应标志。
此外PLC通信模块还有其它命令代码,上位机发出不同的命令,PLC便能做出相应的响应。
通过PC的COM2与DVP系列PLC的RS-232端口通信来实现控制的具体实施过程:
(1通信协议设定:
DVP系列PLC的通信协议为MODBUSASCII模式,其通讯格式:
波特率9600bps、偶同位(Evenparity、1个起始位、数据长度为7、1个停止位。
(2通讯资料格式
PC与PLC之间按照表1所示的通讯格式进行通讯,表2是PLC的命令码,表3是PLC每一种设备的地址。
要实现何种功能就必须按照通讯格式使用规定的命令码和设备地址,这样才能正确接受和发送数据。
表1DVP-PLC通讯资料格式
格式说明编程说明
STX起始字节/:
03AH
ADR1
ADR0
CMD1
CMD0
DATA(0
DATA(1
,
DATA(n-1
LRCCHK1
LRCCHK0
END1
END0
PLC地址:
1个Byte
PLC通讯地址出厂设定值为
0x01
命令码:
1个Byte命令码及意义如下表
数据内容:
1~32Bytes
接收或发送的PLC装置地址
和数据内容
校验码:
LRC检查:
由ADD1到DATA(n
-1的内容相加取2的补码
结束字节:
2个Bytes
END1=CR,END0=LF
0DH、0AH
表2DVP-PLC命令码
命令码功能适用范围
01读线圈的状态S,Y,M,T,C
02读输入线圈的状态S,X,Y,M,T,C
03读取多笔寄存器内容T,C,D
05强制单线圈S,Y,M,T,C
06复位单个寄存器T,C,D
15强制多线圈S,Y,M,T,C
16复位多个寄存器T,C,D
表3DVP-PLC地址范围
设备范围地址
S0~10230000~03FF
X0~3770400~04FF
Y0~3770500~05FF
T0~2550600~06FF
M0~12790800~0CFF
C0~2550E00~0EFF表中,X-输入继电器,Y-输出继电器,M-辅助继电器,S-状态元件,T-定时器,C-计数器,D-数据寄存器。
(3通信初始化
MSComm1.CommPort=2c设定COM2为PC与PLC的通信端口
MSComm1.Settings=d9600,E,7,1d
MSComm1.InputMode=ComInputModeTextc返回文本数据
MSComm1.InBufferSize=1024
MSComm1.PortOpen=Truec打开COM1通信端口
(4计算LRC校验(下转第66页
63
2005年第12期#控制与检测#
tor仿真器和TimingAnalyzer分析工