目录

一 MSComm控件注册

二 准备微软脚本调试器

三 WinCC画面制作

四 创建全局脚本VBS

五 项目启动前的配置

六 关于USB扫描枪和串口扫描枪


本文以WinCC通过VBS脚本进行串口通讯,以读取扫描枪为例进行测试

参考资料:

MScomm控件注册方法(以管理员身份运行“命令提示符”,否则会有报错)

模块已加载,但对DllRegisterServer的调用失败

如何在 WinCC 运行系统中通过串口发送接收数据?

WinCC脚本调试和诊断方法

rpc服务器不可用怎么办


一 MSComm控件注册

MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能,默认安装的WinCC是没有该控件的,需要自己下载并加载到Windows中,并添加到WinCC的ActiveX控件列表中。(以管理员身份运行“命令提示符”,否则会有报错)


二 准备微软脚本调试器

调试器安装目录

C:\Program Files (x86)\Microsoft Script Debugger

实际运行项目时,打开调试器,并选择“运行的文档”,即可对代码进行调试


三 WinCC画面制作

按“如何在 WinCC 运行系统中通过串口发送接收数据?”说明创建变量和画面,

变量:

"Connection" - 二进制变量

"Buffer" - 文本变量 8 位字符集

"Output" - 文本变量 8 位字符集

其它

对象:

"Main.pdl" - WinCC 画面

"MSComm1" - Microsoft 通讯控件, V6.0

在画面“Main”中插入一个MSComm控件,双击控件,在属性中设置CommPort,即端口号。

之后在页面上添加一个“应用程序窗口”,选择“全局脚本”,之后选择“GSC Diagnostics”,这个窗口也用于调试VB函数用,可用于函数“HMIRuntime.Trace”输出

之后创建“打开端口”,“关闭端口”,“获取值”,“发送值”,“清空”五个按钮和IO域,并分别连接到定义的变量,参考如下


四 创建全局脚本VBS

双击打开“VBS-Editor”

在“动作”一栏创建4个动作,名称如下

注:目前这4个动作代码如下:(红色部分为自己添加的代码)

Open.bac

Option Explicit
Function actionDim objMSComm1, tagConnectionSet objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1")Set tagConnection = HMIRuntime.Tags("Connection")If objMSComm1.PortOpen = False Then' Assign com port numberobjMSComm1.Commport = 6(这个表示端口号,与前面一致)' Values: 9600 Baud, N - No Parity, 8 - Databit, 1 - Stopbit objMSComm1.Settings = "9600,N,8,1"objMSComm1.RThreshold = 1objMSComm1.SThreshold = 1objMSComm1.InputLen = 0objMSComm1.PortOpen = TruetagConnection.Write(True)HMIRuntime.Trace("Port open." & vbCrLf)ElseHMIRuntime.Trace("Port is already opened." & vbCrLf)End If
End Function

Read.bac

Option Explicit
Function actionDim strBuffer, strTempDim objMSComm1, tagBufferSet objMsComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1")Set tagBuffer  = HMIRuntime.Tags("Buffer")strTemp = ""If objMSComm1.PortOpen = True Then'read the bufferstrTemp = CStr(objMSComm1.Input)If strTemp <> "" Then'checking for the delimited characterIf InStr(strTemp, Chr(6)) ThenstrBuffer = Left(strTemp,Len(strTemp)-1)ElsestrBuffer = strTempEnd IftagBuffer.Value = strBuffertagBuffer.WriteEnd IfElseHMIRuntime.Trace("No port is opened!" & vbCrLf)End If
End Function

Close.bac

Option Explicit
Function actionDim objMSComm1, tagConnectionSet objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1")Set tagConnection = HMIRuntime.Tags("Connection")If objMSComm1.PortOpen = True Then  objMSComm1.PortOpen = FalsetagConnection.Write(False)HMIRuntime.Trace("Port close." & vbCrLf)End If
End Function

Send.bac

Option Explicit
Function actionDim tagOutput, objMSComm1Set tagOutput = HMIRuntime.Tags("Output")Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1")If objMSComm1.PortOpen = True ThentagOutput.ReadobjMSComm1.Output = tagOutput.ValuetagOutput.Write("")ElseHMIRuntime.Trace("No port is opened!" & vbCrLf)End If
End Function

说明:这里所有代码都是放在Function,与参考资料中放在SUB有所不同,具体SUB与Function区别,后续自己再学习补充。

代码添加完成后,需要给每个“动作”添加触发器。

这里都是定义“变量XXX有变化时”作为触发器,而要实现串口内容实时被读取,可以通过设置周期型触发器来实现。参考如下:

补充说明:关于WinCC中触发器类型


五 项目启动前的配置

勾选WinCC“计算机”启动项

勾选WinCC计算机属性“运行系统”中的“启动调试程序”选项,则在实际执行时,可通过微软的“脚本调试器”观看代码的调试,可用于故障查找。

设置计算机服务“Remote Procedure Call(RPC Locator)”为自动,否则会出现MSComm控件调用不成功的现象。

Win+R之后输入“services.msc”可调出“服务”

以上都完成后,激活项目,即可看到

 

以上只是简单的案例,具体项目使用还需要根据实际情况进行更改,如打开串口的触发器可能是WinCC启动后自动触发,获取串口值得触发器,周期型触发时间的设置等。周期触发会给系统造成较重的负荷。因此最好的方法是为全局动作组态一个事件触发器。


六 关于USB扫描枪和串口扫描枪

USB的扫描枪也可设置为串口方式输出,需要跟相应厂商获取相应驱动软件,这里不做过多描述,见另外一篇文章。

WinCC读取串口扫描枪案例相关推荐

  1. 串口扫描枪+linux,C#读取RS232串口扫描枪

    [实例简介] C#读取RS232串口扫描枪,可以实现多线程串口扫描枪输入 [实例截图] [核心代码] 串口线程接收更新控件 └── 串口线程接收更新控件 ├── 串口线程接收更新控件 │   ├── ...

  2. c# 获取串口扫描枪数据

    之前负责过一个机场的项目,有一个环节是扫描旅客登机牌,获取旅客信息的操作,当时是拟定了使用串口扫描枪来获取登机牌信息,后面又测试了网口的,这里记录一下当时用来测试串口使用的程序,供有需求的小伙伴们参考 ...

  3. C#串口扫描枪的简单实现

    串口扫描枪的简单实现 基于串口通讯的扫描枪的实现,主要借助SerialPort类,表示串行端口资源.实现很简单: 工具:usb转RS232转接头/个,扫描枪/套, 扫描枪串口接入转接头,转接头插电脑 ...

  4. Linux下读取USB扫描枪数据

    1.USB扫描枪   USB接口的扫描枪相当于键盘输入,在Windows或者Linux下,在成功安装驱动的前提下,打开文件编辑器如word.txt等.扫描枪读出到条码数据时,数据即被捕获到光标处. 2 ...

  5. 基于C#的串口扫描枪通信实战

    今天搞大事,观众们动起来,搞事的目的是 掌握串口通信及winform开发技术 硬件设备:1.串口激光扫描枪,注意是串口,不是USB口 2.USB转串口的连接线一根,如图连接所示 3.USB扩展器一个, ...

  6. C#串口通信实战开发:获取条码枪扫描枪读码器把枪的扫码结果

    扫描枪分类 市面上的条形码扫描枪按照接口类型,一般可以分为三种: PS/2接口.这个接口一般老式的条码枪才会有,现在的条码枪基本上都没有这个接口了,因为现在的电脑上,基本上也不会有这个老式接口了.这个 ...

  7. USB扫描枪设置流程 扫描枪使用

    第一步:安装驱动 将光盘放到光驱中,打开后找到Symbol+COM+Port+Emulation+Driver+v+1.8.5.zip压缩包,减压后点击安装.压缩包如下如图所示: 第二步:设置扫描枪 ...

  8. E3000Y影像二维扫描枪(配YoKo引擎开发板)的串口调试

    实现E3000Y影像二维扫描枪串口调试 概述 一.E3000Y影像二维扫描枪 二.YoKo引擎开发板 三.E3000Y识读引擎 四.串口调试控制方式步骤 1.模块安装步骤 2.串口调试步骤 3.扫描二 ...

  9. 西门子-扫描枪数据读取 ----古月金真

    1.1. 实训目标 1.职业技能:掌握扫描枪的使用方法 2.职业知识:了解本课程的学习的主要内容,掌握扫描枪的工作原理及动 手能力. 3.职业道德:培养学生对的认知分析能力,并能从硬件到软件的过渡,认 ...

最新文章

  1. R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
  2. html登录界面设计代码_最简洁实现Github登录的JS代码示例
  3. java解析html_java中几种解析html的工具
  4. 【Java数据结构】赫夫曼树
  5. zynq 和fpga区别_FPGA复位的正确打开方式
  6. HDU 1698 Just a Hook(线段树:区间更新)
  7. linux的常用的安装命令
  8. c语言写我爱你中国编程,c程序设计案例汇编课件.ppt
  9. postman控制台打印数据
  10. 《Java并发编程的艺术》——锁(笔记)
  11. badboy设置中文_badboy中文手册
  12. Java - Certificate has been revoked
  13. 《战神3》GDC技术制作团队研讨报导
  14. 函数调用过程中函数栈详解
  15. vc控制计算机关机,192上位机VC MFC实现电脑的重启关机注销功能
  16. WIFI关键器件选型
  17. SQL查询某个时间段购买过商品的所有用户
  18. json>object>bean
  19. ffmpeg编译gb28181_RTSP/GB28181协议/海康SDK/Ehome协议视频上云网关EasyCVR视频平台在linux环境下ffmpeg源码单步调试环境搭建...
  20. 解决ACER4750G安装WIN764位的报错。

热门文章

  1. element-ui输入框限制只能输入数字一系列问题
  2. 对于结构体变量赋值的误区
  3. 怎么合并多个PDF文件?看完这篇你就会了
  4. 自己动手做一个USB摄像头--转载
  5. yaf 修改php.ini,Yaf的配置
  6. C语言实现链表的创建
  7. sql优化的15个小技巧(必知五颗星),面试说出七八个就有了
  8. 啊哈算法——第四章:搜索
  9. BlueTooth蓝牙协议管理(三)
  10. matlab stem 属性,matlab中stem函数用法_常见问题解析