FINS OMRON PLC Java命令故障排除

时间:2018-04-17 18:31:16

标签: java plc fins

简单地说我有时间尝试为PLC准备合适的FINS命令。

拓扑结构:

  • PC(使用Java应用程序)IP:10.1.0.57
  • 欧姆龙CS1 PLC IP:10.1.0.50

现在尝试为D0100地址准备消息。消息看起来像这样:

80 00 02 00 32 00 00 39 00 01 01 01 82 00 64 00 00 01

所以:

ICF: 0x80
RSV: 0x00
GCT: 0x20
DNA: 0x00
DA1: 0x32 (50(dec) which is last octet of PLC IP)
DA2: 0x00
SNA: 0x00
SA1: 0x39 (57(dec) which is last octet of PC IP)
SA2: 0x00
SID: 0x01 (I am increasing this val in every new read)
COMMAND CODE: 0x01 0x01 (read Memory value)
MEM: 0x82
ADDR: 0x00 0x64 (100dec)
BIT: 0x00 (whole address)
LEN: 0x00 0x01 (1 address)

根据文档,一切似乎都没问题,但我收到的答案有16个字节,看起来像这样:

70 73 78 83 00 00 00 08 00 00 00 03 00 00 00 03

第二次尝试后,Socket崩溃了。

编辑: 我设法在消息的开头添加了FINS标题:

46 49 4e 53 00 00 00 1a 00 00 00 02 00 00 00 00

应该是:

0x46: F
0x49: I
0x4e: N
0x53: S
0x00 0x00 0x00 0x1a: 26 - message length
0x00 0x00 0x00 0x02 &
0x00 0x00 0x00 0x00 - part of the response which I got on the beginning. Not sure at all if correct...

现在Socket并没有破碎,但是,如果我试图读取任何内容,那么就没有数据。 我错过了什么?我应该在哪里解决这个问题?我无法直接访问PLC,但我可以在同一台PC上看到OPC Server中的数据流。

提前致谢。 亚当

1 个答案:

答案 0 :(得分:0)

好的,所以答案非常简单......

如果您尝试通过网络连接到OMRON PLC,则Host Link Header的最后一部分必须代表PC的IP:

46 49 4e 53 00 00 00 1a 00 00 00 02 00 00 00 39

0x39是57dec,所以我的PC IP的最后一个八位字节。

在改变之后一切正常!