Пример #1
0
        public Program()
        {
            modbusTCP = new ModbusTCP(ipAddress, port);
            modbusTCP.Connect();
            //int[] response = modbusTCP.ReadInputRegisters(startAddress, qty);
            bool[] response = modbusTCP.ReadDiscreteInputs(40001, qty);


            modbusTCP.Disconnect();

            System.Console.WriteLine("Reg 1: " + response[0].ToString());
            System.Console.WriteLine("Reg 2: " + response[1].ToString());
            System.Console.WriteLine("Reg 1: " + response[2].ToString());
            System.Console.WriteLine("Reg 1: " + response[3].ToString());
            System.Console.WriteLine("Reg 1: " + response[4].ToString());
            System.Console.WriteLine("Reg 1: " + response[5].ToString());
            System.Console.WriteLine("Reg 1: " + response[6].ToString());
            System.Console.WriteLine("Reg 1: " + response[7].ToString());
            System.Console.WriteLine("Reg 1: " + response[8].ToString());
            System.Console.WriteLine("Reg 1: " + response[9].ToString());
        }
Пример #2
0
        static void Main(string[] args)
        {
            ModbusTCP modbus = new ModbusTCP("192.168.0.115", 502);

            modbus.OnException    += Modbus_OnException;
            modbus.OnResponseData += Modbus_OnResponseData;

            modbus.ReadCoilsAsync(1, 1, 0, 2);
            var conn = modbus.Connected;

            ushort start  = 16;
            ushort lenght = 2;

            // calculate the number of bytes data needs
            int numBytes = (lenght / 8 + (lenght % 8 > 0 ? 1 : 0));

            byte[] data          = new byte[numBytes];
            byte[] multipleCoils = new byte[lenght];
            multipleCoils[0] = 255;
            multipleCoils[1] = 255;

            // write data to device
            byte[] result = new byte[numBytes];
            modbus.WriteMultipleCoils(1, 1, start, lenght, multipleCoils, ref result);
            //modbus.WriteSingleCoil(1, 1, start, false, ref result);

            //read data from device
            modbus.ReadHoldingRegisters(1, 1, start, lenght, ref data);

            // convert data into int value
            int length2 = data.Length / 2 + Convert.ToInt16(data.Length % 2 > 0);
            var word    = new int[length2];

            for (int x = 0; x < length2; x++)
            {
                word[x] = data[x * 2] * 256 + data[x * 2 + 1];
                Console.WriteLine(word[x]);
            }



            //convert data into bit value
            BitArray bitArray = new BitArray(data);

            int[] numbers = new int[bitArray.Count];
            for (int i = 0; i < bitArray.Length; i++)
            {
                numbers[i] = bitArray[i] ? 1 : 0;
                Console.WriteLine($"Coil {i} : {numbers[i]}");
            }

            //var data1 = Convert.ToBoolean(Convert.ToByte("3"));

            //var coils = Convert.ToString(data[0],2);
            //var reversed = coils.ToArray();
            //Array.Reverse(reversed);
            //foreach (var item in reversed)
            //{
            //    Console.WriteLine(item);
            //}

            modbus.OnException    -= Modbus_OnException;
            modbus.OnResponseData -= Modbus_OnResponseData;
            modbus.Disconnect();

            Console.ReadLine();
        }