public PLCHelpers(String PLC_IP, String Belt_IP) { MainMicroLogixController = new EthernetIPforCLXCom(); MainMicroLogixController.IPAddress = PLC_IP; BeltMicroLogixController = new EthernetIPforCLXCom(); BeltMicroLogixController.IPAddress = Belt_IP; }
// Recieve message event private void ReadMQ_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e) { Log.Debug("Read Message Queue Event Triggered"); //Read recieved message var msgRead = new Message(); msgRead = readMQ.EndReceive(e.AsyncResult); Log.Debug(msgRead.Label + " Recieved MsgID: " + msgRead.Id); if (msgRead.Label == "Plc_Config") { msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(PlcConfigMsg) }); var msgData = ((PlcConfigMsg)msgRead.Body); // Instantiate Logix drivers logixEventDrv = new EthernetIPforCLXCom() { IPAddress = msgData.IPAddress, DisableSubscriptions = msgData.DisableSubscriptions, PollRateOverride = msgData.PollRateOverride, ProcessorSlot = msgData.ProcessorSlot, Port = msgData.Port }; Log.Information("Logix Event driver created"); logixSubscriptionDrv = new EthernetIPforCLXCom() { IPAddress = msgData.IPAddress, DisableSubscriptions = msgData.DisableSubscriptions, PollRateOverride = msgData.PollRateOverride, ProcessorSlot = msgData.ProcessorSlot, Port = msgData.Port }; Log.Information("Logix Subscription driver created"); logixTransactionDrv = new EthernetIPforCLXCom() { IPAddress = msgData.IPAddress, DisableSubscriptions = msgData.DisableSubscriptions, PollRateOverride = msgData.PollRateOverride, ProcessorSlot = msgData.ProcessorSlot, Port = msgData.Port }; Log.Information("Logix Transaction driver created"); // Set up read timers eventTimer = new Timer { Interval = msgData.EventPollRate }; eventTimer.Elapsed += new ElapsedEventHandler(OnEventTimer); subscriptionTimer = new Timer { Interval = msgData.SubscriptionPollRate }; subscriptionTimer.Elapsed += new ElapsedEventHandler(OnSubscriptionTimer); transactionTimer = new Timer { Interval = msgData.TransactionPollRate }; transactionTimer.Elapsed += new ElapsedEventHandler(OnTransactionTimer); // Get tag list from database var msgObject = new TagListReqMsg { getTagList = true }; var type = new Type[] { typeof(TagListReqMsg) }; using (var msg = new SendMessage()) { msg.Send(msgObject, "TagList_Request", type); } Log.Debug("Plc Config Message Processed" + " MsgID: " + msgRead.Id); } if (msgRead.Label == "TagList_Config") { msgRead.Formatter = new XmlMessageFormatter(new Type[] { typeof(TagListMsg) }); var msgData = ((TagListMsg)msgRead.Body); eventList = new List <ListTag>(); transactionList = new List <ListTag>(); subscriptionList = new List <ListTag>(); foreach (ListTag elem in msgData.List) { if (elem.TagTypeId == TagTypeConstants.eventType) { var tag = elem; eventList.Add(tag); Log.Debug("Tag added to event tag list: " + tag.Name); } if (elem.TagTypeId == TagTypeConstants.subscriptionType) { var tag = elem; subscriptionList.Add(tag); Log.Debug("Tag added to subscription tag list: " + tag.Name); } if (elem.TagTypeId == TagTypeConstants.transactionType) { var tag = elem; transactionList.Add(tag); Log.Debug("Tag added to transaction tag list: " + tag.Name); } } ; // Start read timers eventTimer.Start(); transactionTimer.Start(); subscriptionTimer.Start(); Log.Debug("Read timers started "); } // Resume listening for messages try { readMQ.BeginReceive(); Log.Information("ReadMQ Listening For Messages"); } catch (Exception ex) { Log.Error("ReadMQ Begin Recieve Exception: " + ex.Message); } }