阅读| 订阅
阅读| 订阅
控制系统

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

星之球激光来源:中电网2013-03-07我要评论(0)

4.2 VB与 PLC 通信的实现 以下举例说明现场设备与PLC通信的实现。 1)控制要求:控制PLC的起动、停止,并显示运行状态(绿色为运行,红色为停止);能够用交替型按钮控...

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)

#p#分页标题#e#  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的状态并设置标志位

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

  Private Sub Form_Load()

  Dim s1 As String

  Dim s2 As String

  Dim s22 As String

  Dim s3 As String#p#分页标题#e#

  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 ’PLC为运行标志

  Else

  plc = 0 ‘PLC为停止标志

  End If

  End Sub

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

  Private Sub Timer5_Timer()

  Dim s1 As String

  Dim s2 As String#p#分页标题#e#

  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 ’PLC为运行标志

  Else: If s4 = “30” Then plc = 0 ‘PLC为停止标志

  End If

  If plc = 1 Then

  Label2.Caption = “PLC正在运行。。.。。.”

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

  Else

  Label2.Caption = “PLC已经停止”#p#分页标题#e#

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

  End If

  End Sub

  (4) PLC的起动与停止

  ’起动PLC

  Private Sub start_Click()

  Dim strout As String

  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

  End Sub

  ‘停止PLC

#p#分页标题#e#  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与台达所有机电产品的通信。

转载请注明出处。

免责声明

① 凡本网未注明其他出处的作品,版权均属于hth官方 ,未经本网授权不得转载、摘编或利用其它方式使用。获本网授权使用作品的,应在授权范围内使 用,并注明"来源:hth官方 ”。违反上述声明者,本网将追究其相关责任。
② 凡本网注明其他来源的作品及图片,均转载自其它媒体,转载目的在于传递更多信息,并不代表本媒赞同其观点和对其真实性负责,版权归原作者所有,如有侵权请联系我们删除。
③ 任何单位或个人认为本网内容可能涉嫌侵犯其合法权益,请及时向本网提出书面权利通知,并提供身份证明、权属证明、具体链接(URL)及详细侵权情况证明。本网在收到上述法律文件后,将会依法尽快移除相关涉嫌侵权的内容。

网友点评
0 相关评论
精彩导读
Baidu
map