メインコンテンツまでスキップ

OMRON FINS ドライバ

概要

OMRON FINS over TCP。OMRON の公式マニュアル (W342、W421) の wire spec のみで、外部ライブラリ / 外部プロセスに依存せず動作する独自 Java 実装。

項目
opc_typeFINS
実装クラスplantpulse.driver.protocol.fins.FINSDriver
ライブラリ(なし — 独自実装。OMRON W342/W421)
read良好 (Memory Area Read 0101)
write良好 (Memory Area Write 0102)
デフォルトポート9600
セキュリティなし

クラス / 構造

FINSDriver (BaseProtocolDriver)
├── Socket — host:9600
├── clientNode/serverNode — connect() 의 Auto-Assign 응답에서 획득
├── sid — 0~255 순환 (요청-응답 매칭, 0 회피)
├── ParsedAddr — areaChar, wordAddr, bit
├── putBeInt / beInt — 4-byte big-endian helper
└── memAreaRead / memAreaWrite — synchronized

connect() 時に FINS/TCP Node Address Auto-Assign (CIP cmd=0) で client/server ノードを取得します。


wire フォーマット概要

CIP ヘッダ (16 byte, big-endian)

'F' 'I' 'N' 'S' | length(4) | command(4) | error(4)
  • command = 0 Auto-Assign Request、=1 Auto-Assign Response、=2 FINS frame send
  • length = command から末尾までの byte 数

FINS ヘッダ (10 byte)

ICF | RSV | GCT | DNA | DA1 | DA2 | SNA | SA1 | SA2 | SID
0x80 0x00 0x02 <dn> <sn> <du> <sn> <cn> <su> <sid>
  • ICF=0x80 : 応答要求
  • DA1 = サーバノード、SA1 = クライアントノード (auto-assign 結果)

Memory Area Read (MRC=01 SRC=01)

01 01 | area(1) | addrHi addrLo | bit | countHi countLo

応答 = FINS ヘッダ(10) + 01 01 + MRES(1) SRES(1) + データ。


メモリ領域コード

領域word コードbit コード
CIO0xB00x30
W (Work)0xB10x31
H (Holding)0xB20x32
A (Auxiliary)0xB30x33
D (DM)0x820x02
Timer / Counter PV0x890x09 (完了 flag)

wordAreaCode(char) / bitAreaCode(char) が変換します。


OPC 登録オプション (options)

キー意味デフォルト
dnaDestination Network Address0
da2Destination Unit0
snaSource Network Address0
sa2Source Unit0
connect-timeoutms3000
read-timeoutms3000

タグアドレス形式

表記意味
D100DM 100 (16-bit word)
D100.05 または D100/5DM 100 の bit 5
H0.05Holding bit
CIO10CIO word
W50Work word

format キーワード (大文字):

format意味
X / BITbit
W / WORDsigned 16
UI / UW / UWORDunsigned 16
DW / DWORDsigned 32 (low word first)
UDW / DUW / UDWORDunsigned 32
LW / LWORDsigned 64
REAL / FLOATIEEE 32-bit
LREAL / DOUBLEIEEE 64-bit
BIN[n]word の n 番目のビット抽出

32/64-bit マルチワードは OMRON のコンベンションに従い low word first


サポート / 非サポート

  • ✅ Memory Area Read / Write (MRC=01 SRC=01/02)
  • ✅ Bit / Word / DWord / LWord / Float / Double
  • ✅ FINS/TCP Auto-Assign ハンドシェイク
  • ❌ Multiple Memory Area Read (MRC=01 SRC=04)
  • ❌ Program Area / Parameter Area / Clock コマンド
  • ❌ FINS over UDP

テストカバレッジ

test/java/plantpulse/driver/protocol/fins/

クラステスト数
FINSDriverTest38

合計 38 テスト — アドレスパース、領域コードマッピング、ワードデコード、ハンドシェイクのシミュレーションなど。


参考

  • OMRON W342 FINS Communications Reference Manual
  • OMRON W421 CS/CJ Series Communications Commands Reference
  • コード: src/plantpulse/driver/protocol/fins/FINSDriver.java