看过ExCEl_OPC的脚本例子,对其中的一部分内容不理解。例如:
PrivatESubMyOPCGroup_DataChange(ByValTransactionIDASLong,ByValNumItemsAsLong,ClientHandles()AsLong,ItemValues()AsVariant,Qualities()AsLong,TimeSTamps()AsDate)
‘———–Setthespreadsheetcellvaluestothevaluesread
IfNumItems=1Then
SelectCaseClientHandles(1)
Case1
Range("B4").Value=CStr(ItemValues(1))
Range("C4").Value=Hex(Qualities(1))
TimeStamps(1)=DateAdd("h",8,TimeStamps(1))
Range("D4").Value=CStr(TimeStamps(1))
Case2
Range("B5").Value=CStr(ItemValues(1))
Range("C5").Value=Hex(Qualities(1))
TimeStamps(1)=DateAdd("h",8,TimeStamps(1))
Range("D5").Value=CStr(TimeStamps(1))
CaseElse
EndSelect
Else
Range("B4").Value=CStr(ItemValues(1))
Range("C4").Value=Hex(Qualities(1))
TimeStamps(1)=DateAdd("h",8,TimeStamps(1))
Range("D4").Value=CStr(TimeStamps(1))
Range("B5").Value=CStr(ItemValues(2))
Range("C5").Value=Hex(Qualities(2))
TimeStamps(2)=DateAdd("h",8,TimeStamps(2))
Range("D5").Value=CStr(TimeStamps(2))
EndIf
EndSub
这是针对2个变量的,没有问题。
但如果是10或百个变量,如何编写??
ClientHandle是什么含义?是一条记录(指变量名、变量值、质量代码、时间戳)的索引?
我添加10个变量,float1至float10,要求读出每个变量对应的值,质量代码,还有更新时间戳,应如何编写?
问题补充:
如何让Qualitues()和TimeStamps也建立起映射关系。
我想要的格式是:
TagNameValueQulitiesTimeStamp
float10.00C020**-**-**
float20.00C020**-**-**
float30.00C020**-**-**
float40.00C020**-**-**
…………………………..
这段代码如何写?
会不会出现TimeStamp(4)?为什么会越界?
最佳答案
ClientHandle和ServerHandle都是属于句柄,ClientHandle就是像你说的可以索引到每个元素的值,品质,时间戳等还有多更的信息,这个是客户端句柄,你在建立Group的时候,要给添加进Group的Item分配一个ClientHandle,用于后面来追踪它的信息,可以说有了ClientHandle,你就能找到每个Item的资源。
ServerHandle是系统自动分配的,也是一样的功能。
如何让Qualitues()和TimeStamps也建立起映射关系。你的品质和时间戳不是已经找到了也对应上了吗?做10个变量把循环该成FOR循环就可以了啊
提问者对于答案的评价: