DataGrids OpcLabs.BaseLib, Version=5.31.1446.1, Culture=neutral, PublicKeyToken=6faddca41dacb409 OpcLabs.BaseLibExtensions, Version=5.31.1446.1, Culture=neutral, PublicKeyToken=6faddca41dacb409 OpcLabs.EasyOpcClassic, Version=5.31.1446.1, Culture=neutral, PublicKeyToken=6faddca41dacb409 OpcLabs.EasyOpcClassicExtensions, Version=5.31.1446.1, Culture=neutral, PublicKeyToken=6faddca41dacb409 OpcLabs.EasyOpcClassicInternal, Version=5.31.1446.1, Culture=neutral, PublicKeyToken=6faddca41dacb409 OpcLabs.BaseLib.LiveMapping OpcLabs.EasyOpc OpcLabs.EasyOpc.DataAccess OpcLabs.EasyOpc.DataAccess.Generic OpcLabs.EasyOpc.DataAccess.LiveMapping OpcLabs.EasyOpc.DataAccess.LiveMapping.Extensions OpcLabs.EasyOpc.LiveMapping System.Threading [DAType] public class Device { public string DeviceCode {get;set;} [DANode()] [DAItem()] public bool IsRunning {get;set;} [DANode()] [DAItem()] public int Speed {get;set;} [DANode()] [DAItem()] public int Position {get;set;} } public class LineDef { public LineDef() { Devices = new List(); } public List Devices {get;set;} } void Main() { var sd = "Kepware.KEPServerEX.V5"; //initialization object var line = new LineDef(); line.Devices.Add(new Device() { DeviceCode="dev1"}); line.Devices.Add(new Device() { DeviceCode="dev2"}); line.Devices.Add(new Device() { DeviceCode="dev3"}); line.Devices.Add(new Device() { DeviceCode="dev4"}); line.Devices.Add(new Device() { DeviceCode="dev5"}); //preparing mapping var mapper = new DAClientMapper(); foreach(var dev in line.Devices) { mapper.Map(dev, new DAMappingContext { ServerDescriptor = sd, // local OPC server NodeDescriptor = new DANodeDescriptor { BrowsePath = "/TestChannel/MainGroup/Line1/" + dev.DeviceCode}, GroupParameters = 1000, }); } mapper.Read(); var i = 1; foreach(var dev in line.Devices) { dev.IsRunning = true; dev.Position = 10 * i; dev.Speed = 1; i++; } for(int x = 0; i < 20; i++) { mapper.Write(); Thread.Sleep(2000); } }