/// <summary> /// Sottoscrizione tag /// </summary> /// <param name="tag"></param> /// <returns></returns> private bool PLCAddTag(TagItem tag) { bool RetValue = true; // se già presente non lo agiungo if (ListTagItems.Contains(tag)) { Logger.InfoFormat("tag {0}/{1} già presente", tag.PLCName, tag.Address); return(false); } //Create a DotNetMQ Message to send var message = mdsClient.CreateMessage(); //Set destination application name message.DestinationApplicationName = PLCServerApplicationName; //Create a message var MsgData = new PLCTagData { MsgCode = MsgCodes.SubscribePLCTag, Tag = new PLCTag() { PLCName = tag.PLCName, Address = tag.Address } }; //Set message data message.MessageData = GeneralHelper.SerializeObject(MsgData); // message.MessageData = Encoding.UTF8.GetBytes(messageText); message.TransmitRule = MessageTransmitRules.NonPersistent; try { //Send message message.Send(); } catch { // non sono riuscito a inviare il messaggio Logger.InfoFormat("Messaggio non inviato"); RetValue = false; } if (RetValue) { Logger.InfoFormat("Aggiunto {0}/{1}:{2}", tag.PLCName, tag.Address, tag.Type); /* verifica il nome del plc tag */ ListTagItems.Add(tag); } return(RetValue); }
private bool SetPropertyPLCTag(MariniProperty mp) { bool bOK = true; string PLCTagName = mp.bind; var plctag = GetPLCTagData(PLCTagName); if (plctag == null) { bOK = false; } if (bOK) { // Mando messaggio di set tag a plcserver //Create a DotNetMQ Message to send var message = mdsClient.CreateMessage(); //Set destination application name message.DestinationApplicationName = PLCServerApplicationName; //Create a message var MsgData = new PLCTagData { MsgCode = MsgCodes.SetPLCTag, Tag = new PLCTag() { PLCName = plctag.PLCName, Address = plctag.Address, Value = mp.value } }; //Set message data message.MessageData = GeneralHelper.SerializeObject(MsgData); message.TransmitRule = MessageTransmitRules.NonPersistent; try { // send message message.Send(); Logger.InfoFormat("Set Value {0}:{1}", plctag.Name, mp.value); } catch (Exception exc) { // non sono riuscito a inviare il messaggio Logger.WarnFormat("Exception : {0}", exc.Message); } } return(bOK); }
/// <summary> /// invio messaggio di plctag changed value a tutti i susbscibers /// </summary> /// <param name="sender"></param> /// <param name="e">dati plctag</param> private void plc_TagChangedValue(object sender, TagChangedValueEventArgs e) { var tag = new PLCTag(); /* cerco il subscriber associato al tag */ foreach (var subscriber in _Subs.ToList()) { /* lista di subscrictions del subscriber */ var list = subscriber.Value; if (list.Contains(new Subscription(e.PLCName, e.Tag.ItemName))) { // trovato il subscriber, invio messaggio di tag changed tag.PLCName = e.PLCName; tag.Address = e.Tag.ItemName; tag.Value = e.Tag.ItemValue; //Create a DotNetMQ Message to send var message = mdsClient.CreateMessage(); //Set destination application name message.DestinationApplicationName = subscriber.Key; //Create a message var MsgData = new PLCTagData { MsgCode = MsgCodes.PLCTagChanged, Tag = tag }; //Set message data message.MessageData = GeneralHelper.SerializeObject(MsgData); message.TransmitRule = MessageTransmitRules.NonPersistent; try { //Send message message.Send(); Logger.InfoFormat("{1}/{2}-{3} : Inviato a {0}", message.DestinationApplicationName, tag.PLCName, tag.Address, tag.Value.ToString()); } catch (Exception exc) { // non sono riuscito a inviare il messaggio Logger.WarnFormat("Messaggio non inviato - {0}", exc.Message); } } } }
public bool PLCRemoveTag(TagItem tag) { bool RetValue = true; //Create a DotNetMQ Message to send var message = mdsClient.CreateMessage(); //Set destination application name message.DestinationApplicationName = PLCServerApplicationName; //Create a message var MsgData = new PLCTagData { MsgCode = MsgCodes.RemovePLCTag, Tag = new PLCTag() { PLCName = tag.PLCName, Address = tag.Address } }; //Set message data message.MessageData = GeneralHelper.SerializeObject(MsgData); // message.MessageData = Encoding.UTF8.GetBytes(messageText); message.TransmitRule = MessageTransmitRules.NonPersistent; try { //Send message message.Send(); Logger.InfoFormat("Inviato Messaggio a {0}", message.DestinationApplicationName); } catch { // non sono riuscito a inviare il messaggio Logger.InfoFormat("Messaggio non inviato"); RetValue = false; } if (RetValue) { model.ListTagItems.Remove(tag); } return(RetValue); }