看过Excel_OPC的脚本例子,对其中的一部分内容不理解。例如:
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
‘———– Set the spreadsheet cell values to the values read
If NumItems = 1 Then
Select Case ClientHandles(1)
Case 1
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))
Case 2
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))
Case Else
End Select
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))
End If
End Sub
这是针对2个变量的,没有问题。
但如果是10或百个变量,如何编写??
ClientHandle是什么含义?是一条记录(指变量名、变量值、质量代码、时间戳)的索引?
我添加10个变量,float1至float10 ,要求读出每个变量对应的值,质量代码,还有更新时间戳,应如何编写?
问题补充:
如何让Qualitues()和TimeStamps也建立起映射关系。
我想要的格式是:
TagName Value Qulities TimeStamp
float1 0.00 C0 20**-**-**
float2 0.00 C0 20**-**-**
float3 0.00 C0 20**-**-**
float4 0.00 C0 20**-**-**
…………………………..
这段代码如何写?
会不会出现TimeStamp(4)?为什么会越界?
最佳答案
ClientHandle和ServerHandle都是属于句柄,ClientHandle就是像你说的可以索引到每个元素的值,品质,时间戳等还有多更的信息,这个是客户端句柄,你在建立Group的时候,要给添加进Group的Item分配一个ClientHandle,用于后面来追踪它的信息,可以说有了ClientHandle,你就能找到每个Item的资源。
ServerHandle是系统自动分配的,也是一样的功能。
如何让Qualitues()和TimeStamps也建立起映射关系。你的品质和时间戳不是已经找到了也对应上了吗?做10个变量把循环该成FOR循环就可以了啊
提问者对于答案的评价:
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc365542.html