Professional OPC
Development Tools

logos

Read ad Write multiple values

More
20 Aug 2019 06:11 #7634 by support
Hello.

It looks like that we have worked on similar issue in Python before. The results array is weird - but it still can be processed. Please see www.opclabs.com/forum/general-issues-building/2466-quickopc-in-python#6436 , and attempt to extract the results (roughly) like this:

Result1 = win32com.client.Dispatch(val[0][0])
Result2 = win32com.client.Dispatch(val[0][1])
Result3 = win32com.client.Dispatch(val[0][2])
 
Vtq1 = Result1.Vtq
Vtq2 = Result2.Vtq
Vtq3 = Result3.Vtq
Best regards

Please Log in or Create an account to join the conversation.

More
17 Aug 2019 20:03 #7632 by Jesus Rodriguez
Hi, thanks for your reply, I just tried to run it in python. This is what I got:


import win32com.client

ReadItemArguments1 = win32com.client.Dispatch("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments1.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments1.ItemDescriptor.ItemID = "Demo.Single"

ReadItemArguments2 = win32com.client.Dispatch("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments2.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments2.ItemDescriptor.ItemID = "Demo.Single"

arguments = [ReadItemArguments1, ReadItemArguments2]

client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient')

results = client.ReadMultipleItemValues(arguments)


There is no error at this point but still I think is not correct since I cannot get the values.

Thank you for your help

Please Log in or Create an account to join the conversation.

More
14 Aug 2019 07:51 #7621 by support
There are ReadMultipleItems and ReadMultipleItemValues methods for this purpose. See e.g. opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...ding%20just%20the%20value.html .

I do not have Python example at hand. hopefully you can derive it from code given in other languages. If you run into an issue, let me know here. Here is a VBScript example for ReadMultipleItemValues:
Rem This example shows how to read values of 4 items at once, and display them.
 
Option Explicit
 
Dim ReadItemArguments1: Set ReadItemArguments1 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments1.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments1.ItemDescriptor.ItemID = "Simulation.Random"
 
Dim ReadItemArguments2: Set ReadItemArguments2 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments2.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments2.ItemDescriptor.ItemID = "Trends.Ramp (1 min)"
 
Dim ReadItemArguments3: Set ReadItemArguments3 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments3.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments3.ItemDescriptor.ItemID = "Trends.Sine (1 min)"
 
Dim ReadItemArguments4: Set ReadItemArguments4 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments4.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments4.ItemDescriptor.ItemID = "Simulation.Register_I4"
 
Dim arguments(3)
Set arguments(0) = ReadItemArguments1
Set arguments(1) = ReadItemArguments2
Set arguments(2) = ReadItemArguments3
Set arguments(3) = ReadItemArguments4
 
Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient")
Dim results: results = Client.ReadMultipleItemValues(arguments)
 
Dim i: For i = LBound(results) To UBound(results)
    WScript.Echo "results(" & i & ").Value: " & results(i).Value
Next

Best regards

Please Log in or Create an account to join the conversation.

More
13 Aug 2019 05:36 #7620 by admin
Replied by admin on topic Read ad Write multiple values
Please be [patient. Will reply later this week, as soon as possible. We have a vacation period.

Please Log in or Create an account to join the conversation.

More
12 Aug 2019 18:26 #7619 by Jesus Rodriguez
Hi

I have the following code to read and write:

import win32com.client
client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient')

value = client.ReadItemValue('', 'CoDeSys.OPC.02', '.Inputs[9]')
client.WriteItemValue('', 'CoDeSys.OPC.02', '.Inputs[9]', 7)

They work well but I would like to know how to read and write multiple values in just one function. Is there any function already doing this?

Thank you.

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.254 seconds

      

 Recommend this on Google