78 lines
3.3 KiB
JSON
78 lines
3.3 KiB
JSON
{
|
|
"_comment": "s7_1500.json -- Siemens SIMATIC S7-1500 + MB_SERVER quirk simulator. Models docs/v2/s7.md behaviors as concrete register values. Unlike DL260 (CDAB word order default) or Mitsubishi (CDAB default), S7 MB_SERVER uses ABCD word order by default because Siemens native CPU types are big-endian top-to-bottom both within the register pair and byte pair. This profile exists so the driver's S7 profile default ByteOrder.BigEndian can be validated end-to-end. pymodbus bit-address semantics are the same as dl205.json (FC01/02/05/15 address X maps to cell index X/16); seed bits at the appropriate cell-indexed positions.",
|
|
|
|
"server_list": {
|
|
"srv": {
|
|
"comm": "tcp",
|
|
"host": "0.0.0.0",
|
|
"port": 5020,
|
|
"framer": "socket",
|
|
"device_id": 1
|
|
}
|
|
},
|
|
|
|
"device_list": {
|
|
"dev": {
|
|
"setup": {
|
|
"co size": 4096,
|
|
"di size": 4096,
|
|
"hr size": 4096,
|
|
"ir size": 1024,
|
|
"shared blocks": true,
|
|
"type exception": false,
|
|
"defaults": {
|
|
"value": {"bits": 0, "uint16": 0, "uint32": 0, "float32": 0.0, "string": " "},
|
|
"action": {"bits": null, "uint16": null, "uint32": null, "float32": null, "string": null}
|
|
}
|
|
},
|
|
"invalid": [],
|
|
"write": [
|
|
[0, 0],
|
|
[25, 25],
|
|
[100, 101],
|
|
[200, 209],
|
|
[300, 301]
|
|
],
|
|
|
|
"uint16": [
|
|
{"_quirk": "DB1 header marker. On an S7-1500 with MB_SERVER pointing at DB1, operators often reserve DB1.DBW0 for a fingerprint word so clients can verify they're talking to the right DB. 0xABCD = 43981.",
|
|
"addr": 0, "value": 43981},
|
|
|
|
{"_quirk": "Scratch HR range 200..209 -- mirrors the standard.json scratch range so the smoke test (S7_1500Profile.SmokeHoldingRegister=200) round-trips identically against either profile.",
|
|
"addr": 200, "value": 0},
|
|
{"addr": 201, "value": 0},
|
|
{"addr": 202, "value": 0},
|
|
{"addr": 203, "value": 0},
|
|
{"addr": 204, "value": 0},
|
|
{"addr": 205, "value": 0},
|
|
{"addr": 206, "value": 0},
|
|
{"addr": 207, "value": 0},
|
|
{"addr": 208, "value": 0},
|
|
{"addr": 209, "value": 0},
|
|
|
|
{"_quirk": "Float32 1.5f in ABCD word order (Siemens big-endian default, OPPOSITE of DL260 CDAB). IEEE-754 1.5 = 0x3FC00000. ABCD = high word first: HR[100]=0x3FC0=16320, HR[101]=0x0000=0.",
|
|
"addr": 100, "value": 16320},
|
|
{"_quirk": "Float32 1.5f ABCD low word.",
|
|
"addr": 101, "value": 0},
|
|
|
|
{"_quirk": "Int32 0x12345678 in ABCD word order. HR[300]=0x1234=4660, HR[301]=0x5678=22136. Demonstrates the contrast with DL260 CDAB Int32 encoding.",
|
|
"addr": 300, "value": 4660},
|
|
{"addr": 301, "value": 22136}
|
|
],
|
|
|
|
"bits": [
|
|
{"_quirk": "Coil bank marker cell. S7 MB_SERVER doesn't fix coil addresses; this simulates a user-wired DB where coil 400 (=bit 0 of cell 25) represents a latched digital output. Cell 25 bit 0 = 1 proves the wire-format round-trip works for coils on S7 profile.",
|
|
"addr": 25, "value": 1},
|
|
|
|
{"_quirk": "Discrete-input bank marker cell. DI 500 (=bit 0 of cell 31) = 1. Like coils, discrete inputs on S7 MB_SERVER are per-site; we assert the end-to-end FC02 path only.",
|
|
"addr": 31, "value": 1}
|
|
],
|
|
|
|
"uint32": [],
|
|
"float32": [],
|
|
"string": [],
|
|
"repeat": []
|
|
}
|
|
}
|
|
}
|