|
设
备
管
理
网
s
b
g
l
.
j
d
z
j
.
c
o
m
|
|
[组图]基于VB的台达PLC与监控计算机的串行通信实现(二) |
|
|
基于VB的台达PLC与监控计算机的串行通信实现(二) |
|
作者:佚名 文章来源:网络 点击数: 更新时间:2009-5-31 8:26:56 |
|
2)功能码
4.2 VB与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算法校验的实现
Public Function LRC(str As String) As String c = 0 l = Len(str) For c = c + 1 To l c_data = Mid$(str, c, 2) d_lrc = d_lrc + Val("&H" + c_data) c = c + 1 Next c If d_lrc > &HFF Then d_lrc = d_lrc Mod &H100 End If h_lrc = Hex(&HFF - d_lrc + 1) If Len(h_lrc) > 2 Then h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2) End If LRC = h_lrc End Function
(2) 运行的开始就判断PLC的状态并设置标志位
Rem 初次运行打开串口,并显示PLC运行状态 Private Sub Form_Load() Dim s1 As String Dim s2 As String Dim s22 As String Dim s3 As String Dim s4 As String 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) If s4 = "0C30FF00" Then plc = 1 Rem PLC为运行标志 Else plc = 0 Rem PLC为停止标志 End If End Sub
(3) 下面一段为用指示灯表示PLC的运行状态
Private Sub Timer5_Timer() Dim s1 As String Dim s2 As String Dim s22 Dim s3 As String Dim s4 As String s2 = "01010C300001" s22 = LRC(s2) s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10) MSComm1.Output = s1 s3 = MSComm1.Input s4 = Mid$(s3, 8, 2) If s4 = "31" Then plc = 1 Rem PLC为运行标志 Else: If s4 = "30" Then plc = 0 Rem PLC为停止标志 End If If plc = 1 Then Label2.Caption = "PLC正在运行......" Shape1.FillColor = RGB(0, 255, 0) Rem green Else Label2.Caption = "PLC已经停止" Shape1.FillColor = RGB(255, 0, 0) Rem red End If
End Sub
(4) PLC的起动与停止
Rem 起动PLC Private Sub start_Click() Dim strout As String Timer5.Enabled = False str = "00050C30FF00"
Rem M1072 为PLC起动停止标志位。查地址表,M1072为OC30.FF00为置ON,0000为置OFF。 Rem 以上都是固定格式,要牢记。
LRCC = LRC(str) Rem 计算 str的lrc校验码。 strout = ":" + str + LRCC + Chr$(13) + Chr$(10) Rem 欲传送之数据。13为D,10为A MSComm1.Output = strout Timer5.Enabled = True End Sub Rem 停止PLC Private Sub stop_Click() Dim strout As String Timer5.Enabled = False str = "00050C300000" LRCC = LRC(str) strout = ":" + str + LRCC + Chr$(13) + Chr$(10) MSComm1.Output = strout Timer5.Enabled = True End Sub
Y0、Y1的ON/OFF与PLC起动/停止的控制方式相同,指示灯的表示方式也相同。D256,D512数据写入的操作类似,限于篇幅其它代码就不再列出了。
5 结束语
VB语言易于编程使用,为与串行设备的通信提供了很大的方便。台达PLC采用标准的目前广为流行的MODBUS协议,为实现PLC与监控计算机的通信提供了简化的平台。由于台达所有的机电产品都支持MODBUS协议,所以,掌握了VB与PLC通信过程,也就等于掌握了PC与台达所有机电产品的通信。
|
|
资讯录入:admin 责任编辑:admin |
|
|
上一篇资讯: PLC和变频器在空压机节能改造中的应用
下一篇资讯: 基于VB的台达PLC与监控计算机的串行通信实现(一) |
|
|
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|