WinCC 通过VBS脚本进行串口通讯

合集下载

WINCC与串口设备通信方法的研究与应用

WINCC与串口设备通信方法的研究与应用

WINCC与串口设备通信方法的研究与应用摘要:探讨了如何通过OPC来访问WinCC系统的实时数据。

并根据串口设备通讯协议要求,通过Visual Studio平台下的C#语言编程,把采集到的实时数据按通讯协议组织后通过串口发送给串口设备。

结合实际应用给出了具体的实现步骤。

某煤矿水处理系统应用结果表明,系统运行稳定可靠,效率高,具有很强的实用性和推广价值。

关键字:WinCC 实时数据OPC 串口通信随着企业信息化进程的推进,无论是哪个管理相关部门,都希望从工作的现场得到最新的数据,并对这些新的数据进行综合的分析。

然而,不同的控制器来自不同的厂商,通过不同的标准,组成各自需要的系统,并进行控制,各个控制系统形成了互不相连的自动化孤岛,因为很多数据无法整体的采集到并进行整体的分析与研究。

从而更无法建立统一的生产过程数据平台,难以实现管理控制的一体化[1]。

该文通过OPC来访问WinCC系统的实时数据。

并根据串口设备通讯协议要求,通过Visual Studio平台下的C#语言编程,把采集到的实时数据按通讯协议组织后通过串口发送给串口设备。

1?OPC(OLE for Process Control)技术介绍OPC(OLE for Process Control)用于过程控制的对象链接嵌入技术,是基于微软的OLE、COM(组件对象模型)和DCOM(分布式组件对象模型)技术为基础,采用客户/服务器模式,在基于Windows操作平台的工业应用程序之间提供交互功能和高效信息集成的组件。

利用OPC 技术,可以对现场设备及其驱动程序进行封装,形成OPC(OLE for Process Control)服务器,向上与OPC客户应用程序通信以完成数据交换,向下则是对设备数据进行采集。

因此,它的出现为基于Windows 的应用程序和现场过程控制之间做好了铺垫。

这种既开放又高效的通信机制提供了一种从数据源提取数据并且传输到应用程序的标准途径,它能够有效地整合各类控制器和控制系统,众多不同的厂商生产的都能用统一的开口进行传输与控制,很容易解决由不同类型自动化设备构成的大中型系统中的数据交换和传输问题[2] 2?OPC(OLE for Process Control)客户机应用程序开发2.1?OPC开发工具包模块化开发工具包提供了软件设计的基本工具。

WinCC课件十如何使用VBScript

WinCC课件十如何使用VBScript

7
WinCC flexible 如何使用VBScript
WinCC Flexible
如何创建报警系统 如何使用VBScript 如何配方
概述 ——脚本及其使用
在脚本中编写VB脚本代码,可以像使用系统函数一样使用项目 中完成的脚本。创建脚本时,确定其型号并定义传送参数。脚本 有两种类型——“函数”和“Sub(子程序)”。“函数”类型的脚本 具有一个返回值。“Sub”类型脚本作为“过程”引用,没有返回 值。
1. 用鼠标在项目窗口中选择“脚本”元素。 2. 在“脚本”弹出式菜单中选择“添加脚本”命令。在工作区 域中脚本被设置为新建标签。脚本组态设置的输入掩码在属性窗 口中打开。 3. 在属性窗口中为脚本输入一个有意义的名称。 4. 从属性窗口中选择脚本类型。 5. 如果脚本中需要参数,那么在属性窗口中输入参数名称并单 击“添加”。 只有当脚本还未在函数列表中组态或在其他脚本中调用时,才 可以改变脚本的参数或类型。
编写步骤如下:
1. 双击想要写入代码的脚本的项目窗口,脚本打开。 2. 编写代码。 3. 如果脚本是“Function”类型,分配函数名称给返回值。
18
WinCC flexible 如何使用VBScript
WinCC Flexible
如何创建报警系统 如何使用VBScript 如何配方
组态脚本 ——组态脚本 访问变量
系统函数及其使用 脚本及其使用 使用函数列表
2
WinCC flexible 如何使用VBScript
WinCC Flexible
如何创建报警系统 如何使用VBScript 如何配方
概述 ——运行脚本的基本信息 系统函数的使用
WinCC flexible提供了预定义的系统函数,以用于常规的组态 任务。可以用它们在运行系统中完成许多任务,而无需编程技巧。 当然也可以用运行脚本来解决更复杂的问题。运行脚本具有编程 接口,可以在运行时访问部分项目数据。运行脚本的使用是针对 具有Visual Basic (VB)和Visual Basic Script (VBS)知识的项目 设计者的。

在WinCC中实现串行通讯的两种方法

在WinCC中实现串行通讯的两种方法

在WinCC中实现串行通讯的两种方法
林英芸;杨煜普
【期刊名称】《电子测量技术》
【年(卷),期】2006(29)2
【摘要】为了在WinCC组态软件中实现与串口的通讯,文中介绍了两种方法:一是在WinCC中调用VB编写好的串口通讯程序,进行数据交换,实现对串口的访问;二是在WinCC图形编辑器中调用ActiveX控件MSComm,编写全局脚本VBS实现对串口的访问。

这两种方法很好地解决了组态工程师被WinCC所束缚的串行通讯操作限制问题,拓宽了工程师使用WinCC的灵活性,提高了组态效率。

【总页数】3页(P115-116)
【关键词】视窗控制中心;串行通讯;控件
【作者】林英芸;杨煜普
【作者单位】上海交通大学自动化系
【正文语种】中文
【中图分类】TP273;TP368.1
【相关文献】
1.VB6.0实现串行通讯的两种方法 [J], 袁朔;袁赣南;徐锡芬
2.如何在WINCC中使用OLE控件实现串行通讯 [J], 马焉;陈露萍
3.Delphi程序中实现串行口通讯的三种方法 [J], 李志合;易维明;程卫东;张国海
4.Delphi中如何用面向对象方法实现串行通讯 [J], 李磊
5.工控系统中VC++实现串行通讯的两种方法及其比较 [J], 陈静;童名文;范宣志;石俊杰
因版权原因,仅展示原文概要,查看原文内容请购买。

通过vbs脚本读取wincc的数据库

通过vbs脚本读取wincc的数据库

通过vbs脚本读取wincc的数据库'本代码是在E:\WinccProjects\DBSQL工程下完成,功能是对该工程下的CC_DBSQL_11_04_19_19_19_51R数据库中的表GH_table 中的字段“Temp”进行读操作。

读的结果暂存在DBSQL工程下的过程变量Speed中,再有Speed传给IO控件显示。

'该代码由按钮控件作为按下鼠标的响应脚本。

读的时间由按钮动作决定。

'本代码只实现了对其中一条数据的读操作。

Sub OnClick(Byval Item)Dim Speed_hmi,Speed_valDim cn,strSQL,strcn,rs,rs1Dim ResultSet cn = CreateObject("ADODB.Connection")Set rs=CreateObject("ADODB.RecordSet")strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=CC_DBSQL_11_04_19_19_19_51R;Data Source=.\wincc"cn.ConnectionString = strcncn.Open strcnSet Speed_hmi=HMIRuntime.Tags("Speed")'Temp_hmi.Read'Temp_val=Temp_hmi.ValuestrSQL = "select * from GH_table"'where(Temp)rs.Open strSQL,cn,1,3'rs.AddNew'新建一条记录'rs.fields("Temp")=999rs.updaters.movefirst'使位置移植第一条Result=rs.fields("Temp")读取Speed_hmi.Write Resultrs.closecn.closeSEt cn=NotHingSet rs=NotHingend Sub'*********更新:实现按一定条件读取DB,将结果显示在一个IO 域中*********************Sub OnClick(Byval Item)Dim cn,strSQL,strcn,rsDim ResultSet cn = CreateObject("ADODB.Connection")Set rs=CreateObject("ADODB.RecordSet")strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=CC_DBSQL_11_04_19_19_19_51R;Data Source=.\wincc"cn.ConnectionString = strcncn.Open strcnstrSQL = "SELECT *FROM GHtable001 WHERE ([Time] = '1900-1-1 12:33:42')" '在GHtable001表中已经存有数据,对应该时间的值为61rs.Open strSQL,cn,1,3rs.updateResult=rs.fields("Temp") '将搜索结果对应的Temp变量值给ResultHMIRuntime.Screens("TagArchive").ScreenItems("IOfield01") .outputvalue=Result '将结果负值给IO域rs.closecn.closeSEt cn=NotHingSet rs=NotHingend Sub'************************************************************** ****************************************************************。

wincc中vbs手册

wincc中vbs手册

对不起,无法提供完整的WinCC VBS手册,但可以提供一些关于WinCC VBS的基本信息和常见问题解答。

WinCC(Windows Control and Communication)是一种工业自动化领域的监控和通信软件,它支持使用VBScript(VBS)进行脚本编程。

VBS是一种基于VB(Visual Basic)语言的脚本编程语言,它具有简单易学、功能强大的特点。

在WinCC中,VBS可用于自动化控制、数据采集、报表生成、用户管理等方面。

以下是一些关于WinCC VBS的基本信息和常见问题解答:1. 什么是WinCC VBS?答:WinCC VBS是用于在WinCC中实现自动化控制、数据采集、报表生成、用户管理等功能的脚本编程语言。

2. WinCC VBS与VBScript有何区别?答:WinCC VBS是基于VBScript的扩展版本,它增加了对WinCC特定功能的支持,如数据类型转换、文件操作、图形显示等。

3. 如何安装和使用WinCC VBS?答:安装WinCC时,需要同时安装VBS插件。

安装完成后,您可以通过编写VBS脚本并将其添加到WinCC项目中,使用VBS实现各种功能。

4. WinCC VBS支持哪些数据类型?答:WinCC VBS支持多种数据类型,包括字符串、数字、日期/时间、布尔值、数组和对象等。

5. 如何调试WinCC VBS脚本?答:您可以使用VBScript调试器来调试WinCC VBS脚本。

调试器提供了变量查看、断点设置、逐步执行等功能,帮助您找到脚本中的错误并进行修复。

6. 如何处理WinCC VBS中的错误?答:当WinCC VBS脚本中出现错误时,调试器会记录错误信息并提示您在哪里出错。

根据错误信息,您可以找到并修复代码中的问题。

7. WinCC VBS可以与哪些外部设备进行通信?答:WinCC VBS支持与多种外部设备进行通信,如串口设备、网络设备、PLC等。

Wincc的VBS脚本使用

Wincc的VBS脚本使用

W i n c c的V B S脚本使用------------------------------------------作者xxxx------------------------------------------日期xxxx变量读写: Write和Read方法的语法:读:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")2 HMIRunTime.Tags("变量名").Read写:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")objTag.Write 1 '向变量写入数值12 HMIRunTime.Tags("变量名").Write 1中间变量的值写入:Dim objTag,valSet objTag=HMIRunTime.Tags("变量名")objTag.Readval=objTag.Value '中间变量val存放了变量的值VBS语言使用方法概述:VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC 脚本版).正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言.我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.一、入门: 1) 注释(以REM或'开头)行在程序中不起作用, 但能让别人更容易读懂你的程序. 2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用"="3)以""包裹起来的字符称之为"字符串"4)函数像一个"黑箱", 有参数和返回值, 用"="左边的变量可以接住返回值5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出例:REM 输入并回显你的名字'使用InputBox和Msgbox函数Dim name,msgmsg="请输入你的名字:"name=Inputbox(msg,"名称")Msgbox(name)上例中,Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫"浮点数"), 也不用考虑是不是字符串(一串字符, 比如:"Hello World"), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变.常量:格式是:const 常量名=常量值.例如: const PI=3.1415926 const NAME="记忆碎片"二、进阶数据类型转换:1)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=a*2+b*2Msgbox(c)这个输入1、2时是62)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=(a+b)*2Msgbox(c)这个输入1、2时是24为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在"+"上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如"Hello"+"World"="HelloWorld" have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中"1"不等于(<>)1, "1"是一个字符, 而1是一个数, 所以a,b都是字符串变量, "1"+"2"="12", 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说"错啦,应该是11".但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转成整数值, 我们这样修改: c=(int(a)+int(b))*2四、循环结构for....nextdim i,jfor i=1 to 9for i=1 to 9str=str & i * j & " " '&是和并字符串的符号next '每个next对应一个fornext1)do..loop和exit do的用法2) while当表达式true的时候执行循环体,until反之3) for...next是计数循环, 每次执行计数器递加4) 嵌套循环的作用和写法 4.5) &用于连接字符串5) vbCrLf相当于键盘上的回车键五、数组定义:dim 数组名(元素数量), 这里大家要注意一点, 这里定义的元素数量总是比你要的要少一个, 因为一个数组的起点是0号数据而不是1, 所以大家一定要小心: 你需要10个数据, 就定义"9"。

WinCC 串口通信

WinCC串口通讯的研究与实现周谷鸣, 雷汝海,步园明中国矿业大学信电学院,徐州 (221008)E-mail:gumingzhou@摘要:本文讨论了在WinCC构筑的上位机监控系统中,通过计算机串口(COM口)从现场智能仪表采集数据的一种实现方法。

该方法采用Microsoft提供的串口通讯控件MScomm作为中间桥梁,在该控件的OnComm事件中使用WinCC脚本语言VBs编写程序,实现对数据采集,接收,处理和显示功能。

本文较为详细地介绍了Mscomm控件的各种主要性能属性,并通过模拟的现场仪表进行了调试,在模拟调试中解决了仪表发送数据和脚本运行速度不匹配的问题。

关键词:串口通讯,VBs,WinCC0 引言WinCC即Windows Ccontrol Center(视窗控制中心),是一个功能强大的全面开放的上位机监控系统,既可以用于小规模简单的过程监控,也可以用于复杂的工控领域[1] WinCC提供的全局脚本系统,使用户有了较大的编程空间。

但是西门子公司基于WinCC 运行系统的稳定性考虑,只提供了一部分驱动和硬件通讯。

所以在实际的工程应用中,往往会遇到许多WinCC没有提供驱动的硬件,用户必须自己写程序来控制这些硬件,还需要编写程序控制实时数据的归档与处理。

例如在WinCC中并没有集成METTLER TOLEDO(梅特勒-托利多)公司8530D称重显示仪表的串行通讯程序,因此需要开发新的串行通讯程序。

本文以付村矿装车系统为背景,开发了WinCC读取串口数据并显示的程序。

1 背景付村矿的装车系统主要包括若干给煤机、皮带运输机、卸料口及翻板、轨道衡和铁牛牵引绞车等,见图1所示:图1 付村矿装车系统图(部分)本文主要涉及图1中仪表与上位机WinCC的通讯,所以只画出了部分系统图。

图1中的仪表是METTLER TOLEDO(梅特勒-托利多)公司8530D称重显示仪表,提供了两个RS232串口。

现利用其中一个来连接打印机;另外一个即用来与上位机连接,经过相关编程使WinCC能准确读取串口数据并显示。

vb串口通讯代码

严重同意ZZJ1382的观点,可是在wincc里使用VBS还是还是很困难,不知道哪位能说明白一点。

下面是我在VB里的代码,已经测试过,可以读取串口数据,希望有一位高手帮忙研究在wincc中使用,谢谢!Dim SMSType As IntegerDim Senddata() As ByteDim Readsmsno As ByteSub opentestnote()wrap$ = Chr$(13) & Chr$(10)CommonDialog1.Filter = "text filer (*.txt)|*.txt"CommonDialog1.FileName = ""CommonDialog1.ShowOpen '使用通用对话框对象提示用户输入路径名'If Err = cdlCancel Then Exit SubIf CommonDialog1.FileName <> "" ThenForm1.MousePointer = 11Open CommonDialog1.FileName For Input As #1 '打开用户所指定的输入文件(Open...For Input)On Error GoTo toobig ' 处理所有可能发生的错误Do Until EOF(1) '复制过程直至达到文件尾(EOF)或者字符串空间全部被占满为止Line Input #1, lineoftext$ '将文件逐行复制到名为AllText$的字符串中(Line Input)alltext$ = alltext$ & lineoftext$ & wrap$ '在文本框中显示AllText$字符串,并提供滚动条'LoopClose #1Form1.MousePointer = 0Text3.Text = alltext$End IfGoTo nextfiletoobig:nextfile:End SubSub savetestnote()wrap$ = Chr$(13) & Chr$(10)CommonDialog1.Filter = "text filer (*.txt)|*.txt"CommonDialog1.ShowSave '使用通用对话框对象提示用户输入路径名If CommonDialog1.FileName <> "" ThenOpen CommonDialog1.FileName For Output As #3 'COPY到记录Print #3, Text1.TextClose #3End IfEnd SubSub cleartestnote()Form1.Text1.Text = ""End SubFunction ASCNUM(TXT As String) As Bytei = Asc(TXT)Select Case Asc(TXT)Case 48 ASCNUM = 0 Case 49 ASCNUM = 1 Case 50 ASCNUM = 2 Case 51 ASCNUM = 3 Case 52 ASCNUM = 4 Case 53 ASCNUM = 5 Case 54 ASCNUM = 6 Case 55 ASCNUM = 7 Case 56 ASCNUM = 8 Case 57 ASCNUM = 9Case 65ASCNUM = 10Case 66ASCNUM = 11Case 67ASCNUM = 12Case 68ASCNUM = 13Case 69ASCNUM = 14Case 70ASCNUM = 15Case ElseASCNUM = 16End SelectEnd FunctionPrivate Sub Cls_Click() frmProperties.Show vbModal End SubPrivate Sub Print_Click() Form1.Text1 = bufferEnd SubPrivate Sub Init_Click()sign = 0mPort = 1If MSComm1.PortOpen = False ThenMSComm1.Settings = "9600,n,8,1"MSComm1.PortOpen = TrueEnd IfMSComm1.OutBufferCount = 0MSComm1.InBufferCount = 0MSComm1.Output = Chr$(2) & Chr$(27) & "]R" & Chr$(3) MSComm1.Output = Chr$(2) & Chr$(27) & "ZB1" & Chr$(3)buffer = ""End SubPrivate Sub Form_Load()'设置串口Settings = GetSetting(App.Title, "属性", "设置", "") ' frmTerminal.MSComm1.Settings] If Settings <> "" Then MSComm1.Settings = SettingsIf Err ThenMsgBox Error$, 48Exit SubEnd IfElseMSComm1.Settings = "2400,N,8,1"End IfCommPort = GetSetting(App.Title, "属性", "通信端口", "") ' mPortIf CommPort <> "" ThenmPort = CommPortElsemPort = 1End IfHandshaking = GetSetting(App.Title, "属性", "握手", "") 'frmTerminal.MSComm1.HandshakingIf Handshaking <> "" ThenMSComm1.Handshaking = HandshakingIf Err ThenMsgBox Error$, 48Exit SubEnd IfElseMSComm1.Handshaking = 0End IfTHESMSTYPE = GetSetting(App.Title, "属性", "SMS", "") ' mPortIf THESMSTYPE <> "" ThenSMSType = Val(THESMSTYPE)ElseSMSType = 1End IfTHENUMBER = GetSetting(App.Title, "属性", "NUMBER", "") ' mPortIf THENUMBER <> "" ThenEnd IfReadsmsno = 1'显示状态栏With Form1.StatusBar1.Panels.Item(1).Text = "串口状态:" & "COM" & mPort & " Set=" & Form1.MSComm1.Settings & " " & Form1.MSComm1.PortOpenEnd WithEnd SubPrivate Sub mnuclear_Click()cleartestnoteEnd SubPrivate Sub mnuclrdistxt_Click()Form1.Text1.Text = ""End SubPrivate Sub mnucommopen_Click()MSComm1.PortOpen = Not MSComm1.PortOpenmnucommopen.Checked = MSComm1.PortOpenWith Form1.StatusBar1.Panels.Item(1).Text = "串口状态:" & "COM" & mPort & " Set=" & Form1.MSComm1.Settings & " " & Form1.MSComm1.PortOpenEnd WithEnd SubPrivate Sub mnucommseting_Click()frmProperties.Show vbModalEnd SubPrivate Sub mnuexit_Click()Unload MeEnd SubPrivate Sub mnuopen_Click()opentestnoteEnd SubPrivate Sub mnusave_Click()savetestnoteEnd SubPrivate Sub MSComm1_OnComm()Dim buffer() As ByteDim Bufferlength As IntegerSelect Case mEvent' Handle each event or error by placing' code below each case statement' 错误Case comEventBreak ' 收到Break。

基于WINCC平台的串口通讯

基于WINCC平台的串口通讯
郭伟
【期刊名称】《起重运输机械》
【年(卷),期】2012(000)003
【摘要】介绍了计算机与称重显示仪表进行串口通讯的具体实现方法,并将该方法应用于马来西亚HDRI物料运输管理系统的开发.实践证明系统在实际应用中性能稳定,效果良好,系统程序的灵活性、可移植性强.
【总页数】3页(P69-71)
【作者】郭伟
【作者单位】桑德环境资源股份有限公司北京101102
【正文语种】中文
【中图分类】TH22:TP273
【相关文献】
1.基于WinCC和串口通讯的炉温监控系统设计 [J], 张新良;杜韶
2.基于DOS平台的多串口通讯的实现 [J], 宋刈非;张蕊
3.基于Proteus平台的32位单片机LPC2114虚拟串口通讯仿真 [J], 张勇
4.一种基于PC机串口通讯的短信平台方案 [J], 祁长兴
5.基于LabVIEW开发平台的单片机串口通讯系统设计 [J], 李梦;杨金月
因版权原因,仅展示原文概要,查看原文内容请购买。

WinCC中实现串行通讯的两种方法

在WinCC中实现串行通讯的两种方法概要:为了在WinCC组态软件中实现与串口的通讯,文中介绍了两种方法:一是在WinCC中调用VB编写好的串口通讯程序,进行数据交换,实现对串口的访问;二是在WinCC 图形编辑器中调用ActiveX控件MSComm,编写全局脚本VBS实现对串口的访问。

这两种方法很好地解决了组态工程师被WinCC所束缚的串行通讯操作限制问题,拓宽了工程师使用WinCC的灵活性,提高了组态效率。

In order to realize serial communication with ActiveX based on WinCC,two methods are described in this paper.The first method is divided into two steps.First,realize serial communication by programming in Visual Basic,and then call this executive program in WinCC to exchange data.The second method is calling the ActiveX control MSComm directly in the Graphics Designer of WinCC and programming in WinCC Global Scripts to realize serial communication.These two methods are good solutions to the limitations of serial communication operation in WinCC.By these ways,engineers can use WinCC more flexibly,thus improve their configuration efficiency.正文:引言WinCC即Windows Ccontrol Center(视窗控制中心),是一个功能强大的全面开放的上位机监控系统,既可以用于小规模简单的过程监控,也可以用于复杂的工控领域[1]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WinCC 通过VBS脚本进行串口通讯
一、打开端口
Sub OnClick(Byval Item)
Dim objMSComm1, tagConnection
Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagConnection = HMIRuntime.Tags("Connection")
If objMSComm1.PortOpen = False Then
' Assign com port number
mport = 1
' Values: 9600 Baud, N - No Parity, 8 - Databit, 1 - Stopbit
objMSComm1.Settings = "9600,N,8,1"
objMSComm1.RThreshold = 1
objMSComm1.SThreshold = 1
objMSComm1.InputLen = 0
objMSComm1.PortOpen = True
tagConnection.Write(True)
HMIRuntime.Trace("Port open." & vbCrLf)
Else
HMIRuntime.Trace("Port is already opened." & vbCrLf)
End If
End Sub
二、读Buffer
Option Explicit
Function action
Dim strBuffer, strTemp
Dim objMSComm1, tagBuffer
Set objMsComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagBuffer = HMIRuntime.Tags("Buffer")
strTemp = ""
If objMSComm1.PortOpen = True Then
'read the buffer
strTemp = CStr(objMSComm1.Input)
If strTemp <> "" Then
'checking for the delimited character
If InStr(strTemp, Chr(6)) Then
strBuffer = Left(strTemp,Len(strTemp)-1)
Else
strBuffer = strTemp
End If
tagBuffer.Value = strBuffer
tagBuffer.Write
End If
Else
HMIRuntime.Trace("No port is opened!" & vbCrLf)
End If
End Function
三、发送数据
Sub OnClick(ByVal Item)
Dim tagOutput, objMSComm1
Set tagOutput = HMIRuntime.Tags("Output")
Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1")
If objMSComm1.PortOpen = True Then
tagOutput.Read
objMSComm1.Output = tagOutput.Value
tagOutput.Write("")
Else
HMIRuntime.Trace("No port is opened!" & vbCrLf)
End If
End Sub
四、关闭端口
Sub OnClick(Byval Item)
Dim objMSComm1, tagConnection
Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagConnection = HMIRuntime.Tags("Connection")
If objMSComm1.PortOpen = True Then
objMSComm1.PortOpen = False
tagConnection.Write(False)
HMIRuntime.Trace("Port close." & vbCrLf)
End If
End Sub。

相关文档
最新文档