0

在 C# 应用程序中,我有以下代码:

for (var i = 0; i < 10; i++)
{
    try
    {
        var op = operators[i]; // retrieve data
        plc.Modbus.WriteSingleRegister(MODBUS_TABLE_OP + i * 2, op.Id);
        plc.Modbus.WriteSingleRegister(MODBUS_TABLE_OP + i * 2 + 1, op.Password);
    }
    catch (Exception ex)
    {
        Logger.Error("Error: {0}", ex);
        throw;
    }
}

其中 Modbus 是一个EasyModbus实例,并且Id类型Passwordint软件限制为 16 位(即op.Id = value & 0xFFFF)。代码总是运行良好,但由于在生产机器上经过 4 或 5 次迭代后的几天,异常被捕获。现在每次代码运行时都会发生这种情况。异常消息是:

Impossibile scrivere dati sulla connessione di trasporto: Connessione interrotta dal software del computer host

不幸的是,生产机器设置为意大利语,我无法更改此设置。我也不能在生产机器上以调试模式运行代码。反正英文最直译就是:

无法在传输连接上写入数据:连接被主机软件中断

我很难理解消息本身,无论是意大利语还是英语:

  1. host computer在这种情况下是什么意思?本地机器(C# 应用程序运行的地方)还是远程机器?

  2. software在这种情况下是什么意思?我的软件还是“通用”软件,比如库甚至操作系统?

在不理解这些含义的情况下,我无法弄清楚发生了什么变化以及在哪里发生了变化。

更新

知道我可以拥有日志iop字段:

i    op.Id    op.Password
0    2        1111
1    5        1112
2    6        8765
3    7        0000
4    9        7877
// -> disconnection 
4

0 回答 0