Zum Hauptinhalt springen

OMRON FINS Treiber

Übersicht

OMRON FINS over TCP. Eigene Java-Implementierung, die allein auf Basis der Wire-Spec der offiziellen OMRON-Handbücher (W342, W421) ohne externe Bibliotheken oder externe Prozesse arbeitet.

PunktWert
opc_typeFINS
Implementierungsklasseplantpulse.driver.protocol.fins.FINSDriver
Bibliothek(keine — Eigenimplementierung. OMRON W342/W421)
readGut (Memory Area Read 0101)
writeGut (Memory Area Write 0102)
Standardport9600
Sicherheitkeine

Klassen / Struktur

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

Bei connect() werden über FINS/TCP Node Address Auto-Assign (CIP cmd=0) Client-/Server-Node bezogen.


Zusammenfassung des Wire-Formats

CIP-Header (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 = Anzahl der Bytes ab command bis zum Ende

FINS-Header (10 Byte)

ICF | RSV | GCT | DNA | DA1 | DA2 | SNA | SA1 | SA2 | SID
0x80 0x00 0x02 <dn> <sn> <du> <sn> <cn> <su> <sid>
  • ICF=0x80 : Antwort angefordert
  • DA1 = Server-Node, SA1 = Client-Node (Ergebnis des Auto-Assign)

Memory Area Read (MRC=01 SRC=01)

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

Antwort = FINS-Header(10) + 01 01 + MRES(1) SRES(1) + Daten.


Speicherbereichscodes

BereichWord-CodeBit-Code
CIO0xB00x30
W (Work)0xB10x31
H (Holding)0xB20x32
A (Auxiliary)0xB30x33
D (DM)0x820x02
Timer / Counter PV0x890x09 (Fertig-Flag)

wordAreaCode(char) / bitAreaCode(char) übernimmt die Umwandlung.


OPC-Registrierungsoptionen (options)

SchlüsselBedeutungStandard
dnaDestination Network Address0
da2Destination Unit0
snaSource Network Address0
sa2Source Unit0
connect-timeoutms3000
read-timeoutms3000

Tag-Adressformat

NotationBedeutung
D100DM 100 (16-Bit-Word)
D100.05 oder D100/5Bit 5 von DM 100
H0.05Holding-Bit
CIO10CIO-Word
W50Work-Word

format-Schlüsselwörter (Großbuchstaben):

formatBedeutung
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]Extraktion des n-ten Bits eines Words

32/64-Bit-Mehrwortwerte folgen der OMRON-Konvention low word first.


Unterstützt / Nicht unterstützt

  • ✅ Memory Area Read / Write (MRC=01 SRC=01/02)
  • ✅ Bit / Word / DWord / LWord / Float / Double
  • ✅ FINS/TCP Auto-Assign Handshake
  • ❌ Multiple Memory Area Read (MRC=01 SRC=04)
  • ❌ Program Area / Parameter Area / Clock-Befehle
  • ❌ FINS over UDP

Testabdeckung

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

KlasseAnzahl Tests
FINSDriverTest38

Insgesamt 38 Tests — Adress-Parsing, Zuordnung der Bereichscodes, Word-Dekodierung, Handshake-Simulation u. a.


Referenzen

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