QQ登录

只需一步,快速开始

wincc自带vba调用

[ 复制链接 ]
wincc自带vba调用问题1:我在wincc画面自带的VBA里创建了我需要的窗体画面,请问我如何在wincc画面按钮事件里调用刚刚创建好的VBA窗体界面?
问题2:wincc自带的VBA窗体里,怎么获取wincc的变量值,对变量值进行写入和读取?


------wincc支持的是vbs脚本编程,不知道你说的窗体是什么,最好截图上来。




---------VBA只用于组态,而VBS用于运行状态。
所以,在VBA里读写WinCC变量值是不现实的。同样,运行时,也调不出VBA窗体。


-----版主,那你说的vba用于组态是用在哪边的组态呢


------在画面编辑器中,使用VBA,主要是对画面上的对象进行静态或动态部分进行组态。一般情况下,画面上有大量相同性质的对象时,如果一个个地手工组态,是很枯燥的,而且容易出错,用VBA组态,一个循环,就能解决这批对象的组态工作。
因此,VBA只是组态的助手。组态好后,VBA的使命也就结束了。

---那VBA怎么获取画面编辑器中画面上的对象呢
还有那VBA里自带的VB6的画面就是个摆设,没用的?

---------版主,你说的批量组态,你能举个例子吗及相关代码?


-------听说过EXCEL上面用vba的,WINCC没见过呢,学习一下


-------举一个简单的VBA组态例子。
画面上有100个IO控件,控件名称分别是:IO1,IO2,......,IO100,在输入输出值上需要链接变量,比如,链接结构变量,T001.T,T002.T,......,T100.T。
Private Sub ChangeIO()
Dim objIOField As HMIIOField
Dim objVariableTrigger As HMIVariableTrigger
Dim sObj As String
Dim sTag As String
Dim sCode As String
Dim iIndex As Integer

For iIndex = 1 To 100
sObj = "IO" & Format(iIndex, "#0") 'IO控件名称
Set objIOField = ThisDocument.HMIObjects(sObj) ‘IO对象
sTag = "T" & Format(iIndex, "000")
sCode = sTag & ".T" '结构变量名称
‘动态组态:在IO的输入输出域属性上链接结构变量
Set objVariableTrigger = objIOField.OutputValue.CreateDynamic(hmiDynamicCreationTypeVariableDirect, sCod)
‘动态组态:触发器为根据变量变化
objVariableTrigger.CycleType = hmiVariableCycleTypeOnChange
Next iIndex
End Sub
这段VBA代码是在该画面的VBA宏中。

------如果是这样的话VBA能获取到画面编辑器上控件 名称的把?


----一般情况下,画面上的控件名称自己给定。自动获取的很少,除非用枚举方式。
回复

使用道具 举报

快速回复 返回列表 客服中心 搜索