System.IO.IOException: «Невозможно прочитать данные из транспортного соединения»
Ранее я подключался к другому HMI (BeiJer X2 base 7), используя тот же код, который работал, но я не могу сделать это на новом HMI (FATEK) P5070NB).
В моем случае я подключаюсь с помощью NModbus.IModbusMaster.ReadHoldingRegisters(byteslaveAddress, ushort startAddress, ushort num).
Вот мой код:
Код: Выделить всё
class Program
{
private static ModbusTCP modbus;
static void Main(string[] args)
{
modbus = new ModbusTCP(strModbusIP, 502);
if (modbus.Connected)
{
float[] signalValues_Fact = new float[intPLCPosition_Fact];
ushort[] buff_Fact = modbus.ReadHoldingRegisters(0, (ushort)(0), (ushort)(intPLCPosition_Fact * 2));
}
else
{
Console.WriteLine("Failed to connect to Modbus");
}
modbus.Disconnect();
}
}
public class ModbusTCP
{
private ModbusFactory modbusFactory;
private IModbusMaster master;
private TcpClient tcpClient;
public string IPAdress { get; set; }
public int Port { get; set; }
public bool Connected
{
get => tcpClient.Connected;
}
public ModbusTCP(string ip, int port)
{
IPAdress = ip;
Port = port;
modbusFactory = new ModbusFactory();
tcpClient = new TcpClient(IPAdress, Port);
master = modbusFactory.CreateMaster(tcpClient);
master.Transport.ReadTimeout = 2000;
master.Transport.Retries = 10;
}
public ushort[] ReadHoldingRegisters(byte slaveAddress, ushort startAddress, ushort num)
{
return master.ReadHoldingRegisters(slaveAddress, startAddress, num);
}
public void Disconnect()
{
if (tcpClient != null)
{
tcpClient.Close();
tcpClient = null;
}
}
}
Я не знаю, что с ним не так?Что я могу проверить еще раз?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ect-failed
Мобильная версия