关键词: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编程书籍,化学工业出版社?
论文作者:黄兴武
论文发表刊物:《科学与技术》2019年第23期
论文发表时间:2020/5/8