diff --git a/F1:F103/FX3U/Readme.md b/F1:F103/FX3U/Readme.md index 3255ae4..614323e 100644 --- a/F1:F103/FX3U/Readme.md +++ b/F1:F103/FX3U/Readme.md @@ -426,7 +426,7 @@ Errors: `02` — bad start channel; `03` — bad amount (zero or beyond last cha #### 05 — write coil Changes a single relay state. `regaddr` — relay number, `nregs` — value (0 = off, non-zero = on). -Example: +Example - turn on coil 3: - request: `01 05 00 03 00 01` - answer: `01 05 00 03 00 01` @@ -446,9 +446,13 @@ Changes all relays at once. `regaddr` must be 0, `nregs` a multiple of 8, `N` = Each data bit is a relay state. Example — turn on relays 0..7: -- request: `01 0f 00 00 00 08 ff 01` +- request: `01 0f 00 00 00 08 01 ff` - answer: `01 0f 00 00 00 08` +Turn on all relays (0..7 and 10, 11): +- request: `01 0f 00 00 00 10 02 ff 0f` +- answer: `01 0f 00 00 00 10 56 c2` + Errors: `02` — non-zero `regaddr`; `03` — wrong amount; `07` — cannot change relays. #### 10 — write multiple registers diff --git a/F1:F103/FX3U/fx3u.bin b/F1:F103/FX3U/fx3u.bin index 55efcb6..61f8bd0 100755 Binary files a/F1:F103/FX3U/fx3u.bin and b/F1:F103/FX3U/fx3u.bin differ diff --git a/F1:F103/FX3U/fx3u.creator.user b/F1:F103/FX3U/fx3u.creator.user index d15f67a..a7a0aee 100644 --- a/F1:F103/FX3U/fx3u.creator.user +++ b/F1:F103/FX3U/fx3u.creator.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/F1:F103/FX3U/modbusproto.c b/F1:F103/FX3U/modbusproto.c index 3496fcb..ea4bb5b 100644 --- a/F1:F103/FX3U/modbusproto.c +++ b/F1:F103/FX3U/modbusproto.c @@ -45,13 +45,12 @@ TRUE_INLINE void readcoil(modbus_request *r){ return; } uint8_t bytes[OUTMAXBYTES] = {0}; - int curidx = OUTMAXBYTES; int vals = get_relay(OUTMAX+1); for(int i = 0; i < amount; ++i){ bytes[i] = vals & 0xff; vals >>= 8; } - modbus_response resp = {.Fcode = r->Fcode, .ID = the_conf.modbusID, .data = bytes+curidx, .datalen = amount}; + modbus_response resp = {.Fcode = r->Fcode, .ID = the_conf.modbusID, .data = bytes, .datalen = amount}; modbus_send_response(&resp); } diff --git a/F1:F103/FX3U/version.inc b/F1:F103/FX3U/version.inc index 033da29..da4a632 100644 --- a/F1:F103/FX3U/version.inc +++ b/F1:F103/FX3U/version.inc @@ -1,2 +1,2 @@ -#define BUILD_NUMBER "120" +#define BUILD_NUMBER "121" #define BUILD_DATE "2026-10-01"