mirror of
https://github.com/eddyem/stm32samples.git
synced 2026-10-01 22:30:32 +03:00
fixed coils read
This commit is contained in:
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 20.0.2, 2026-10-01T16:22:16. -->
|
||||
<!-- Written by QtCreator 20.0.2, 2026-10-01T17:35:26. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#define BUILD_NUMBER "120"
|
||||
#define BUILD_NUMBER "121"
|
||||
#define BUILD_DATE "2026-10-01"
|
||||
|
||||
Reference in New Issue
Block a user