Пример #1
0
        private void ListenToPlcModuleActualValues()
        {
            var tag = new Tag(
                NamingConventions.ModuleInterfaceActualValues,
                _pathRootController,
                NamingConventions.ModuleInterfaceActualValuesType,
                _adsPort);

            tag.ValueChanged += ModuleInterfaceTagChanged;

            FastTagListener.AddUdtHandler <ModuleActualValues>(NamingConventions.ModuleInterfaceActualValuesType);
            FastTagListener.AddTag(tag);
        }
Пример #2
0
        private void ListenToPlcModuleState(bool enableStateLogging)
        {
            var stateTag = new Tag(NamingConventions.CommonInterfaceState, _pathRootController, "INT");

            _stateNameTag    = new Tag(NamingConventions.CommonInterfaceStateName, _pathRootController, "STRING");
            _subStateNameTag = new Tag(NamingConventions.CommonInterfaceSubStateName, _pathRootController, "STRING");

            stateTag.ValueChanged         += StateTagValueChanged;
            _stateNameTag.ValueChanged    += StateNameTagValueChanged;
            _subStateNameTag.ValueChanged += SubStateNameTagValueChanged;

            FastTagListener.AddTag(stateTag);
            FastTagListener.AddTag(_subStateNameTag);
            FastTagListener.AddTag(_stateNameTag);

            _stateNameTag.IsActive = enableStateLogging;
        }
Пример #3
0
        public void Initialize(CancellationToken token, string name, string adsPath, int adsPort, string rootController, bool enableStateLogging = false)
        {
            _adsPath               = adsPath;
            _adsPort               = adsPort;
            _pathRootController    = rootController;
            _enableSubStateLogging = enableStateLogging;

            Name = name;
            FastTagListener.Name           = name;
            FastTagListener.AddressAndPath = adsPath + ":" + adsPort;
            SlowTagListener.Name           = name;
            SlowTagListener.AddressAndPath = adsPath + ":" + adsPort;
            TagController.StartConnection(adsPath, adsPort);
            if (!TagController.IsConnected)
            {
                throw new Exception("Can't initialize " + name + " because connection to PLC failed! (Address: " + adsPath + ":" + adsPort);
            }

            FastTagListener.CommunicationProblemOccured += TagListenerCommunicationProblemOccurred;
            SlowTagListener.CommunicationProblemOccured += TagListenerCommunicationProblemOccurred;

            try
            {
                _plcSaberLoggerDchRecv = new GenericDataChannelListener <PlcSaberLoggerDataStruct>(FastTagListener, TagController);
                _plcSaberLoggerDchRecv.SetChannel("_pSaberLogger^.fbDataChannel", _pathRootController, "T_Logger_DCH");
                _plcSaberLoggerDchRecv.DataReceived += PlcSaberLoggerDataReceived;
                _plcSaberLoggerDchRecv.CommunicationProblemOccured += PlcSaberLoggerCommunicationProblemOccured;
            }
            catch (Exception e)
            {
                _logger.Error("Initialization of Logger Datachannel failed:", e);
            }

            InitControllerTags();
            ListenToPlcModuleActualValues();
            ListenToPlcModuleState(enableStateLogging);

            Importer.Initialize(SlowTagListener, _adsPath, _adsPort, _pathRootController);

            _lastKeepAliveToggleTime = DateTime.Now;

            FastTagListener.RefreshAll();
            SlowTagListener.RefreshAll();
        }
Пример #4
0
 public void Activate()
 {
     SlowTagListener.StartListening(_adsPath, _adsPort);
     FastTagListener.StartListening(_adsPath, _adsPort);
 }