使用VB脚本访问WinCC变量
- 格式:pdf
- 大小:171.42 KB
- 文档页数:4
通过OPC实现VB访问WINCC数据吴晓蕾,刘渤(天津电气传动设计研究所,天津 300180)摘要:首先简要分析了在CIPS中传统控制网和管理网的通讯复杂、稳定性差、管理软件功能受限等弊端,然后简要介绍了OPC技术的特点。
由此针对某露天煤矿原有的数据记录查询系统提出了改造方案,并重点介绍了OPC客户端的软件设计流程。
采用的方法简单有效,提高了通讯速度和稳定性。
关键词:WINCC系统;OPC服务器;VB;SQL数据库Through the OPC achieve VB access WINCC's dataWU Xiao-lei,Liu bo(Tianjin Design & Research Institute of Electric Drive,Tianjin 300180,China) Abstract :First ,a brief analysis of the CIPS traditional control network and management networks, the drawbacks is such as complex communications ,poor stability ,the limit function of management software ,and then briefly introduced the characteristics of OPC technology.Therefore design a scheme for an old data query system in the open-cut coal mine and focuses on the OPC client software design process .the method is simple and effective, to improve the communication speed and stability.Keywords : WINCC system;OPC server;VB;SQL1、引言在企业综合自动化系统(CIPS——Computer Integrated Process Control System)中,管理网需要从控制网上实时地获取工艺生产过程数据以满足管理的不同需求。
wincc 读数组-回复WinCC 是西门子推出的一款用于监控和控制工业过程的人机界面软件。
它具有强大的数据处理和可视化功能,可以实现对工业过程的实时监控和控制,以提高生产效率和质量。
在WinCC 中,读取数组是一项常见的操作,它允许用户从数组中获取数据,并在界面上显示或进行其他处理。
本文将深入讨论在WinCC 中如何读取数组,并一步一步进行详细解答。
首先,我们需要在WinCC 中创建一个数组变量。
在WinCC 的项目导航器中,找到"Variables"(变量)文件夹,右键单击并选择"New"(新建)。
在弹出的对话框中,选择"Array"(数组),然后输入数组的名称和大小。
例如,我们可以创建一个名为"myArray" 的整数数组,大小为10。
点击"OK" 完成数组的创建。
接下来,我们需要在WinCC 的代码编辑器中编写一段脚本来读取数组。
在WinCC 的项目导航器中,找到"Scripts"(脚本)文件夹,右键单击并选择"New"(新建)。
在弹出的对话框中,选择"VBScript"(VB脚本)或"CScript"(C脚本),并为脚本命名。
然后,将以下代码复制粘贴到脚本中:VBScript 示例:Sub OnClick(ByVal CtrlId)Dim myArray(9) As Integer ' 声明一个整数数组变量Dim i As Integer ' 声明一个整数变量For i = 0 To UBound(myArray)myArray(i) = i + 1 ' 将数组元素赋值为索引加1NextDim result As String ' 声明一个字符串变量result = ""For i = 0 To UBound(myArray)result = result & myArray(i) & " " ' 将数组元素连接为字符串NextMsgBox result ' 在消息框中显示数组元素End SubCScript 示例:#include <windows.h>void OnClick(int CtrlId){int myArray[10]; 声明一个整数数组变量int i; 声明一个整数变量for (i = 0; i < sizeof(myArray)/sizeof(myArray[0]); i++) {myArray[i] = i + 1; 将数组元素赋值为索引加1 }char result[100]; 声明一个字符数组变量strcpy(result, "");for (i = 0; i < sizeof(myArray)/sizeof(myArray[0]); i++) {char temp[10];itoa(myArray[i], temp, 10); 将整数转换为字符串strcat(result, temp); 将字符串连接到结果数组中strcat(result, " "); 添加空格}MessageBox(NULL, result, "Array Elements", MB_OK); 在消息弹窗中显示数组元素}在以上代码中,我们使用了一个循环来遍历数组并为其元素赋值。
WINCC一起学-VBS读取变量归档WINCC 一起学-VBS读取变量归档-一4、读取变量归档连接数据库成功,下一步就是从归档之中读取数据了,读取数据要用到两个对象,“”和“”对象简介ADO Recordset 对象用于容纳一个来自数据库表的记录集。
一个 Recordset 对象由记录和列(字段)组成。
在 ADO 中,此对象是最重要且最常用于对数据库的数据进行操作的对象。
创建对象方式Dim oRsSet oRs = CreateObject("")属性方法事件集合ADO Command简介ADO Command 对象用于执行面向数据库的一次简单查询。
此查询可执行诸如创建、添加、取回、删除或更新记录等动作。
如果该查询用于取回数据,此数据将以一个 RecordSet 对象返回。
这意味着被取回的数据能够被 RecordSet 对象的属性、集合、方法或事件进行操作。
Command 对象的主要特性是有能力使用存储查询和带有参数的存储过程属性方法集合查询归档数据查询语法和参数语法:8 字节长 ValueID 的请求:TAG_LLVID:R,<ValueID 或ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>] 4 字节长 ValueID 的请求:TAG:R,<ValueID 或ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]参数:具体详细信息参考手册C注意事项归档查询的语句也只有几个地方需要修改1、<ValueID 或 ValueName>:常用的是ValueName方式查询,较为直接,在版本中,从变量记录里也看不到各个归档的ValueID参数是多少了,而且使用ValueName 参数,很直观的就能看到是在归档名称和变量名称,很容易找到位置。
用VB访问远程WinCC数据库SQL Server20052010-03-17最近在用Visual Basic编写访问远程WinCC数据库的程序,碰到了比较棘手的通讯连接问题。
本人比较注重通讯,所以在动手之前先看看能不能通讯上,然后再做打算。
用过WinCC的人都知道,安装WinCC必须先要安装SQL Server,我用的是V6.2版,其自带的SQL Server是2005。
硬件情况大概如下:2台计算机,1个路由器,组成一个局域网;一台计算机运行WinCC及其SQL Server,作为服务器,另外一台用来运行VB编写的程序,作为客户机。
1. 通讯连接测试最近忙着弄论文,不想写太多的字,就写个流程吧。
服务器:开启SQL Server所有服务。
客户机:Windows控制面板—>管理工具—>数据源(ODBC)—>用户DSN添加SQL Server驱动程序—>命名并选择服务器(这里为“主机名\WinCC“)—>完成测试数据源—>失败—>郁闷。
2. 查找原因系统提示[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ''. The user is not associated with a trusted SQL Server connection.百度以后再这个地方看到了点解决的眉目:3. 解决问题——启用以sa登录名为远程身份登录SQL Server 2005 Express继续百度,那人却在灯火阑珊处。
让我找到了她,经过求证效果明显,特转帖过来在默认情况下,SQL Server 2005 Express是采用集成的Windows安全验证且禁用了sa登录名。
为了工作组环境下不使用不方便的Windows集成安全验证,我们要启用SQL Server 2005 Express的混合安全验证,也就是说由SQL Server来验证用户而不是由Windows来验证用户。
wincc 內部變量同步-回复标题:在WinCC中实现内部变量的同步一、引言WinCC是西门子公司开发的一款基于Windows操作系统的工业组态软件。
它主要用于过程控制和监控系统的设计、配置和编程。
在使用WinCC进行项目设计时,经常需要对内部变量进行同步。
本文将详细介绍如何在WinCC中实现内部变量的同步。
二、内部变量简介在WinCC中,内部变量是一种存储在计算机内存中的数据,可以用于存储和传递信息。
它们可以在脚本、函数或图形对象之间共享,并且可以在运行时动态改变其值。
根据变量的类型和用途,可以将其分为基本内部变量、符号地址变量、用户自定义变量等。
三、内部变量同步的必要性在复杂的控制系统中,往往需要多个内部变量协同工作,这就需要保证这些变量之间的同步。
例如,在一个生产线上,可能需要同时监控和控制多个设备的工作状态,而这些设备的状态信息通常是以内部变量的形式存储的。
如果这些内部变量不同步,就可能导致错误的控制决策,从而影响生产线的正常运行。
四、实现内部变量同步的方法1. 使用脚本语言:WinCC提供了一种名为“VBS”的脚本语言,可以通过编写脚本来实现内部变量的同步。
例如,可以通过循环结构遍历所有需要同步的内部变量,然后逐一比较并更新它们的值。
vbscriptFor Each var In VariableListIf = "VariableA" Then' 更新VariableA的值var.Value = VariableB.ValueEnd IfNext2. 使用全局变量:在WinCC中,还可以通过设置全局变量来实现内部变量的同步。
全局变量是在整个项目范围内都可见的变量,可以在任何地方访问和修改。
只要将需要同步的内部变量绑定到同一个全局变量,就可以实现它们的同步。
3. 使用变量管理器:WinCC的变量管理器提供了强大的变量管理和同步功能。
可以通过变量管理器创建变量链接,指定源变量和目标变量,然后自动同步它们的值。
WINCC 常用脚本说明——第一篇(2011-06-郑州-SZL)一、 VBS1.定义变量格式:Dim 变量实例:Dim GDH1,PCH1,CL1,BC1,Silo1,PH1Dim GDH2,PCH2,CL2,BC2,Silo2,PH22.注释格式:’’ (英文下)实例: '换柜 21、22、23、24\25'工单开始 31、32、33、34\35'工单结束 41、42、43、44\45'1--换柜,2--工单开始,3--班开始,4--工单结束,5--班结束3.读变量取值格式:=HMIRuntime.Tags("").READ实例:MES_WO = ""MES_WO=HMIRuntime.Tags("CP_A_GDH").READ4.写变量赋值格式:HMIRuntime.Tags("").Write实例:HMIRuntime.Tags("CP_A_GDCZBZ").Write 3,15.调用windows dialog格式:If MsgBox("", vbYesNo, "CONFIRM") = Then实例:If MsgBox("确定工单开始?", vbYesNo, "CONFIRM") = vbYes Then6.提示Messagebox格式:MsgBox("")实例:MsgBox("CP 工单开始取消")7.IF 判断格式:if HMIRuntime.tags("").read <> 0 thenEnd if实例:if HMIRuntime.tags("WSJ_A_GDH_1").read <> 0 thenEnd if8.打开控件组态对话框格式:ScreenItems(“”).TollbarButtonClick =实例:ScreenItems(“Control1”).TollbarButtonClick =29.数据库操作WinCC访问数据库的三种方法:a)使用WinCC OLE DB Provider 访问WinCC过程值和消息归档实例:Set conn = CreateObject(“ADODB.Connection”)Conn.open“Provider = WinCCOLEDBProvider.1;catalog = CC_OpenArch;Data Source = .\WinCC” b)使用MS OLE DB Provider 访问WinCC用户归档实例:Set conn = CreateObject(“ADODB.Connection”)C onn.open“Provider=SQLLEDB.1;Integrated Security = SSPI; Persist SecurityInfo = false ; Initial Catalog = CC_OpenArch; Data Source = .\WinCC” c)使用VBS脚本通过ODBC访问数据库1)连接数据库:实例:YX = HMIRuntime.Tags("CP_A_GDH").READstrConnectiOnString = "Provider=SQLOLEDB.1;Persist Security Info=False;UserID=dbzs1;Password=dbzs1;Initial Catalog=DBZS1;Data Source=10.65.248.20\WINCC"'strSQL = "select distinct MATID from MES_ZS_WOR_CUT_BACK where WOID='" &YX& "'"Set objCoNnection = CreateObject("ADODB.Connection")objConnection.ConnectiOnString = strConnectionStringobjConnection.openSet objR = CreateObject("ADODB.RecorDset")Set obJCommand = CreateObject("mand")objCommand.ActiveCoNnection = objConnection2)查找数据库实例:strSQL = "Select mzwcb.MATID FROM MES_ZS_WOR_CUT_BACK mzwcb WHEREmzwcb.WOID='"&YX&"' AND mzwcb.MATID LIKE '270%'"3)写数据库实例:MandText = StrsqLSet objR = objCommand.ExEcuteJX =""JX = objR(0)HMIRuntime.Tags("CP_A_JXPH").Write JX4)关闭数据库实例:Set obJCommand = NothingobjConnection.CloseSet objR = NothingSet objCoNnection = Nothing5)数据库存储过程操作mandText="WSJ_REPORT'"&GDH1&"','"&BC1&"','"&PCH1&"','"&PH1&"','"&Silo1&"',"&CL1&",'"&CStr(Now)&"',3"'V ="WSJ_REPORT '"&GDH&"','"&BC&"','"&PCH&"','"&PH&"','"&Silo&"',"&CL&",'"&CStr(Now)&"',3"'MSgbox("1BKS")'objCommand.Execute二、 C脚本1.定义变量格式:type 变量实例:int GDH1;Byte GDH2;Double GDH3;2.注释格式:// (英文下)实例: //换柜 21、22、23、24\25//工单开始 31、32、33、34\35//工单结束 41、42、43、44\45//1--换柜,2--工单开始,3--班开始,4--工单结束,5--班结束3.读变量取值格式:GetTagByte("",);实例:GetTagByte("WSJ_A_GDBL");GetTagByte("WSJ_A_OFWO5");4.写变量赋值格式:SetTagByte("",);实例:SetTagByte("WSJ_A_GDBL",1);SetTagByte("WSJ_A_OFWO5",1);5.调用windows dialog格式:MsgBox("", vbYesNo, "CONFIRM")实例:MsgBox("确定工单开始?", vbYesNo, "CONFIRM") = vbYes Then6.提示Messagebox格式:MsgBox("")实例:MsgBox("CP 工单开始取消")7.IF 判断格式:if ()else实例:if ("WSJ_A_GDH_1"== 0)Else8.打开控件组态对话框格式:SetPropWord(lpszPictureName,””,””,)实例:SetPropWord(lpszPictureName,”Control1”,”TollbarButtonClick”,2)三、动态对话框函数判断取值实例:('C_SA509_CASING_CUR_1'<=63 || 'C_SA509_CASING_CUR_2'<=63 || 'C_SA509_CASING_CUR_3'<=63) && 'C_SA509_STATE'==1四、 WinCC组包含影响整个WinCC系统的函数1.BOOL GetHWDiag(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数运行时该函数可实现诊断的直接启动,由事件触发。
winccopc:用VB编写OPC客户端访问WINCC-vb教程疯狂代码 / ĵ:http://VisualBasic/Article15470.html用VB编写OPC客户端访问WINCCOPC是个工业标准它是由些世界上著名自动化系统和硬件、软件Software公司和Microsoft(微软)紧密合作而建立〔O代表OLE(对象链接和嵌入)P (process过程)C (control控制)OLE已从面向对象重新定义为基于对象并更名为Active X〕WinCC是西门子公司在自动化领域采用最先进技术和微软公司在共同开发居于世界领先地位工控软件SoftwareWinCC即WINDOWS CONTROL CENTER(视窗控制中心)WinCC是个功能强大全面开放监控系统既可以用来完成小规模简单过程监控应用也可以用来完成复杂应用在任何情况下WinCC都可以生成漂亮而便捷人机对话接口使操作员能够清晰地管理和优化生产过程它集成OPC(OLE for process control)服务器使得过程数据可由其它应用(OPC客户机)访问WinCC在安装时提供了OPC客户端Control控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll),这个Control控件就是我们在VB中要用到Control控件我们也可以使用通用OPC客户端Control控件: OPC Automation 2.0.在WINCC帮助中有Siemens OPC DAAutomation 2.0使用简略帮助但说得不很详细我在使用中碰到不少问题现并写出来和大家共享、OPC连接 先在“引用”将近 Siemens OPC DAAutomation 2.0加入然后开始定义全局变量在本中我使用了两个OPC组进行OPC访问所以定义了全局变量我们要首先定义OPC服务类型和计算机结点名定义OPC组和OPC标签组并定义OPC标签和值数注意值定要设为Variant´OPC处理:只对WINCCConst ServerName = \"OPCServer.WinCC\" ‘OPC类型Const NodeName = \"GUK\" ‘结点名即计算机名‘Dim NodeName As StringDim WithEvents MyOPCServer As OPCServer ‘OPC服务Dim MyOPCGroupColl As OPCGroups ‘Dim WithEvents MyOPCGroupOut As OPCGroup ‘OPC组本用两个组进行OPC连接Dim WithEvents MyOPCGroupIn As OPCGroupDim MyOPCItemCollIn As OPCItems ‘OPC标签组Dim MyOPCItemCollOut As OPCItemsDim ServerHandlesIn As Long ‘句柄Dim ServerHandlesOut As LongDim ErrorsIn As Long ‘句柄Dim ErrorsOut As LongDim WatchDataReadItem(100) As String ´记录OPC标签Dim WatchDataReadValue(100) As Variant ´存放OPC值Dim WatchDataWriteItem(100) As String ´记录OPC标签Dim WatchDataWriteValue(100) As Variant ´存放OPC值在定义所有变量后我们就要进行OPC连接了要进行OPC连接的前,先要配置要访问OPC标签名我们WatchDataReadItem、WatchDataWriteItem中加入相应标签名注意:这两个必须由1开始不能由0开始配置好标签后就要进行OPC连接了如下面子:1、 ClientHandles1先配置名柄索引这将在读取OPC标签值时可要用到2、 生成OPC对象3、 进行OPC标签连接至此:OPC连接就成功了我们可以对OPC进行读和写操作了´--------------------------------------------------------------------- ´ Sub StartClient´ 目:连接至OPC_server创建组和添加条目´--------------------------------------------------------------------- Private Sub StartClientDim ItemNum As IntegerDim TarnscationID As LongDim CanceID As LongDim ClientHandles1(100) As LongDim ii As IntegerOn Error GoTo HANDLEeRRORFor ii = 0 To 100ClientHandles1(ii) = ii 先配置名柄索引这将在读取OPC标签值时可要用到 Next iiTarnscationID = 1‘ NodeName = xProfile.GetValue(\"SYSTEM\", \"NodeName\")‘生成OPC对象Set MyOPCServer = New OPCServerMyOPCServer.Connect ServerName, NodeNameSet MyOPCGroupColl = MyOPCServer.OPCGroupsMyOPCGroupColl.DefaultGroupIsActive = TrueSet MyOPCGroupIn = MyOPCGroupColl.Add(\"MYGROUPIN\")Set MyOPCGroupOut = MyOPCGroupColl.Add(\"MYGROUPOUT\") Set MyOPCItemCollIn = MyOPCGroupIn.OPCItemsSet MyOPCItemCollOut = MyOPCGroupOut.OPCItems‘进行OPC标签连接If WriteItemIdex > 0 ThenMyOPCItemCollOut.AddItems WriteItemIdex, WatchDataWriteItem, ClientHandles1, ServerHandlesOut, ErrorsOut ´化OCP连接MyOPCGroupOut.IsSubscribed = TrueEnd IfIf ReadItemIdex > 0 ThenMyOPCItemCollIn.AddItems ReadItemIdex, WatchDataReadItem, ClientHandles1, ServerHandlesIn, ErrorsIn ´化OCP连接MyOPCGroupIn.IsSubscribed = TrueEnd IfExit SubHANDLEeRROR:needOPCRestart = TruexLog1.log \"OPCl连接发生\"End Sub2、OPC标签读写对OPC标签读可以通过MyOPCGroupIn组和MyOPCGroupOutDataChange事件来读取该事件有多个参数:其中NumItems是指标签改变值个数ClientHandles是改变值标签索引ItemValues为改变值数据具体意思是ClientHandles(1)值是其对应标签索引其所指OPC标签值在ItemValues(1)中般来说刚连接上时该事件会把全部所要求访问OPC标签值全部读取过来(顺序不要通过ClientHandles索引)此后只有数据发生变化时才会触发该事件也只会传输发生了变化数据没有变化数据不会出现在本事件ItemValues中Private Sub MyOPCGroupOut_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles As Long, ItemValues As Variant, Qualities As Long, TimeStamps As Date)´产生要通知下级数据变化根椐不再Control控件有区别处理For ii = 1 To NumItemsWatchDataWriteValue(ClientHandles(ii) - 1) = ItemValues(ii) ´对改变值读入本Next iiEnd Sub对OPC写可以有同步和异步的分对于大量数据传输异步是更佳选择但对少量数据传输同步表现得更好要进行数据传输先要将值数据进行赋值注意:值数据要由0开始也就是说值和标签数据不是、对应值要比标签前位这点在WINCC介绍说明中没有但在我实际使用中直要这样不然数据就产生错位看下面这是个拔号完毕后返回数据进行OPC传递包含解包过程Private Sub showSuccess(msg As String)Dim location As StringDim nowTime As StringDim logStr As StringDim Value As StringDim ii, temp As IntegerDim isPack As BooleanDim sHead, sDelimited, sTail As Stringlocation = xProfile.GetValue(WatchPo(nowRunID), \"LOCATION\")nowTime = NowlogStr = \"拔\" & location & \"取数成功\" & msgxLog1.log logStrlogStr = \" \" & msgxLog2.log logStr ´记录数据´数据上传´如果有包结构,则显示包结构,isPack = xProfile.GetValue(WatchPo(nowRunID), \"ISRECHEAD\")If WatchPoRBegin(nowRunID) < 0 Then Exit SubIf isPack ThensHead = xProfile.GetValue(WatchPo(nowRunID), \"RECHEAD\")sDelimited = xProfile.GetValue(WatchPo(nowRunID), \"RECDELIMITER\") sTail = xProfile.GetValue(WatchPo(nowRunID), \"RECEND\")Value = Split(msg, sDelimited)For ii = 0 To UBound(Value) - 1temp = WatchPoRBegin(nowRunID) + iiIf temp > WatchPoREnd(nowRunID) Then Exit ForWatchDataReadValue(temp - 1) = Value(ii + 1) ´VALUE要从0开始比ITEM少1,所以减 有包头,占去位,向后延Next iiElseWatchDataReadValue(WatchPoREnd(nowRunID) - 1) = msgEnd IfMyOPCGroupIn.SyncWrite ReadItemIdex, ServerHandlesIn, WatchDataReadValue, ErrorsIn ´数据上传 ´记录上次成功执行时间xProfile.SetValue WatchPo(nowRunID), \"LASTTIME\", nowTimeEnd Sub3、OPC连接断开OPC客户端连接后要占用服务器资源所以如果不需要使用OPC时必须进行OPC连接断开断开相当简单释放资源即可如下Sub StopClient_disibledevent=>´----------- 释放组和服务器对象MyOPCGroupColl.RemoveAll´----------- 和服务器断开连接并且清除 MyOPCServer.DisconnectSet MyOPCItemCollIn = NothingSet MyOPCItemCollOut = NothingSet MyOPCGroupIn = NothingSet MyOPCGroupOut = NothingSet MyOPCGroupColl = NothingSet MyOPCServer = NothingEnd Sub但在实际使用中发现频繁连接和断开将使服务器资源被大量消耗最终让服务器出错所以尽量减少无谓OPC连接和断开结语: OPC使用是作为个DCOM在使用所以OPC客户端可以网络上任计算机运行但你必须配置DCOM访问权限如果你不想费神把服务器和客户端都用相同用户名和密码登录就成了如果想配置DCOM请参看DCOM配置参考资料:WinCC在线帮助作者介绍:顾恺高级员湖南大学毕业曾从事过LINUX内核研究从事过企业信息化平台开发当前从事SCADA开发主要将各种区别类型远程设备通过同手段进行数据采集并集成到企业信息化平台中去喜欢将工作中些积累形成文字2009-2-12 4:19:20疯狂代码 /。
WINCC 一起学-VBS读取变量归档通过脚本把变量归档里面的数据读出来,后期再导入EXCEL或者控件里面,或有其他的功能。
本文从新建项目开始,一步一步来,想到哪里写到哪里,为了减少工作量,就以温度(T),压力(P)和流量(L)3个变量为例进行读写操作。
软件基础:虚拟机WIN7 SP1 64位旗舰版和WINCC 7.3SE+UPD9+OFFICE2003为基础,未安装连通性软件包。
目的:使用VBS脚本,读取WINCC变量归档数据,然后导出到EXCEL文件或者ListView控件中。
1、参考资料先把一些参考资料放出来,大家一起学习,本文中的资料来自以下文档、手册和WINCC帮助内容,一些朋友问关于报表的问题,我给发的基本上都是这些手册。
2、准备工作2.1 新建项目在D盘目录下新建名为TAGREAD的项目2.2 建立变量在内部变量下,新建分组“TR”,在分组下面,新建名分别为为“P”、“T”、“L”的变量,类型均为:32-位浮点数IEEE 754。
图1同时变量在全局脚本里面进行周期性赋值T:画幅值是10周期10秒的正弦波T:0-10的随机数P:T/100进行累加脚本如下:图2触发方式:周期->250ms2.3 变量归档新建名为:TAGR的过程值归档,为减少数据库的大小,采样和归档时间我设置成1S,其他设置默认。
如图,前三个,下面的请忽略图32.4 设计画面本人的审美不咋的,就随便做一个画面用来测试。
画面内容:3个IO域,显示3个变量的实际值;1个在线趋势控件,显示变量趋势;标尺控件方便查看历史值,Listview控件:方便后面导出显示;应用程序:脚本诊断,用于输出脚本是否正常。
最右一个按钮,名为测试。
运行后如图图44、读取变量归档连接数据库成功,下一步就是从归档之中读取数据了,读取数据要用到两个对象,“ADODB.Recordset”和“mand”对象4.1 ADODB.Recordset4.1.1 简介ADO Recordset 对象用于容纳一个来自数据库表的记录集。
wincc中常用的vb指令-回复WinCC中常用的VB指令WinCC是西门子公司开发的一款用于监控和控制自动化系统的软件平台。
它提供了丰富的功能和工具,用于创建和管理人机界面,以及实现实时数据采集和处理。
在WinCC中,VB(Visual Basic)指令常被用来编写逻辑和处理程序,以实现更加复杂和高级的功能。
本文将介绍WinCC中常用的VB指令,并逐步解释其用途和用法。
一、常用VB指令之MsgBoxMsgBox是一个常用的VB指令,用于显示一个简单的消息框,以向用户提供信息或提示。
它的基本用法如下:MsgBox "Hello, WinCC!"上述代码将在运行时弹出一个消息框,显示文本"Hello, WinCC!"。
你也可以在消息框中显示变量或表达式的值:Dim x As Integerx = 10MsgBox "The value of x is: " & x上述代码中,变量x的值被连接到文本"The value of x is: ",并显示在消息框中。
除了显示简单的信息,MsgBox还可以用于询问用户的选择。
例如:Dim result As Integerresult = MsgBox("Do you want to continue?", vbYesNo)上述代码将在运行时弹出一个询问框,显示文本"Do you want to continue?",并提供选项"Yes"和"No"。
用户的选择将存储在result变量中。
二、常用VB指令之If...Then...ElseIf...Then...Else是一个常用的VB指令块,用于根据条件执行不同的代码。
它的基本用法如下:Dim x As Integerx = 10If x > 5 ThenMsgBox "x is greater than 5"ElseMsgBox "x is less than or equal to 5"End If上述代码将根据变量x的值显示不同的消息框。
WINCC VBS脚本过程调用
如图1所示:我建立了带参数的过程procedure2
如图2所示:我在一个按钮的点击左键的动作中定义VBS动作,调用过程procedure2,如果我直接给procedure2赋值常数的话,能够将最终的结果输出到变量NewTag;
如图3所示:如果我在调用时,赋值的是两个变量,为什么就不行了,哪里出错了?
问题补充:
为什么WINCC的VBS脚本与WINCCFLEXIBLE2008的VBS脚本用起来那么不一样啊?在WINCCFLEXIBLE2008中调用SUB类型与函数类型都很方便啊。
为什么在WINCC中调用这么麻烦。
而且在WINCC 中调用SUB类型的过程,不能给其变量赋值吧?只能事先就把目标变量写到过程里面去。
能不能给我点关于WINCC中对于带参数与不带参数的VBS过程的调用方法与案例。
图片说明:1,图1 2,图2 3,图3
最佳答案
数据类型不匹配,你的变量是对象而不是数值,参数改为AA.Read、BB.Read即可。
如何从外部使用VB脚本访问WinCC变量?
字节
数
123456789101112131415
16
发送
报文
20E112BC00000047E00D9应答
报文
20E112BC000005FB31006C
如何从外部使用VBS脚本访问WinCC变量?
通过Windows 脚本宿主可以访问WinCC Tag,用这种方法可以非常简单的与WinCC运行系统交换数据。
我们已 Windows VBS 脚本为例说明这个功能的用法:
1. 首先,在WinCC中建立Tag 用于被外部VBS访问,比如:新建一个WinCC 内部 Tag:
a ,类型为 16位整型。
2. 在WinCC中新建一个画面用来显示Tag a的值,激活该画面。
3. 打开Windows中纯文本编辑器,比如:写字板。
保存为后缀为 .vbs文件,比如: tag.vbs 。
4. 双击执行tag.vbs这个文件 。
5. 在弹出对话框中输入WinCC Tag名:a,
6. 然后点击“OK”,会出另外一个对话框,输入要付给WinCC Tag的值,比如: 10。
点击“OK”。
7. 这时,WinCC画面的值会立刻变为 10:
该方法的使用方法,与WinCC的VBS类似,可以参考WinCC VBS的帮助文档。
这种通过外部脚本访问运行时WinCC变量的方法,同样可以用于Excel的VBA中。