Добрый день.
Я пытаюсь взаимодействовать с TPM202 из кода по протоколу Modbus. Пишу на C#, Visual Studio 2013. Использую библиотеку NModbus.
Устройство подключено через преобразователь AC4, системой порт определяется как COM2. Через выложенную у вас на сайте утилиту устройство видится, управлять им возможно.
Однако, при попытке связаться с ним из кода у меня вылетает System.TimeoutException на строчках, отсылающих запросы устройству.
Код следующий:
Объясните мне, пожалуйста, что я делаю не так и в чем может быть проблема.Код:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO.Ports; using Modbus.Data; using Modbus.Device; using Modbus.Utility; using Modbus.Serial; namespace OWEN_TPM202_Control { class Data { public string ReturnedCommand { get; private set; } private bool connected; private SerialPort serialPort; public Data() { connected = false; } public void Connect() { if (!connected) { serialPort = new SerialPort("COM2"); serialPort.BaudRate = 9600; serialPort.Parity = Parity.None; serialPort.DataBits = 8; serialPort.StopBits = StopBits.One; serialPort.Handshake = Handshake.None; serialPort.ReadTimeout = 500; serialPort.WriteTimeout = 500; serialPort.Open(); connected = true; } var adapter = new SerialPortAdapter(serialPort); ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(adapter); master.ReturnQueryData(1, 0); // вот здесь выдает исключение byte slaveID = 1; ushort startAddress = 0; ushort numOfPoints = 5; ushort[] registers = master.ReadHoldingRegisters(slaveID, startAddress, numOfPoints); // и здесь } } }




Ответить с цитированием
