Panasonic MEWTOCOL Treiber
Überblick
MEWTOCOL-COM, das ASCII-Kommunikationsprotokoll der Panasonic FP-Serie (FP0R / FP-X / FPΣ / FP7). Direkt implementiert ausschließlich auf Basis von Frames / Befehlen / Gerätecodes / BCC-Algorithmus aus den öffentlichen Panasonic-Benutzerhandbüchern (ARCT1F320, ARCT1F313 usw.). Kein übernommener Code aus externen GitHub-Quellen.
| Punkt | Wert |
|---|---|
opc_type | MEWTOCOL |
| Implementierungsklasse | plantpulse.driver.protocol.mewtocol.MEWTOCOLDriver |
| Bibliothek | (keine — Eigenimplementierung. ARCT1F320) |
| read | gut (RD / RC) |
| write | gut (WD / WC) |
| Standardport | 9094 (FP-X / FP7 TCP) |
| Sicherheit | keine |
Klassen / Struktur
MEWTOCOLDriver (BaseProtocolDriver)
├── Socket / InputStream / OutputStream
├── station — "01" 디폴트, 옵션 station 으로 변경
├── ioLock — synchronized exchange()
├── ParsedAddress.parse() — 디바이스/wordIndex/bitIndex 분해
├── computeBcc(byte[]) — '%' ~ ETX 위치 직전 XOR → 2자리 hex
└── decodeRdResponseHex / encodeWords — 16/32/64-bit
Zusammenfassung des Wire-Formats
요청 : '%' <station 2> '#' <cmd 2> <data> <BCC 2hex> CR
응답 : '%' <station 2> '$' <cmd 2> <data> <BCC 2hex> CR (정상)
'%' <station 2> '!' <error-2hex> <BCC 2hex> CR (에러)
BCC : '%' 부터 BCC 직전 (= ETX 위치) 까지 XOR
CR : 0x0D (LF 는 무시)
Unterstützte Befehle
| cmd | Funktion | Format (Datenteil) |
|---|---|---|
RD | Wort-read (DT/LD/FL/WX/WY/WR) | <dev-1char><start-5digits><end-5digits> |
RC | Bit-read (einzeln, X/Y/R/L/T/C) | RCS<dev-1char><wordAddr4><bit-1hex> |
WD | Wort-write | <dev><start5><end5><word1 hex 4>... |
WC | Bit-write (einzeln) | WCS<dev><wordAddr4><bit1><val1> |
Wort-Hex wird gemäß Handbuch mit dem LSB-Byte zuerst übertragen (Beispiel: Wort 0x1234 → Antwort-Hex 3412).
OPC-Registrierungsoptionen (options)
| Schlüssel | Bedeutung | Standard |
|---|---|---|
station | Stationsnummer (2-stellig) | 01 |
connect-timeout | ms | 3000 |
read-timeout | ms | 3000 |
normalizeStation() korrigiert eine einstellige Eingabe ("1") automatisch zu "01".
Tag-Adressformate
| Notation | Bedeutung |
|---|---|
DT0 | Data Register 0 (16-bit) |
LD100 | Link Data 100 |
FL10 | File Register 10 |
WX0 / WY0 / WR0 | I/O / Internal word |
R0.5 | Bit 5 von Internal Relay word 0 |
R0005 | 4 Zeichen = Wort 3 + Bit 1 (= R0.5) |
X0.0 / Y0.5 | Input/Output bit |
T0 / C0 | Timer / Counter (als Einzelbit behandelt) |
Datenkodierung / -dekodierung
wordCountFor(dt, fmt) bestimmt 16/32/64-bit (1/2/4 Wörter).
decodeWords(words, dt, fmt) wandelt Multi-Wort → Wert um:
| format / data_type | Anzahl Wörter | Umwandlung |
|---|---|---|
DW / Int32 | 2 | (words[1]<<16) | words[0] (low word first), signed |
UDW / UInt32 | 2 | unsigned 32 |
REAL / Float | 2 | Float.intBitsToFloat(...) |
LREAL / Double | 4 | Double.longBitsToDouble(...) |
LW / Int64 | 4 | signed 64 |
| (Standard) | 1 | signed 16 |
Zuordnung der Fehlercodes
decodeError(code) übersetzt die wichtigsten Fehler des Handbuchs (Auszug):
| code | Beschreibung |
|---|---|
20 | Fehlerhafte Relay-/Registernummer |
21 | Speicherbereich überschritten |
22 | Latch-Fehler |
40 | BCC-Fehler (Empfängerseite) |
41 | Formatfehler |
42 | Nicht unterstützter Befehl |
60 | Parameterfehler |
66 | Adressfehler |
Unterstützt / nicht unterstützt
- ✅ RD / WD (N aufeinanderfolgende Wörter)
- ✅ RC / WC (Einzelbit)
- ✅ 32 / 64-bit Multi-Wort, Float, Double
- ❌ RC mehrfach (RCP — Preset multi)
- ❌ RT / WT (getrenntes read von Timer / Counter EV/SV)
- ❌ MEWTOCOL-7 / MEWTOCOL-DAT Erweiterungen
Testabdeckung
test/java/plantpulse/driver/protocol/mewtocol/
| Klasse | Anzahl Tests |
|---|---|
MEWTOCOLDriverTest | 39 |
Insgesamt 39 Tests — BCC, Frame-Builder, Adressparser, RD-Antwortdekodierung, WC bit, Fehlerzuordnung.
Referenzen
- Panasonic ARCT1F320 FP-X User Manual MEWTOCOL-COM
- Panasonic ARCT1F313 FP Series Programming Manual
- Code:
src/plantpulse/driver/protocol/mewtocol/MEWTOCOLDriver.java