2015-06-04 3 views
1

Я создаю небольшую программу C# для подключения и чтения значений с сервера кеппоров с помощью OPCAutomation.dll, но не могу получить его синтаксис?Как подключать и считывать значения из кепвера, используя OPCAutomation.dll

OPCAutomation.OPCServer _OPCServer = new OPCAutomation.OPCServer(); 
_OPCServer.connect("", ""......); 

Какие значения войдут в эти скобки?

ответ

2
OPCAutomation.OPCServer _OPCServer = new OPCAutomation.OPCServer(); 
_OPCServer.connect("Kepware.KEPServerEX.V5", ""); 

Второй параметр - узел OPC-сервера и может быть оставлен String.Empty.

С Рефлектор:

public virtual extern void Connect([In, MarshalAs(UnmanagedType.BStr)] string ProgID, [In, Optional, MarshalAs(UnmanagedType.Struct)] object Node); 

Я добавление explample для чтения и записи значения:

// set up some variables 
OPCServer ConnectedOpc = new OPCServer(); 
Array OPCItemIDs = Array.CreateInstance(typeof(string), 10); 
Array ItemServerHandles = Array.CreateInstance(typeof(Int32), 10); 
Array ItemServerErrors = Array.CreateInstance(typeof(Int32), 10); 
Array ClientHandles = Array.CreateInstance(typeof(Int32), 10); 
Array RequestedDataTypes = Array.CreateInstance(typeof(Int16), 10); 
Array AccessPaths = Array.CreateInstance(typeof(string), 10); 
OPCGroup OpcGroupNames; 

// connect to KepServerEX 
ConnectedOpc.Connect("Kepware.KEPServerEX.V5", ""); 

// Add tags and OPC group. 
// set up the tags 
OPCItemIDs.SetValue("Counting.PLC.Station1.LoggedON", 1); 
OPCItemIDs.SetValue("Counting.PLC.Station2.LoggedON", 2); 
OPCItemIDs.SetValue("Counting.PLC.Station3.LoggedON", 3); 
OPCItemIDs.SetValue("Counting.PLC.Station1.Operator", 4); 
OPCItemIDs.SetValue("Counting.PLC.Station2.Operator", 5); 
OPCItemIDs.SetValue("Counting.PLC.Station3.Operator", 6); 

// set up the opc group 
OpcGroupNames = ConnectedOpc.OPCGroups.Add("Group01"); 
OpcGroupNames.DeadBand = 0; 
OpcGroupNames.UpdateRate = 100; 
OpcGroupNames.IsSubscribed = true; 
OpcGroupNames.IsActive = true; 
OpcGroupNames.OPCItems.AddItems(6, ref OPCItemIDs, ref ClientHandles, out ItemServerHandles, out ItemServerErrors, RequestedDataTypes, AccessPaths); 

// Read the values from the server for those tags. 
// read 
Array ItemServerReadValues = Array.CreateInstance(typeof(string), 10); 
object a; 
object b; 
OpcGroupNames.SyncRead((short)OPCAutomation.OPCDataSource.OPCDevice, 6, ref ItemServerHandles, out ItemServerReadValues, out ItemServerErrors, out a, out b); 
Console.WriteLine((string)ItemServerReadValues.GetValue(4)); 
Console.WriteLine((string)ItemServerReadValues.GetValue(5)); 
Console.WriteLine((string)ItemServerReadValues.GetValue(6)); 

// Write some values into the server for those tags. 
// write 
Array ItemServerWriteValues = Array.CreateInstance(typeof(object), 7); 
ItemServerWriteValues.SetValue(1, 1); 
ItemServerWriteValues.SetValue(1, 2); 
ItemServerWriteValues.SetValue(1, 3); 
ItemServerWriteValues.SetValue("Test Op 1", 4); 
ItemServerWriteValues.SetValue("Test Op 2", 5); 
ItemServerWriteValues.SetValue("Test Op 3", 6); 
OpcGroupNames.SyncWrite(6, ref ItemServerHandles, ref ItemServerReadValues, out ItemServerErrors); 

Этот пример заимствован из: http://lifeisunderconstruction.blogspot.mx/2011/03/opc-client-in-asp-net-c.html, я добавил его только в случае, если связь ломается.

+0

Спасибо @jdecuyper, я понимаю, что выше код предназначен для подключения к кеппору, вместе с этим мне также нужно синтаксис для чтения значений тегов из тех же –

+1

. Это отличный пример для начала работы: http: //lifeisunderconstruction.blogspot .mx/2011/03/OPC-клиент-в-Asp-нетто-c.html – jdecuyper

 Смежные вопросы

  • Нет связанных вопросов^_^