As Archie suggested, use the driver only and possibly create some sort of the mini DataSubscriber, similar to this:
class Program
{
static int SubscriptionID;
static string previousValue;
static void Main(string[] args)
{
EthernetIPforSLCMicroCom SLC = new EthernetIPforSLCMicroCom();
SLC.IPAddress = "192.168.76.12";
SubscriptionID = SLC.Subscribe("N9:3", 1, 500, SLC_SubscriptionDataReceived);
previousValue = SLC.Read("N9:3");
SLC.SubscriptionDataReceived += SLC_SubscriptionDataReceived;
while (true)
{
Thread.Sleep(10);
}
}
private static void SLC_SubscriptionDataReceived(object sender, MfgControl.AdvancedHMI.Drivers.Common.PlcComEventArgs e)
{
if (e.ErrorId == 0)
{
if (e.Values[0] != previousValue)
{
Console.WriteLine("{0} Data Change, Old Value = {1}, New Value = {2}, {3}", e.PlcAddress, previousValue, e.Values[0], DateTime.Now);
previousValue = e.Values[0];
}
}
}
}
or the mini version of the DataSubscriber2, similar to this:
class Program
{
static int SubscriptionID0;
static int SubscriptionID1;
static string[] previousValue = new string[2] {"", ""};
static void Main(string[] args)
{
EthernetIPforSLCMicroCom SLC = new EthernetIPforSLCMicroCom();
SubscriptionID0 = SLC.Subscribe("B3:0/0", 1, 500, SLC_SubscriptionDataReceived);
previousValue[SubscriptionID0 - 1] = SLC.Read("B3:0/0");
SubscriptionID1 = SLC.Subscribe("N7:0", 1, 500, SLC_SubscriptionDataReceived);
previousValue[SubscriptionID1 - 1] = SLC.Read("N7:0");
SLC.SubscriptionDataReceived += SLC_SubscriptionDataReceived;
while (true)
{
Thread.Sleep(10);
}
}
private static void SLC_SubscriptionDataReceived(object sender, MfgControl.AdvancedHMI.Drivers.Common.PlcComEventArgs e)
{
if (e.ErrorId == 0)
{
if (e.Values[0] != previousValue[e.SubscriptionID - 1])
{
Console.WriteLine("{0} Data Change, Old Value = {1}, New Value = {2}, {3}", e.PlcAddress, previousValue[e.SubscriptionID - 1], e.Values[0], DateTime.Now);
previousValue[e.SubscriptionID - 1] = e.Values[0];
}
}
}
}