C# Modbus SlaveException чтение реестра

Я работаю над проектом aC#, который должен взаимодействовать с ПЛК по TCP Modbus. Я использую библиотеку Nmodbus, и она отлично работает. Проблема в том, когда я пытаюсь читать / записывать реестр более 12000. Я получаю это исключение:

  Exception 'Modbus.SlaveException'  Function Code: 131

Это часть кода, которая генерирует исключение:

private TcpClient tcpClient;
     private ModbusIpMaster master;
     private void connect(){
    // connect to Modbus TCP Server
    string ipAddress = "192.168.77.7"; //Input WISE IP
    int tcpPort = 502;
    tcpClient = new TcpClient(ipAddress, tcpPort);

    // create Modbus TCP Master by the tcp client
    master = ModbusIpMaster.CreateIp(tcpClient);

    // rewrite the value of AO ch0 (40020~40021) by float
    byte slaveID = 1;
   // ushort rewriteAddress = 20;
   // ushort[] rewriteValue = new ushort[2] { 0, 0 };
   // float[] floatData = new float[1] { 223.456F };
   // Buffer.BlockCopy(floatData, 0, rewriteValue, 0, 4);
    Random random = new Random();

    // read the holding register 12001~12005 
    // write the holding register 301~305

    ushort startAddress = 12000;
    ushort numOfPoints = 5;
    master.Transport.ReadTimeout = 1000;
    while (!_shouldStop1)
    {
        try
        {
            ushort[] register = master.ReadHoldingRegisters(slaveID, startAddress, numOfPoints);

            for (int index = 0; index <register.Length; index++)
            {
                Console.WriteLine(string.Format("AO[{0}] = {1}", index,register[index]));
            }

            for (ushort index = 0; index < 4; index++)
            {
                master.WriteSingleRegister(slaveID, (ushort)(301 + index),(ushort) data[index]);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

Любое предложение будет оценено. Спасибо, Федерико.

0 ответов

Другие вопросы по тегам