云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 利用VB进行PC与PCL通信代码

利用VB进行PC与PCL通信代码

  • 62 次阅读
  • 3 次下载
  • 2025/12/2 20:57:43

上海理工大学本科生毕业设计(论文)

利用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

搜索更多关于: 利用VB进行PC与PCL通信代码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

上海理工大学本科生毕业设计(论文) 利用VB进行PC与PLC通信 程序代码与程序运行结果 1 计算机与可编程控制器通信程序说明 1.1 计算机与可编程控制器通信运行界面 在编写程序代码之前应先应用VB6.0建立一个运行界面,如图5.1。 图5.1 PC与可编程控制器状态通信界面 1.2 计算机与可编程控制器通信程序说明 整个PC与可编程控制器通信的程序段中,结合所做界面与构想,分为初始运行、回路测试、置位、复位、返回和周期输入端口状态检测几大部分。 ? 初始运行 在初始运行程序段中,包括了对地址栏中地址、图形控件的初始设置,以及Mscomm控件通信参数的赋值。 ? 回路测试 回路测试的存在主要是,在状态通信前,能较为明显的显

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com