C#Modbus SlaveException读取注册表

时间:2017-03-30 10:59:23

标签: c# modbus plc modbus-tcp

我正在研究一个c#项目,它必须通过TCP Modbus与PLC通信。 我使用Nmodbus Library并且工作正常。 问题是当我尝试读/写注册表超过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 个答案:

没有答案