在 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
类型Password
受int
软件限制为 16 位(即op.Id = value & 0xFFFF
)。代码总是运行良好,但由于在生产机器上经过 4 或 5 次迭代后的几天,异常被捕获。现在每次代码运行时都会发生这种情况。异常消息是:
Impossibile scrivere dati sulla connessione di trasporto: Connessione interrotta dal software del computer host
不幸的是,生产机器设置为意大利语,我无法更改此设置。我也不能在生产机器上以调试模式运行代码。反正英文最直译就是:
无法在传输连接上写入数据:连接被主机软件中断
我很难理解消息本身,无论是意大利语还是英语:
host computer
在这种情况下是什么意思?本地机器(C# 应用程序运行的地方)还是远程机器?software
在这种情况下是什么意思?我的软件还是“通用”软件,比如库甚至操作系统?
在不理解这些含义的情况下,我无法弄清楚发生了什么变化以及在哪里发生了变化。
更新
知道我可以拥有日志i
和op
字段:
i op.Id op.Password
0 2 1111
1 5 1112
2 6 8765
3 7 0000
4 9 7877
// -> disconnection