有关VB实现的plc与上位机通讯应用程序,包括通信初始化程序,通信控件MSComm1属性设置,从PLC读取资料,将寄存器内数据资料PC上显示观察监控等,一起来看看。

VB实现plc与上位机通讯应用程序

可编程控制器PLC与上位机PC之间通信,下位机为PLC,基于其可靠性极高,主要承担控制功能,而上位PC机主要承担监察管理功能,兼备部分控制功能,如发出运行,停止命令。

VB语言是基于WINDOWS操作系统功能强、易学易用、主面向学习对象程序设计语言。

VB带有专门管理串行通讯MSComm控件,只需设置几个主要参数就可以实现PLC与PC串行通讯。要完成通信必须设置MSComm相关属性值:

(1)CommPort:设置或传回通信连接端口代号

(2)Settings:设置初始化参数。以字符串形式设置或传回连接速度、奇偶校验、数据位、停止位等4个参数

(3)PortOpen:设置或传回通信连接端口状态

(4)Input:从输入寄存器传 回并移除字符

(5)Output:将一个字符串写入输出寄存器

(6)InputLen:指定由串行端口读入字符串长度

(7)InBufferCount:传回接收寄存器中字符数

软硬件之间:

台安TP02与上位机PC通信时,实现两者通信需要配备通信线。

4、通信程序实现

4.1 通信初始化程序

首先,窗体开始设计之前,添加MSComm控件。

4.2程序编写:

4.2.1 通信控件MSComm1属性设置:

MSComm1.CommPort = 1 设置端口号

MSComm1.Settings = "19200,E,7,2" 设置通信参数

MSComm1.InputLen = 0 设置读入字符串长度

MSComm1.PortOpen = True 设置通信端口状态

4.2.2 PLC运行程序:

STX$ = "::"

TransmitBuf$ = "01?5RUN"

sum$ = CheckSum(transmitBuf$)

ETX$ = Chr$(13)

SXD$ = STX$ + transmitBuf$ + sum$ + ETX$

MSComm1.Output = SXD$

Do

DoEvents

Loop Until MSComm1.InBufferCount >= 12

In1$ = MSComm1.Input

4.2.3 从PLC读取资料,将寄存器内数据资料PC上显示观察监控(反应时间50ms):

STX$ = "::"

transmitBuf$ = "01?5MRVD000102"

sum$ = CheckSum(transmitBuf$)

ETX$ = Chr$(13)

SXD$ = STX$ + transmitBuf$ + sum$ + ETX$

MSComm1.Output = SXD$

Do

DoEvents

Loop Until MSComm1.InBufferCount >= 20

InData$ = MSComm1.Input

Label2.Caption = Mid$(InData$, 10, 4)

Label3.Caption = Mid$(InData$, 14, 4)

4.2.4从PLC读取资料,将RelayC0001状态PC显示进行监控(反应时间50ms):

STX$ = "::"

transmitBuf$ = "01?5MCRC0001"

sum$ = CheckSum(transmitBuf$)

ETX$ = Chr$(13)

SXD$ = STX$ + transmitBuf$ + sum$ + ETX$

MSComm1.Output = SXD$

Do

DoEvents

Loop Until MSComm1.InBufferCount >= 13

In4$ = MSComm1.Input

Coil$ = Mid$(In4$, 10, 1)

C1% = CInt(Coil$)

Label6.Caption = C1%

4.2.5 设定Relay状态,将Relay设定为ON(反应时间50ms):

Dim C1 As Integer

STX$ = "::"

transmitBuf$ = "01?5SCSY00011"

sum$ = CheckSum(transmitBuf$)

ETX$ = Chr$(13)

SXD$ = STX$ + transmitBuf$ + sum$ + ETX$

MSComm1.Output = SXD$

Do

DoEvents

Loop Until MSComm1.InBufferCount >= 12

In2$ = MSComm1.Input

4.2.6 PLC停止运行:

STX$ = "::"

transmitBuf$ = "01?5STP"

sum$ = CheckSum(transmitBuf$)

ETX$ = Chr$(13)

SXD$ = STX$ + transmitBuf$ + sum$ + ETX$

MSComm1.Output = SXD$

Do

DoEvents

Loop Until MSComm1.InBufferCount >= 12

In3$ = MSComm1.Input

4.2.7 VB6.0下CheckSum函数代码如下:

Private Function CheckSum(transmitBuf$)

L = Len(transmitBuf$)

Add = 0

Dim k, sum As Integer

For k = 1 To L

TJ$ = Mid$(transmitBuf$, k, 1)

Add = Add + Asc(TJ$)

Next k

Do While Add >= 256

Add = Add - 256

Loop

Add = 255 - Add + 1

tempBuf$ = Hex$(Add)

CheckSum = LTrim(tempBuf$)

End Function

plc vb c语言编程,【实例】VB实现plc与上位机通讯应用程序相关推荐

  1. 0c400汇编语言地址,在S7300/400型PLC中使用高级语言编程实例

    在S7300/400型PLC中使用高级语言编程实例 S7-SCL是一种类似于Pasical.Deliphi的高级编程语言,其符合国际标准IEC 61131-3,也就是说支持该标准的任意厂家的PLC均可 ...

  2. c语言二级编程实例,二级c语言编程 -实例

    二级c语言编程 -实例 编程实例1. 题目:有 1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都 是多少? 1.程序分析:可填在百位.十位.个位的数字都是 1.2.3.4.组成所有的 ...

  3. c语言编程 目录,C语言编程实例简介,目录书摘

    内容简介: <C语言编程实例>将蓝牙小车作为教学组织引领,开展各章节.模块的教学,在教学的过程中把C语言编程.VC++软件操作.单片机外围电路搭建与调试.CAD机械制图.激光切割零件制作等 ...

  4. vhdl计算机语言,vhdl语言编程实例.doc

    vhdl语言编程实例 实现各种逻辑功能: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENT ...

  5. plc通信程序 c语言,plc用什么语言编程?plc可以用c语言编程吗

    plc用什么语言编程?plc可以用c语言编程吗 plc能用C语言编程吗? 不能 每个PLC都有自己的编程语言但用法基本上和C语言差不多PLC编程不是单一的 有很多种方法 我一般是梯形图,也有语句法就是 ...

  6. c++ c语言编程实例

    c++ c语言编程实例 2,求和 #include using namespace std; int main( { int a=2,b=0,n; cout<<"输入一个数:&q ...

  7. c语言编程实例下载,C语言编程实例.doc

    C语言编程实例.doc 第 3 章 请 你参考前请修改下,或者至少看明白, 2 include "string.h" include "stdio.h" mai ...

  8. LabVIEW上位机学习 面对对象编程实例项目源码 与下位机PLC

    LabVIEW上位机学习 面对对象编程实例项目源码 与下位机PLC,工厂MES通讯,数据库,NI vision视觉等开发,及操作者框架源码可运行,想学习面对对象的可以参考 ID:16199647294 ...

  9. MongoDB的C语言编程实例

     下面讲述在Linux平台下MongoDB的C语言编程实例 假设已经安装好了MongoDB. 1. 下载MongoDB的C语言驱动并安装 这里下载的MongoDB的C语言驱动是 mongo-c-d ...

  10. 西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485

    西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485,伺服等 西门子1214C控制4台步进电机: 西门子1214C与4台MS300变频器modb ...

最新文章

  1. sql delete删除的数据怎么恢复_如何恢复按下Shift + DELETE键永久删除的文件和资料夹?...
  2. Apache Mina2.x网络通信框架使用入门
  3. 工艺流程计算机仿真设计,450kt/a合成氨反应器及生产过程计算机仿真设计
  4. optimize table优化mysql例子
  5. 关于JS中for循环时,作用域问题和this指针指向的总结
  6. ios 获取沙盒文件名_IOS获取各种文件目录路径的方法
  7. Win7 maven安装及配置
  8. Android取手机号码
  9. 处理CoreAVC Professional Edition 错误的方法
  10. 【算法】非线性动力学混沌、分岔图、最大李雅普诺夫指数等
  11. 数据库和网页之间的数据交互
  12. centos7 vim查找_如何在 Vim/Vi 中快速查找和替换文本内容
  13. 生日蛋糕(noi99)
  14. vs2019生成的exe文件在别人电脑运行不了
  15. Windows10企业版 VS2017编译 MongoDB C++ Driver3.1.1 全过程
  16. 从打游戏的显卡,到科学先锋,一篇文章读懂异构计算
  17. 【spring-boot】Could not find result map ‘com.springboot.cib_hk.bean.Users‘ referenced from ‘co...
  18. 微信小程序上拉刷新下拉加载
  19. 嵌入式文件系统基础知识
  20. CSDN博客常用写作技巧

热门文章

  1. MATLAB破解版解决帮助文档需要许可证的问题
  2. 身份证识别 python + OCR
  3. python win32api教程_解放双手——python win32api 入门
  4. 虚拟机安装Ubuntu解决自带Firefox浏览器不能看视频,提示无Flash插件问题!安装flash!
  5. 大学计算机vb基础知识6,计算机基础课-VB6选择题汇编(2011-2016)
  6. 【数字设计】诺瓦科技_笔试面试题目分享
  7. 【安装教程】 【Visio2019】(附带安装包下载)
  8. 工业机器人技术基础及其应用总结
  9. 悄悄告诉你如何快速突破大厂逻辑题
  10. 微信公众号扫码登录(一)—— 获取微信公众号二维码