基于VB6.0实现西门子PLC与PC间的TCP通讯

发表时间:2020/5/8   来源:《科学与技术》2019年第23期   作者:黄兴武
[导读] 主要介绍在Microsoft Visual Basic 6.0开发环境下,
        摘要:主要介绍在Microsoft Visual Basic 6.0开发环境下,通过Winsock1控件,用以太网的方式实现PC机与西门子1200/1500PLC系统之间数据通信的方法,并把该通信方法用在环卫压缩设备控制系统中。
        关键词:PLC,VB,通信
        Abstact:This paper introduces data communication method between PC applications,which take Visual Basic 6.0 as their programming language and SIMATIC S7-1200 or S7-1500 PLC.
        Keywords:PLC,VB,communication.
        众所周知,工业自动化监控系统一般是采用组态软件或高级语言开发,而采用组态软件开发是需要买软件授权才能交付,虽然开发速度快,但成本较高而且后期功能扩展不够灵活,也无法开发更加复杂的业务,如实现信息化和工业化的有机融合,因此如何帮助开发者降低开发成本、提高工作效率,快速开发出对行业有显著帮助和价值的自动化监控系统是本文所涉及的话题。
        该控制系统由西门子S7-1200 PLC、PC机等构成,其中PLC由以下组成:1214CPU模块(带以太网口),数字量输入/输出模块,模拟量输入模块。
        1 监控系统的通信参数
  系统运行时需要在PC与PLC之间通信的参数主要有如下:PC→PLC:压缩设备电机启动和停止指令、压缩指令;PLC→PC:压缩设备液压系统压力、温度和液位值,接近开关信号以及拉线位移传感器值。
        2 监控系统软件程序设计
(1)VB通信程序
Dim Start,Stop, Compress As Byte
Dim Palue, Temperature,Level,
        Displacement As Single
      Dim Limit(5) As Byte
_______________________________
Private Sub connect_Click()         
Winsock1.Close     ‘关闭连接              
Winsock1.RemoteHost = "192.168.2.5"   ‘与PLC的IP地址
Winsock1.RemotePort = "2000"         ‘与PLC端口号
Winsock1.connect   ‘关建立连接             
End Sub
_______________________________
Private Sub Form_Load()
Winsock1.Close     ‘关闭连接                 
End Sub
Private Sub Close_Click()
Winsock1.Close     ‘关闭连接                 
End Sub
_______________________________
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.state <> sckClosed Then
    Winsock1.Close
    Winsock1.Accept requestID      '接受具有 requestID 参数的'连接。
End If
End Sub
_______________________________
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim rec() As Byte
        Winsock1.GetData rec(), vbByte
       
        Dim i As Integer  ‘限位’
        For i = 0 To 5
        Limit(i) = rec(i)
        Next i
        Palue=Val("&H" & Hex$(rec(6)) & Hex$(rec(7)))  ’压力值数据处理
        Temperature= Val("&H" & Hex$(rec(8)) & Hex$(rec(9))) ‘温度值’
        Level= Val("&H" & Hex$(rec(10)) & Hex$(rec(11)))  ’液位值数据处理
        Displacement= Val("&H" & Hex$(rec(12)) & Hex$(rec(13)))  ‘位移’
      End Sub
_______________________________
Private Sub Timer1_Timer()
Select Case Winsock1.state
Case 0: state = " 关闭"
Case 1: state = " 打开"
Case 2: state = " 监听"
Case 3: state = " 连接挂起"
Case 4: state = " 识别主机"
Case 5: state = " 已识别主机"
Case 6: state = " 正在连接"
Case 7: state = " 已连接"
Case 8: state = " 同级人员正在关闭连接"
Case 9: state = " 错误"
End Select
Dim Strsend(2) As Byte
Strsend(0)= Start   ‘启动指令’
Strsend(1)= Stop   ‘停止指令’
Strsend(2)= Compress  ‘压缩指令’
If Winsock1.state = 7 Then
Winsock1.SendData Strsend ‘数据发送’
End If
   nowtime = Format(Now(), "yyyy-mm-dd hh:nn:ss")
End Sub
注:以上列举的是VB的通讯程序,其余程序未举出。
(2)西门子1200PLC通信程序



S7-1200PLC网络连接设置
       
        3 监控系统上位机软件界面
运用Visual Basic 6.0开发环境编写的PLC上位机控制程序,具有功能强大,编程简单,界面友好。界面如下图:

上图截取的是某化工企业正在使用的压缩设备操作界面。
        4 结束语
  该控制系统具有通信便捷,编程简单,同时不需要购买组态软件授权,控制系统成本降低,更能保证控制系统稳定可靠,可满足后续需要进行开发。





参考文献
[1] 向晓汉,苏高峰 西门子PLC工业通信完全精通教程,北京:化学工业出版社,2013
[2] 罗朝盛 Visual Basic 6.0程序设计教程(第4版)(普通高等教育“十一五”规划教材), 人民邮电出版社,2013
[3] 向晓汉,李润海,张硕 西门子S7-1200/1500 PLC学习手册 基于LAD和SCL编程书籍,化学工业出版社?
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: