ライブラリを使用libnodave
して Siemens S7 PLC と通信しています。バイトを書き込もうとするまで、正常に動作します。私はほとんどいつもタイムアウトします。
接続する必要があるコード:
fds.rfd = libnodave.openSocket(port, address.ToString());
fds.wfd = fds.rfd;
if (fds.rfd > 0) {
di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
di.setTimeout(10000000);
dc = new libnodave.daveConnection(di, 0, 0, 2);
if (0 == dc.connectPLC()) {
_status.connected = true;
}
}
バイトを書き込む (後の段階で呼び出される別のメソッドで):
dc.writeBytes(libnodave.daveDB, datablock, address, bytestowrite, buftosend);
ほとんどの場合 -1025 (タイムアウト) を返します。
タイムアウトを変更したり、書き込みの直前に接続ルーチンを移動しても効果はありません。