Exemplo n.º 1
0
        private void btnReadInputRegisters_Click(object sender, EventArgs e)
        {
            try
            {
                if (!modbusClient.Connected)
                {
                    modbusClient.IPAddress = txtIpAddressInput.Text;
                    modbusClient.Port      = int.Parse(txtPortInput.Text);
                    modbusClient.Connect();
                }

                int[] serverResponse = modbusClient.ReadInputRegisters(int.Parse(txtStartingAddressInput.Text) - 1, int.Parse(txtNumberOfValuesInput.Text));

                lsbAnswerFromServer.Items.Clear();
                for (int i = 0; i < serverResponse.Length; i++)
                {
                    lsbAnswerFromServer.Items.Add(serverResponse[i]);
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Exception Reading values from Server", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                modbusClient.Disconnect();
            }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            //    int[] registers = EasyModbus.ModbusClient.ConvertStringToRegisters("hello");
            // SerialPort serialport = new SerialPort("COM3");

            /*          serialport.PortName = "COM3";
             *        serialport.BaudRate = 9600;
             *        serialport.Parity = Parity.None;
             *        serialport.StopBits = StopBits.One;
             *        byte[] buffer = new byte[50];
             *        serialport.Open();
             *        byte[] bufferout = new byte[50];
             *        int numberOfBytesRead = 0;
             *        do
             *        {
             *            int quantity = serialport.Read(buffer, 0, 15);
             *            Buffer.BlockCopy(buffer, 0, bufferout, numberOfBytesRead, quantity);
             *            numberOfBytesRead = numberOfBytesRead + quantity;
             *        }
             *        while (numberOfBytesRead < 5);
             *        for (int i = 0; i < 15; i++)
             *        Console.WriteLine(bufferout[i].ToString());
             *        serialport.Write("ddddddddd");*/
            //EasyModbus.ModbusClient modbusClient = new EasyModbus.ModbusClient("COM4");
            EasyModbus.ModbusClient modbusClient = new EasyModbus.ModbusClient("127.0.0.1", 502);
            modbusClient.ConnectionTimeout = 5000;
            modbusClient.LogFileFilename   = "logData.txt";

            while (true)
            {
                modbusClient.Connect();

                //      Console.WriteLine("Execute FC5");
                //      modbusClient.WriteSingleCoil(0, true);
                //      Console.WriteLine("Execute FC6");
                //      modbusClient.WriteSingleRegister(0, 1234);
                //      Console.WriteLine("Execute FC15");
                //      modbusClient.WriteMultipleCoils(0, new bool[] { true, false, true, false, true, false, true });
                //Console.WriteLine("Execute FC16");
                //modbusClient.WriteMultipleRegisters(0, EasyModbus.ModbusClient.ConvertStringToRegisters("hallo2"));
                //modbusClient.Disconnect();
                //System.Threading.Thread.Sleep(100);
                //modbusClient.Connect();

                //Console.WriteLine("Execute FC3");
                //Console.WriteLine("Value of Holding Register 1000: " + modbusClient.ReadHoldingRegisters(1000, 1)[0]);

                Console.WriteLine("Read and Publish Input Registers");
                modbusClient.ReadInputRegisters(0, 10, "www.mqtt-dashboard.com");
                modbusClient.ReadHoldingRegisters(0, 10, "www.mqtt-dashboard.com");

                modbusClient.Disconnect();
                System.Threading.Thread.Sleep(1000);
            }
            Console.ReadKey();
        }
Exemplo n.º 3
0
        public void GetValues(ConnectionProperties connectionProperties)
        {
            modbusClient = connectionProperties.modbusClient;
            if (!modbusClient.Connected)
            {
                modbusClient.IPAddress = connectionProperties.ModbusTCPAddress;
                modbusClient.Port      = connectionProperties.Port;
                modbusClient.Connect();
            }
            foreach (FunctionProperties functionProperty in connectionProperties.FunctionPropertiesList)
            {
                switch (functionProperty.FunctionCode)
                {
                case FunctionCode.ReadCoils:
                    functionProperty.values = modbusClient.ReadCoils(functionProperty.StartingAdress, functionProperty.Quantity);
                    break;

                case FunctionCode.ReadDiscreteInputs:
                    functionProperty.values = modbusClient.ReadDiscreteInputs(functionProperty.StartingAdress, functionProperty.Quantity);
                    break;

                case FunctionCode.ReadHoldingRegisters:
                    functionProperty.values = modbusClient.ReadHoldingRegisters(functionProperty.StartingAdress, functionProperty.Quantity);
                    break;

                case FunctionCode.ReadInputRegisters:
                    functionProperty.values = modbusClient.ReadInputRegisters(functionProperty.StartingAdress, functionProperty.Quantity);
                    break;

                default: break;
                }
            }
            if (valuesChanged != null)
            {
                valuesChanged(this);
            }
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            //    int[] registers = EasyModbus.ModbusClient.ConvertStringToRegisters("hello");
            // SerialPort serialport = new SerialPort("COM3");

            /*          serialport.PortName = "COM3";
             *        serialport.BaudRate = 9600;
             *        serialport.Parity = Parity.None;
             *        serialport.StopBits = StopBits.One;
             *        byte[] buffer = new byte[50];
             *        serialport.Open();
             *        byte[] bufferout = new byte[50];
             *        int numberOfBytesRead = 0;
             *        do
             *        {
             *            int quantity = serialport.Read(buffer, 0, 15);
             *            Buffer.BlockCopy(buffer, 0, bufferout, numberOfBytesRead, quantity);
             *            numberOfBytesRead = numberOfBytesRead + quantity;
             *        }
             *        while (numberOfBytesRead < 5);
             *        for (int i = 0; i < 15; i++)
             *        Console.WriteLine(bufferout[i].ToString());
             *        serialport.Write("ddddddddd");*/
            EasyModbus.ModbusClient modbusClient = new EasyModbus.ModbusClient("COM3");
            modbusClient.Baudrate = 19200;
            //modbusClient.SerialPort = "COM3";
            //EasyModbus.ModbusClient modbusClient = new EasyModbus.ModbusClient("127.0.0.1", 502);
            //modbusClient.LogFileFilename = "logfile.txt";
            modbusClient.UnitIdentifier = 247;
            modbusClient.Connect();
            while (true)
            {
                //      Console.WriteLine("Execute FC5");
                //      modbusClient.WriteSingleCoil(0, true);
                //      Console.WriteLine("Execute FC6");
                //      modbusClient.WriteSingleRegister(0, 1234);
                //      Console.WriteLine("Execute FC15");
                //      modbusClient.WriteMultipleCoils(0, new bool[] { true, false, true, false, true, false, true });
                //Console.WriteLine("Execute FC16");
                //modbusClient.WriteMultipleRegisters(0, EasyModbus.ModbusClient.ConvertStringToRegisters("hallo2"));
                //modbusClient.Disconnect();
                //System.Threading.Thread.Sleep(100);
                //modbusClient.Connect();

                //Console.WriteLine("Execute FC3");
                //Console.WriteLine("Value of Holding Register 1000: " + modbusClient.ReadHoldingRegisters(1000, 1)[0]);

                DateTime datetimeStart = DateTime.Now;
                for (int i = 1; i < 125; i++)
                {
                    modbusClient.WriteSingleRegister(i, i);
                    Console.WriteLine(modbusClient.ReadInputRegisters(i, 125)[0]);
                }
                DateTime datetimeEnd = DateTime.Now;

                Console.WriteLine("Time elapsed: " + (datetimeEnd - datetimeStart));

                // System.Threading.Thread.Sleep(1000);
            }
            modbusClient.Disconnect();
            Console.ReadKey();
        }