Пример #1
0
        public void GenerateNotificationMessage_SetNotification()
        {
            // Arrange
            mockLogsRepository   = new Mock <IRepository <Log> >();
            mockModbusTCPService = new Mock <IModbusTCPService>();
            var pLCDatas = new List <PLCDataDomain>()
            {
                new PLCDataDomain
                {
                    Address             = 1,
                    Data                = "true",
                    TypePLC             = PLCDataType.Coils,
                    DataEpressionRule   = "x => bool.Parse(x.Data) == true",
                    NotificationMessage = string.Empty
                }
            };

            var modbusService = new ModbusService(mockModbusTCPService.Object, mockLogsRepository.Object);

            // Act
            var data = modbusService.GenerateNotificationMessage(pLCDatas);

            // Assert
            Assert.AreEqual("Error, be careful", data[0].NotificationMessage);
            mockLogsRepository.Verify(x => x.Create(It.IsAny <Log>()), Times.Once);
        }
Пример #2
0
        public void GetData_GetDataFromModbusService()
        {
            // Arrange
            mockLogsRepository   = new Mock <IRepository <Log> >();
            mockModbusTCPService = new Mock <IModbusTCPService>();
            var pLCDatas = new List <PLCDataDomain>()
            {
                new PLCDataDomain
                {
                    Address             = 1,
                    Data                = "true",
                    TypePLC             = PLCDataType.Coils,
                    DataEpressionRule   = string.Empty,
                    NotificationMessage = string.Empty
                }
            };

            mockModbusTCPService.Setup(m => m.GetData(pLCDatas)).Returns(pLCDatas);

            var modbusService = new ModbusService(mockModbusTCPService.Object, mockLogsRepository.Object);

            // Act
            var data = modbusService.GetData(pLCDatas);

            // Assert
            mockModbusTCPService.Verify(s => s.GetData(It.IsAny <List <PLCDataDomain> >()), Times.Once);
            mockLogsRepository.Verify(x => x.Create(It.IsAny <Log>()), Times.Never);
        }
 public ModbusHMIWindowViewModel()
 {
     _modbusService = new ModbusService();
     _modbusService.Device2ValuesRefreshed += _modbusService_Device2ValuesRefreshed;
     _modbusService.ValuesRefreshed        += _modbusService_ValuesRefreshed;
     _dbContext          = new HmiDBContext();
     _modbusSlaveDevice1 = new ModbusSlaveDeviceService();
 }
Пример #4
0
        internal string GetFirstAndEightRegisters(Sensor sensor, ModbusService modbusService)
        {
            var registers = modbusService.GetAllRegisterForSelectedDevice(new Slave
            {
                DeviceNumber = (ushort)sensor.Id,
                SlaveId      = (byte)sensor.GatewayId
            });

            return(string.Format("Rejestr 1 - {0}, rejestr 8 - {1}", registers[0], registers[7]));
        }
Пример #5
0
        internal bool CheckIfSensorIsActive(Sensor sensor, ModbusService modbusService)
        {
            var activeMode = GetActiveMode();

            return(modbusService.CheckActivityStatusOfDevice(new Slave
            {
                DeviceNumber = (ushort)sensor.Id,
                SlaveId = (byte)sensor.GatewayId
            }, activeMode));
        }
Пример #6
0
        internal Sensor GetSensorStatus(Sensor sensor, ModbusService modbusService)
        {
            var status = modbusService.GetSensorStatus(new Slave
            {
                DeviceNumber = (ushort)sensor.Id,
                SlaveId      = (byte)sensor.GatewayId,
            });

            sensor.Status = status ? 1 : 0;
            return(sensor);
        }
Пример #7
0
        public MainForm()
        {
            InitializeComponent();
            _modbusService     = new ModbusService();
            _serialPortService = new SerialPortService();

            Configuration.Instance.LoadConfiguration("configuration.xml");
            _enableNodes = GetEnableNodes();
            var frequencySensorsReading = GetFrequencySensorReading();

            uxCheckStatusTimer.Interval = Convert.ToInt32(frequencySensorsReading);
        }
Пример #8
0
        public SerialPortConfigerViewModel()
        {
            this.modbusService = (ModbusService)IocContainerFactory.GetUnityContainer().Resolve <IModbusService>();



            this.OpenOrCloseSerialPortCommand = new DelegateCommand(new Action(this.OpenOrCloseSerialPortCommandExecute));

            SerialPort serialPort = this.modbusService.GetCurrentSerialPort();

            this.PortName             = serialPort.PortName;
            this.BaudRate             = serialPort.BaudRate;
            this.Parity               = serialPort.Parity;
            this.DataBits             = serialPort.DataBits;
            this.StopBits             = serialPort.StopBits;
            this.SerialPortConnecting = serialPort.IsOpen;
        }
Пример #9
0
 internal SynchroniseService()
 {
     _modbusService = new ModbusService();
 }
Пример #10
0
        public OperationResult TestProject(int projectId, int cyclesCount, string userId)
        {
            var project = this.Get(projectId, userId);

            var modbusService = new ModbusService(new ModbusSlavesRepository(), false);

            var slaveSettings = new List <ModbusApp.Core.Models.GroupSettings>();

            foreach (var action in project.Actions)
            {
                slaveSettings.Add(new ModbusApp.Core.Models.GroupSettings()
                {
                    Id                = action.Id,
                    DeviceId          = (byte)action.SlaveAddress,
                    StartAddress      = (ushort)action.StartAddress,
                    NumberOfRegisters = (ushort)action.NumberOfRegisters,
                    Types             = action.Types.Select(type =>
                    {
                        switch (type)
                        {
                        case ModbusDataType.Hex:
                            return(Tuple.Create(2, ModbusApp.Core.Misc.Enums.ModbusDataType.Hex));

                        case ModbusDataType.SInt16:
                            return(Tuple.Create(2, ModbusApp.Core.Misc.Enums.ModbusDataType.SInt16));

                        case ModbusDataType.SInt32:
                            return(Tuple.Create(4, ModbusApp.Core.Misc.Enums.ModbusDataType.SInt32));

                        case ModbusDataType.UInt16:
                            return(Tuple.Create(2, ModbusApp.Core.Misc.Enums.ModbusDataType.UInt16));

                        case ModbusDataType.UInt32:
                            return(Tuple.Create(4, ModbusApp.Core.Misc.Enums.ModbusDataType.UInt32));

                        case ModbusDataType.UtcTimestamp:
                            return(Tuple.Create(4, ModbusApp.Core.Misc.Enums.ModbusDataType.UtcTimestamp));

                        case ModbusDataType.String:
                            return(null);
                        }

                        return(null);
                    }).ToList()
                });
            }

            var operationResult = new OperationResult();

            var timerLock         = new object();
            int cyclesPassedCount = 0;

            var timer = new System.Timers.Timer(project.Period * 1000);

            if (project.Period > 0)
            {
                timer.Elapsed += (sender, e) =>
                {
                    cyclesPassedCount += 1;

                    if (cyclesPassedCount >= cyclesCount)
                    {
                        timer.Stop();
                    }

                    Monitor.Enter(timerLock);

                    if (project.ConnectionSettings is IpConnectionSettings)
                    {
                        var connectionSettings = project.ConnectionSettings as IpConnectionSettings;

                        try
                        {
                            operationResult.Logs.Add($"Attempting to get data from {connectionSettings.Host}:{connectionSettings.Port}");

                            var results = modbusService.GetDataFromSlaves(new ModbusApp.Core.Models.MasterSettingsIp()
                            {
                                Host            = connectionSettings.Host,
                                IsLoggerEnabled = false,
                                Period          = project.Period,
                                Port            = connectionSettings.Port,
                                SlaveSettings   = slaveSettings,
                                StatFlushPeriod = project.StatFlushPeriod,
                                Timeout         = project.Timeout
                            });

                            operationResult.Logs.Add($"Successfully got data from {connectionSettings.Host}:{connectionSettings.Port}");

                            operationResult.Results.Add(results.ToDictionary(x => x.Key.ToString(), x => x.Value));
                        }
                        catch (Exception ex)
                        {
                            operationResult.Logs.Add(ex.Message);
                        }
                    }

                    Monitor.Exit(timerLock);
                };

                timer.Start();
            }

            while (timer.Enabled)
            {
                Thread.Sleep(project.Period * 1000);
            }

            return(operationResult);
        }
 internal SensorBgWService()
 {
     _sensorService    = new SensorService();
     _sensorRepository = new SensorRepository();
     _modbusService    = new ModbusService();
 }
Пример #12
0
 internal GatewayService()
 {
     _gatewayRepository = new GatewayRepository();
     _sensorRepository  = new SensorRepository();
     _modbusService     = new ModbusService();
 }
Пример #13
0
 /// <summary>
 ///  构造函数
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="tcpHelper"></param>
 public HeatSystemController(ILogger <HeatSystemController> logger, ModbusService tcpHelper)
 {
     _logger = logger;
     _modbus = tcpHelper;
 }