Exemplo n.º 1
0
        /// <summary>
        /// Creates an RTU slave network.
        /// </summary>
        /// <param name="factory"></param>
        /// <param name="streamResource"></param>
        /// <returns></returns>
        public static IModbusSlaveNetwork CreateRtuSlaveNetwork(this IModbusFactory factory,
                                                                IStreamResource streamResource)
        {
            IModbusRtuTransport transport = factory.CreateRtuTransport(streamResource);

            return(factory.CreateSlaveNetwork(transport));
        }
Exemplo n.º 2
0
        private IModbusRtuTransport CreateTransport()
        {
            IStreamResource streamResource = CreateStreamResource();

            IModbusRtuTransport transport = ModbusFactory.CreateRtuTransport(streamResource);

            transport.ReadTimeout  = _readTimeout;
            transport.WriteTimeout = _writeTimeout;
            transport.Retries      = 0;

            return(transport);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets modbus master object from cache or create new one.
        /// </summary>
        /// <param name="factory"></param>
        /// <param name="frameType"></param>
        /// <param name="connectionSource"></param>
        /// <returns></returns>
        public IModbusMaster Get(IModbusFactory factory, FrameType frameType, ConnectionSourceAbstract connectionSource)
        {
            if (factory == default)
            {
                throw new ArgumentException("argument 'factory' is mandatory");
            }

            if (connectionSource == default)
            {
                throw new ArgumentException("argument 'connectionSource' is mandatory");
            }


            if ((connectionSource == _connectionSource) &&
                (_connectionSource.IsOpen) &&
                (modbusMaster != default) &&
                (modbusMaster?.Transport?.StreamResource?.IsOpen ?? false))
            {
                return(modbusMaster);
            }

            _connectionSource = connectionSource;

            var streamResource = _connectionSource.Get();

            if (frameType == FrameType.Ip)
            {
                modbusMaster = factory.CreateIpMaster(streamResource);
            }

            if (frameType == FrameType.Rtu)
            {
                var t = factory.CreateRtuTransport(streamResource);
                modbusMaster = factory.CreateMaster(t);
            }

            if (frameType == FrameType.Ascii)
            {
                var t = factory.CreateAsciiTransport(streamResource);
                modbusMaster = factory.CreateMaster(t);
            }

            return(modbusMaster);
        }
Exemplo n.º 4
0
        public static IModbusRtuTransport CreateRtuTransport(this IModbusFactory factory, SerialPort serialPort)
        {
            var adapter = new SerialPortAdapter(serialPort);

            return(factory.CreateRtuTransport(adapter));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Creates an RTU master.
        /// </summary>
        /// <param name="factory"></param>
        /// <param name="streamResource"></param>
        /// <returns></returns>
        public static IModbusSerialMaster CreateRtuMaster(this IModbusFactory factory, IStreamResource streamResource)
        {
            IModbusRtuTransport transport = factory.CreateRtuTransport(streamResource);

            return(new ModbusSerialMaster(transport));
        }