1、导言
可编程操控器以其高可靠性,装备灵敏和完善功用,工业操控体系中到越来越广泛应用。但操作员所需求报表打印、趋势图形显现、工况查寻、参数线修正等功用,PLC却不能直接便利供给。一般选用计算机PC与PLC组成一个完好监控体系。本文以台安TP02系列PLC为例,评论用Visual Basic(VB)完结PLC与上位机通讯。
2、VB通讯控件中运用
可编程操控器PLC与上位机PC之间通讯,下位机为PLC,根据其可靠性极高,首要承当操控功用,而上位PC机首要承当督查办理功用,兼备部分操控功用,如宣布运转,中止指令。VB言语是根据WINDOWS操作体系功用强、易学易用、主面向学习目标程序规划言语。VB带有专门办理串行通讯MSComm控件,只需设置几个首要参数就可以完结PLC与PC串行通讯。要完结通讯有必要设置MSComm相关特色值:
(1)CommPort:设置或传回通讯衔接端口代号
(2)Settings:设置初始化参数。以字符串方式设置或传回衔接速度、奇偶校验、数据位、中止位等4个参数
(3)PortOpen:设置或传回通讯衔接端口状况
(4)Input:从输入寄存器传 回并移除字符
(5)Output:将一个字符串写入输出寄存器
(6)InputLen:指定由串行端口读入字符串长度
(7)InBufferCount:传回接纳寄存器中字符数
3、软硬件之间:
台安TP02与上位机PC通讯时,完结两者通讯需求装备通讯线。
4、通讯程序完结
4.1 通讯初始化程序
首要,窗体开端规划之前,增加MSComm控件。
4.2程序编写:
4.2.1 通讯控件MSComm1特色设置:
MSComm1.CommPort = 1 设置端口号
MSComm1.Settings = “19200,E,7,2” 设置通讯参数
MSComm1.InputLen = 0 设置读入字符串长度
MSComm1.PortOpen = True 设置通讯端口状况
4.2.2 PLC运转程序:
STX$ = “::”
TransmitBuf$ = “01?5RUN”
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 12
In1$ = MSComm1.Input
4.2.3 从PLC读取材料,将寄存器内数据材料PC上显现调查监控(反应时间50ms):
STX$ = “::”
transmitBuf$ = “01?5MRVD000102”
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 20
InData$ = MSComm1.Input
Label2.Caption = Mid$(InData$, 10, 4)
Label3.Caption = Mid$(InData$, 14, 4)
4.2.4从PLC读取材料,将RelayC0001状况PC显现进行监控(反应时间50ms):
STX$ = “::”
transmitBuf$ = “01?5MCRC0001”
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 13
In4$ = MSComm1.Input
Coil$ = Mid$(In4$, 10, 1)
C1% = CInt(Coil$)
Label6.Caption = C1%
4.2.5 设定Relay状况,将Relay设定为ON(反应时间50ms):
Dim C1 As Integer
STX$ = “::”
transmitBuf$ = “01?5SCSY00011”
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 12
In2$ = MSComm1.Input
4.2.6 PLC中止运转:
STX$ = “::”
transmitBuf$ = “01?5STP”
sum$ = CheckSum(transmitBuf$)
ETX$ = Chr$(13)
SXD$ = STX$ + transmitBuf$ + sum$ + ETX$
MSComm1.Output = SXD$
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 12
In3$ = MSComm1.Input
4.2.7 VB6.0下CheckSum函数代码如下:
Private Function CheckSum(transmitBuf$)
L = Len(transmitBuf$)
Add = 0
Dim k, sum As Integer
For k = 1 To L
TJ$ = Mid$(transmitBuf$, k, 1)
Add = Add + Asc(TJ$)
Next k
Do While Add >= 256
Add = Add – 256
Loop
Add = 255 – Add + 1
tempBuf$ = Hex$(Add)
CheckSum = LTrim(tempBuf$)
End Function
5、定论
PLC与上位机结合,并VB6.0传送数据所构成计算机监控体系,近距离传输数据现场操控来说是一种性价比很高解决方案。充分使用PLC抗干扰功能和PC强壮图形显现,浮点运算特色,与之有用结合,最大极限,合理使用资源