基于VB的台达PLC与监控计算机的串行通信实现.docx

上传人:b****7 文档编号:23742095 上传时间:2023-05-20 格式:DOCX 页数:11 大小:275.44KB
下载 相关 举报
基于VB的台达PLC与监控计算机的串行通信实现.docx_第1页
第1页 / 共11页
基于VB的台达PLC与监控计算机的串行通信实现.docx_第2页
第2页 / 共11页
基于VB的台达PLC与监控计算机的串行通信实现.docx_第3页
第3页 / 共11页
基于VB的台达PLC与监控计算机的串行通信实现.docx_第4页
第4页 / 共11页
基于VB的台达PLC与监控计算机的串行通信实现.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于VB的台达PLC与监控计算机的串行通信实现.docx

《基于VB的台达PLC与监控计算机的串行通信实现.docx》由会员分享,可在线阅读,更多相关《基于VB的台达PLC与监控计算机的串行通信实现.docx(11页珍藏版)》请在冰豆网上搜索。

基于VB的台达PLC与监控计算机的串行通信实现.docx

基于VB的台达PLC与监控计算机的串行通信实现

基于VB的台达PLC与监控计算机的串行通信实现

ImplementationofSerialCommunicationBetweenMonitoringComputerandDeltaPLCBasedonVisualBasic

WangNaiquan

摘要:

PLC直接与现场控制层的检测仪器仪表设备连接,是底层控制网络的组成部分,是工厂自动化系统的基石,因此实现与监控层计算机的通信对系统的优化运行有重要意义。

文章基于VB讨论台达DVPPLC与监控计算机的通信问题。

关键词:

VB通信协议可编程控制器

Abstract:

ThePLCisacomposingpartofInfranet,itlinkstothemeasuringinstrumentanddeviceinfieldcontrollayerdirectly,andisthefootstoneoffactoryautomationsystem.ThereforeitisveryimportanttorealizethecommunicationbetweenPLCandmonitoringlayercomputerforoptimizationofsysterunning.ThepaperdiscussedtherelatedcommunicationproblemsbetweenDeltaDVPPLCandmonitoringcomputerbasedonVisualBasic.

KeyWords:

VisualBasicCommunicationprotocalProgramablelogiccontroller

[中图分类号]TP273[文献标识码]B文章编号

1引言

现场设备层中的设备种类繁多,有传感器、启动器、驱动器、I/O部件、变送器、阀门等等,当然也包括现场检测仪器仪表设备。

PLC是现场设备控制层不可缺少的部分,已经非常普及,如何简便地实现与PLC的交互已经成为众多厂商新的竞争战场。

由此产生了人机界面等软件产品,这些产品的出现简化了对PLC的控制、操作,使PLC的应用更加方便;但也有其共同的缺点,价格普遍偏高和可二开发性较差。

VB作为“原始”的编程语言在这两方面无疑有着明显优势的,本文结合一个简单的案例,用比较基础的概念讨论如何通过VB实现PC与PLC之间的通信问题,这对刚涉步控制领域的工程师或许是有帮助的。

在现场设备层中各式各样的设备都可以和计算机联机,而最简单的自动化联机方式就是使用串行通信,VB提供了串行通信控件可以让开发者开发出串行通信的系统程序,以下是对相关问题的粗略讨论。

2串行通信基本概念

数据通讯中有两种类型的通信形式,即并行通信(ParallelCommunication)和串行通信(SerialCommunication)。

例如,如果有8位数据需要传送,那么并行通信一次就可以完成8位的传输量;而串行一次只能传送1位。

图1表示了两种不同的通信模式,常用的串行通信也有两种,分别为RS-232和RS-485。

2.1RS-232串行通信

RS-232的信号准位是参考地线而言的,如图2所示。

相对于参考接地端1传输端传送数据;接收端则相对于参考接地端2复现出传送端的传送的数据。

图2RS-232串行通信示意图

由图2可知,由于两个接地端准位不一定一样,而且很容易受到干扰,所以信号在RS-232线路传输时,很容易产生错误。

2.2RS-485串行通信

RS-485的信号传输方式如图3所示。

RS-485的信号被传送出去时会分成正负两条线路,当到达接收端后,在将信号相减还原成原来的信号;如果将原始的信号表示成(DT),而被分成的信号分别标示成(D+)及(D-),则DT=(D+)-(D-)。

同理,接收端在接收到信号后,也依据上式还原成原来的样子。

如果线路受到干扰,两条线路的信号分别为(D+)+Noise与(D-)+Noise。

接收端还原信号为(DT)=[(D+)+Noise]-[(D-)+Noise],与先前结果一样,所以RS-485可以有效的防止噪声的干扰。

3VB的基本概念

VB(VisualBasic)是微软的窗口软件,提供了很多接口成员,对象、属性、事件、方法就是4个重要的接口,VB提供了许多常用的控件。

3.1卷标控件

卷标控件如图4(a)所示,该控件专用于显示文字、数字用,显示如图4(b)所示

3.2按钮控件

按钮控件如图5(a)所示,该控件使用率很高,提供一个供系统用户操作用的按钮,如图5(b)所示。

3.3定时器控件

定时器控件如图6所示,该控件的最大作用在固定的时间内可执行所设置的程序代码一次。

VB提供了大量的控件,在此不再多述。

4基于MScomm控件的串行通信

要完成VB与PLC等设备的串行通信要用到MScomm控件,在此有必要对该控件作较详细的说明。

Mscomm是一个非标准控件,需要要手动添加许多项目,其步骤如下。

1)选择菜单的【工程】

2)选择【部件】

3)在弹出的对话框中做如图7的选择。

图7对话框界面

4)如图8所示,在部件选项卡就会出现MScomm控件。

图8MScomm控件

5)基本属性

4.1MODBUSASCII

Modbus分为ASCII和RTU两种,ASCII采用的格式和校验相对简单,本文采用ASCII格式,并仅对使用的功能码进行说明,更多的信息,请参看协议的详细说明。

1)通信格式

LRC算法:

ADRH+CMDH+DATAH,然后取2的补码。

2)功能码

05,写入线圈

01,读线圈状态

06,写入单个字寄存器

4.2VB与PLC通信的实现

以下举例说明现场设备与PLC通信的实现。

1)控制要求:

控制PLC的起动、停止,并显示运行状态(绿色为运行,红色为停止);能够用交替型按钮控制Y0,Y1,并用指示灯显示Y0,Y1状态(绿色为运行,红色为停止);能够对D256,D512两个寄存器进行数值写入的操作。

2)实现思路:

PLC起动停止的标志位为M1072,查DVP协议,知道地址为H0C30,按功能码01操作;同样Y0,Y1的地址分别为H0500,H0501。

写入FF00为ON,0000为OFF,按功能码05操作;D256,D512地址分别为H1100,H1200,按功能码06操作即可。

3)VB接口的设计如图10所示。

图10监控程序界面

用按钮控制PLC的起动停止,Y0、Y1的ON/OFF及D256、D512写完数据的发送;用Shape组件做指示灯,表示PLC的运行状态和Y的状态;用timer组件不停的读取M1072的状态,以判断PLC的运行情况;用MScomm控件实现PC与PLC的通信。

4)编程实现的代码构成

(1)LRC算法校验的实现

PublicFunctionLRC(strAsString)AsString

c=0

l=Len(str)

Forc=c+1Tol

c_data=Mid$(str,c,2)

d_lrc=d_lrc+Val("&H"+c_data)

c=c+1

Nextc

Ifd_lrc>&HFFThen

d_lrc=d_lrcMod&H100

EndIf

h_lrc=Hex(&HFF-d_lrc+1)

IfLen(h_lrc)>2Then

h_lrc=Mid(h_lrc,Len(h_lrc)-1,2)

EndIf

LRC=h_lrc

EndFunction

(2)运行的开始就判断PLC的状态并设置标志位

'初次运行打开串口,并显示PLC运行状态

PrivateSubForm_Load()

Dims1AsString

Dims2AsString

Dims22AsString

Dims3AsString

Dims4AsString

MSComm1.PortOpen=True

s2="01010C300001"

s22=LRC(s2)

s1=":

"+s2+s22+Chr$(13)+Chr$(10)

MSComm1.Output=s1

s3=MSComm1.Input

s4=Mid$(s,6,8)

Ifs4="0C30FF00"Then

plc=1'PLC为运行标志

Else

plc=0'PLC为停止标志

EndIf

EndSub

(3)下面一段为用指示灯表示PLC的运行状态

PrivateSubTimer5_Timer()

Dims1AsString

Dims2AsString

Dims22

Dims3AsString

Dims4AsString

s2="01010C300001"

s22=LRC(s2)

s1=":

"+s2+s22+Chr$(13)+Chr$(10)

MSComm1.Output=s1

s3=MSComm1.Input

s4=Mid$(s3,8,2)

Ifs4="31"Then

plc=1'PLC为运行标志

Else:

Ifs4="30"Thenplc=0'PLC为停止标志

EndIf

Ifplc=1Then

Label2.Caption="PLC正在运行......"

Shape1.FillColor=RGB(0,255,0)'green

Else

Label2.Caption="PLC已经停止"

Shape1.FillColor=RGB(255,0,0)'red

EndIf

EndSub

(4)PLC的起动与停止

'起动PLC

PrivateSubstart_Click()

DimstroutAsString

Timer5.Enabled=False

str="00050C30FF00"'M1072为PLC起动停止标志位。

查地址表,M1072为OC30.FF00为置

ON,0000为置OFF。

'以上都是固定格式,要牢记。

LRCC=LRC(str)'计算str的lrc校验码。

strout=":

"+str+LRCC+Chr$(13)+Chr$(10)'欲传送之数据。

13为D,10为A

MSComm1.Output=strout

Timer5.Enabled=True

EndSub

'停止PLC

PrivateSubstop_Click()

DimstroutAsString

Timer5.Enabled=False

str="00050C300000"

LRCC=LRC(str)

strout=":

"+str+LRCC+Chr$(13)+Chr$(10)

MSComm1.Output=strout

Timer5.Enabled=True

EndSub

Y0、Y1的ON/OFF与PLC起动/停止的控制方式相同,指示灯的表示方式也相同。

D256,D512数据写入的操作类似,限于篇幅其它代码就不再列出了。

5结束语

VB语言易于编程使用,为与串行设备的通信提供了很大的方便。

台达PLC采用标准的目前广为流行的MODBUS协议,为实现PLC与监控计算机的通信提供了简化的平台。

由于台达所有的机电产品都支持MODBUS协议,所以,掌握了VB与PLC通信过程,也就等于掌握了PC与台达所有机电产品的通信。

参考文献[略]

作者简介

王乃全(1978-),男,自动化设备工程师,主要从事PLC控制系统的开发与技术支持。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1