利用VB进行PC与PCL通信代码
更新时间:2024-06-25 22:06:01 阅读量: 综合文库 文档下载
上海理工大学本科生毕业设计(论文)
利用VB进行PC与PLC通信
程序代码与程序运行结果
1 计算机与可编程控制器通信程序说明 1.1 计算机与可编程控制器通信运行界面
在编写程序代码之前应先应用VB6.0建立一个运行界面,如图5.1。
图5.1 PC与可编程控制器状态通信界面
1.2 计算机与可编程控制器通信程序说明
整个PC与可编程控制器通信的程序段中,结合所做界面与构想,分为初始运行、回路测试、置位、复位、返回和周期输入端口状态检测几大部分。 ? 初始运行
在初始运行程序段中,包括了对地址栏中地址、图形控件的初始设置,以及Mscomm控件通信参数的赋值。 ? 回路测试
回路测试的存在主要是,在状态通信前,能较为明显的显示计算机与可编程序逻辑控制器是否连接通畅。其中利用到时钟控件,来进行周期性地通信监测,在置位、复位及时间定期校核中此控件都被将使用到。 ? 置位
置位程序是用于在回路测试成功后,将计算机的设置值输出给可编程控制器的驱动程
1
个人计算机(PC)与可编程控制器通信
序。此程序段最为重要的是通信报文的建立,PC与可编程控制器通信的报文格式为:
STX CMD 数据ETX SUMH SUML 段 其中STX为开始标志,ASCII码:02H;ETX为结束标志,ASCII码:03H;CMD为命令的ASCII码;SUMH,SUML为从CMD到ETX求累加和,溢出不计。由于每字节十六进制数变为两字节ASCII代码,故校验和为SUMH与SUML。
因为报文的每一段节较为复杂冗长,所以需要调用子函数,来提高程序运行的速度。 ? 复位
复位程序是在一次输出后,将通信设置清零的过程,需要通过点击“置位”按钮来使程序响应。和置位程序一样,复位也同样调用子函数,来进行报文的构建。 ? 返回
返回程序是通过点击“退出”按钮来进行响应,使得其他所有程序段运行结束,退出主程序。
? 周期输入端口状态检测
如之前所述的,为了保证通信端口时时畅通,必须定期自动地让程序进行同行状态检测,而周期输出端口状态检测程序段则可以保证,在其他程序段没有进行检测时仍能对通信状态进行自动检测,提高了可靠度。其中在进行通信端口数校对时,由于计算机只可识别二进制码,所以还调用了一个将地址转为二进制的子函数。
2 计算机与可编程控制器通信代码
所使用的程序为:
Dim setadOut As String, DevDatOut As String '程序初始化
Private Sub Form_Load()
'列出可编程控制器端口输入输出全部地址 For g = 0 To 7
ListInAddr.AddItem g ListOutAddr.AddItem g Next g
For h = 10 To 17 ListInAddr.AddItem h ListOutAddr.AddItem h Next h
2
上海理工大学本科生毕业设计(论文)
ListInAddr.ListIndex = 0 ListOutAddr.ListIndex = 0
MSComm1.CommPort = 1 '通信口 MSComm1.Settings = \ '串口参数设置 MSComm1.Handshaking = 0 '握手信号
MSComm1.InputLen = 0 '设置和返回input每次读出的字节数,设为0时读出接收缓冲区中的内容
MSComm1.OutBufferCount = 0 '设置和返回发送缓冲区的字节数,设为0时清空发送缓冲区
MSComm1.InBufferCount = 0 '设置和返回接收缓冲区的字节数,设为0时清空接收缓冲区
MSComm1.PortOpen = True '打开串口
InAlarm.FillColor = QBColor(10) '输入信号指示灯,初始绿色 OutAlarm.FillColor = QBColor(10) '输出信号指示灯,初始绿色 End Sub
'回路测试
Private Sub command3_Click() Dim Tim As Single
MSComm1.InBufferCount = 0 '清空接收缓冲区 MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.Output = Chr(5) 'ENQ为请求标志,ASCII值5,VB中以chr(5)表示;
Tim = Timer '返回一个 Single,代表从午夜开始到现在经过的秒数
Do
If Timer > Tim + 1 Then MsgBox \与可编程控制器没有连接!\Exit Sub '判断InBufferCount=1时是否超时
Loop Until MSComm1.InBufferCount = 1
If Left$(MSComm1.Input, 1) = Chr(6) Then 'ACK为正确标志,ASCII值6,VB中以chr(6)表示;
MsgBox \与可编程控制器通讯正常!\与可编程控制器通讯检测\ Else
MsgBox \与可编程控制器通讯不正常!\与可编程控制器通讯检测\为
3
个人计算机(PC)与可编程控制器通信
警告信号
End If End Sub
'置位:置指定地址端口为ON,即打开指示灯 Private Sub command1_Click() Call diziq ()
If CStr(Val(setadOut)) <> setadOut Then Exit Sub ' CStr()函数是将数据转为string型;val()函数可去除数据中的字母,若数据中包含字母“<>”两边数值将会不同,条件就会成立
MSComm1.OutBufferCount = 0 MSComm1.InBufferCount = 0
DevDatOut = \DevDatOut '”7”表示强制通命令;diziq()函数中会调用DevDatOut()函数求的所需要的数值
FG:
MSComm1.Output = Chr(2) + DevDatOut + SumChk(DevDatOut) '求PC向可编程控制器发出的报文;
格式为:
STX CMD 数据ETX SUMH SUML 段 STX的ASCII码为02H;
Tim = Timer Do
If Timer > Tim + 1 Then: Exit Do '判断InBufferCount=1时是否超时 Loop Until MSComm1.InBufferCount = 1 If MSComm1.Input = Chr(6) Then MSComm1.InBufferCount = 0 Else
If MsgBox(\置位不成功\ If MsgBox(\置位不成功\ End If
OutAlarm.FillColor = QBColor(12) End Sub
'复位:置指定地址端口为OFF,即关闭指示灯
4
上海理工大学本科生毕业设计(论文)
Private Sub command4_Click() Call diziq
If CStr(Val(setadOut)) <> setadOut Then Exit Sub '数字区包括了字母 MSComm1.OutBufferCount = 0 MSComm1.InBufferCount = 0
DevDatOut = \ '“8”表示强制断命令 FG:
MSComm1.Output = Chr(2) + DevDatOut + SumChk(DevDatOut) Tim = Timer Do
If Timer > Tim + 1 Then: Exit Do Loop Until MSComm1.InBufferCount = 1 If MSComm1.Input = Chr(6) Then MSComm1.InBufferCount = 0 Else
If MsgBox(\复位不成功\ If MsgBox(\复位不成功\ End If
OutAlarm.FillColor = QBColor(10) End Sub
'周期检测输入端口状态 Private Sub Timer1_Timer() Call In_for End Sub
Private Sub In_for() Dim awe, awe1, weishu
Dim BN8, BN7, BN6, BN5, BN4, BN3, BN2, BN1 As Integer Dim devadd As String, setin As String, setad As String Dim weishu1 As String, setad1 As String setad = ListInAddr
If CStr(Val(setad)) <> setad Then Exit Sub '数字区包括了字母 If (setad Mod 10) < 4 Then '断定是低四位还是高四位 weishu = 0 Else
5
上海理工大学本科生毕业设计(论文)
SumChk = Right(Hex$(CHK), 2) '数据转换为十六进制,并去末两位 End Function
'关闭串口退出程序
Private Sub command2_Click() Set 可编程控制器Form = Nothing
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End End Sub
Private Sub Form_Unload(Cancel As Integer) Set 可编程控制器Form = Nothing
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End End Sub
3 计算机与可编程控制器通信测试
程序运行最初画面如图5.2:两处状态圆圈图形的颜色为绿色,两处地址均为初设值:0。
图5.2 程序运行最初画面
点击“回路测试”,会出现如图5.3.1话框,则说明PC与可编程控制器通信正常,若出现如图5.3.2的对话框,则说明通信不正常,需调试。
11
个人计算机(PC)与可编程控制器通信
图5.3.1 通信正常 图5.3.2 通信不正常
4 计算机与可编程控制器通信结果 4.1 开关输入量运行结果
通信正常时,在输入地址中选择一地址,以“5”为例。在可编程控制器上接通输入端5,即可发现状态,输入区圆圈图形的颜色变为红色。输出区没有变化。如图5.4。
红色
绿 色
图5.4 开关量输入测试结果
4.2 开关量输出运行结果
通信正常时,在输出地址中选择一地址,以“10”为例,点击“置位”,会发现,可编程控制器“10”输出端灯亮起,输出区状态图形显示为红色,输入区没变化,如图5.5。点击“复位”后,可编程控制器灯灭,输出区地址归零,状态图形显示为绿色,即恢复成图5.2状态。
12
上海理工大学本科生毕业设计(论文)
图5.5 开关量输出测试
13
正在阅读:
利用VB进行PC与PCL通信代码06-25
复习第6章不等式推理与证明第2讲二元一次不等式组及简单的线性规02-26
改革开放以来我国GDP变化以及与财政支出的关系是否符合瓦格纳法则10-03
黄花小学三年级下册数学教案104-28
遂宁滤波器厂家 遂宁电源滤波器厂家加工定制各类滤波器08-05
辩论稿 为人处事坚持原则更重要01-03
- 冀教版版五年级科学下册复习资料
- 微生物学复习提纲
- 2013—2014学年小学第二学期教研组工作总结
- 国有土地转让委托服务合同协议范本模板
- 我的固废说明书
- 企业管理诊断报告格式
- 东鼎雅苑施工组织设计
- 谈谈如何做好基层党支部书记工作
- 浮梁县环保局市级文明单位创建工作汇报
- 管理学基础知识
- 大学物理实验报告23 - PN结温度传感器特性1
- 计算机网络实践
- 酒桌上这四种情况下要坐牢,千万别不当回事……
- 国家康居示范工程建设技术要点
- 中国贴布行业市场调查研究报告(目录) - 图文
- 新课标下如何在高中物理教学中培养学生的创新能力初探
- 营养师冬季养生食谱每日一练(7月4日)
- 关注江西2017年第3期药品质量公告
- 建设海绵城市专题习题汇总
- 10万吨年环保净水剂建设项目报告书(2).pdf - 图文
- 利用
- 代码
- 通信
- 进行
- PCL
- 销售培训资料
- 如何让小学英语学起来更轻松
- 车辆被撬应该怎样理赔
- 冶金设计相关
- 【苏教版】一年级科学下册教案全册(1)
- 《唐诗选辑》
- 2016年全国水利五大员质检员A卷
- ()县供电公司新一轮解放思想大讨论总结汇报材料(多篇汇编)
- 2015-2016学年华师大版八年级数学上12.2整式的乘法(4课时)教学
- 最新安江模型进展介绍
- 最新17—18学年下学期高一第一次月考政治试题(附答案)
- 中国政治制度史(二)
- 珠海工程竣工档案验收整理指南
- 2015年中级物流师考试题库及答案每日一讲(2月16日)
- 大气作业题答案
- 老字号兴衰史
- 一(1)集合及其运算(教师)
- 新课改中小学英语教学形成性评价研究实施方案
- 2014年专业技术人员继续教育—建筑工程—建筑环境测试技术(一)课
- 关于“学生回答情况”课堂观察报告