| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | using System.Xml;using Aitex.Core.Common.DeviceData;using Aitex.Core.RT.DataCenter;using Aitex.Core.RT.Event;using Aitex.Core.RT.IOCore;using Aitex.Core.Util;namespace Aitex.Core.RT.Device.Unit{    public class IoEmo : BaseDevice, IDevice    {        public bool StopButtonSignal        {            get            {                return _diStopButton != null && _diStopButton.Value;            }        }        public bool MainContactorSignal        {            get            {                return _diMainContactor == null || _diMainContactor.Value;            }        }        private DIAccessor _diStopButton = null;        private DIAccessor _diMainContactor = null;        //private R_TRIG _trigStopButton = new R_TRIG();        //private F_TRIG _trigMainContactor = new F_TRIG();        private R_TRIG _trigEmoSignaled = new R_TRIG();        public IoEmo(string module, XmlElement node, string ioModule = "")        {            base.Module = module;            base.Name = node.GetAttribute("id");            base.Display = node.GetAttribute("display");            base.DeviceID = node.GetAttribute("schematicId");            _diStopButton = ParseDiNode("diStopButton", node, ioModule);            _diMainContactor = ParseDiNode("diMainContactor", node, ioModule);        }        public bool Initialize()        {                                    DATA.Subscribe(string.Format("Device.{0}.{1}", Module, Name), () =>                        {                            AITEmoData data = new AITEmoData()                            {                                DeviceName =  Name,                                 DeviceSchematicId =  DeviceID,                                DisplayName =  Display,                                StopButtonSignal =  StopButtonSignal,                                MainContactorSignal =  MainContactorSignal,                             };                            return data;                        }, SubscriptionAttribute.FLAG.IgnoreSaveDB);            return true;        }        public void Terminate()        {        }        public void Monitor()        {            _trigEmoSignaled.CLK = StopButtonSignal || (!MainContactorSignal);            if (_trigEmoSignaled.Q) //EMO被拍下            {                EV.PostMessage(Module, EventEnum.DefaultAlarm, "Emergency Off button was pressed");            }                    }        public void Reset()        {            _trigEmoSignaled.RST = true;        }    }}
 |