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
|
#### 05 — write coil
|
||||||
Changes a single relay state. `regaddr` — relay number, `nregs` — value (0 = off, non-zero = on).
|
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`
|
- request: `01 05 00 03 00 01`
|
||||||
- answer: `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.
|
Each data bit is a relay state.
|
||||||
|
|
||||||
Example — turn on relays 0..7:
|
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`
|
- 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.
|
Errors: `02` — non-zero `regaddr`; `03` — wrong amount; `07` — cannot change relays.
|
||||||
|
|
||||||
#### 10 — write multiple registers
|
#### 10 — write multiple registers
|
||||||
|
|||||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE QtCreatorProject>
|
<!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>
|
<qtcreator>
|
||||||
<data>
|
<data>
|
||||||
<variable>EnvironmentId</variable>
|
<variable>EnvironmentId</variable>
|
||||||
|
|||||||
@@ -45,13 +45,12 @@ TRUE_INLINE void readcoil(modbus_request *r){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint8_t bytes[OUTMAXBYTES] = {0};
|
uint8_t bytes[OUTMAXBYTES] = {0};
|
||||||
int curidx = OUTMAXBYTES;
|
|
||||||
int vals = get_relay(OUTMAX+1);
|
int vals = get_relay(OUTMAX+1);
|
||||||
for(int i = 0; i < amount; ++i){
|
for(int i = 0; i < amount; ++i){
|
||||||
bytes[i] = vals & 0xff;
|
bytes[i] = vals & 0xff;
|
||||||
vals >>= 8;
|
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);
|
modbus_send_response(&resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
#define BUILD_NUMBER "120"
|
#define BUILD_NUMBER "121"
|
||||||
#define BUILD_DATE "2026-10-01"
|
#define BUILD_DATE "2026-10-01"
|
||||||
|
|||||||
Reference in New Issue
Block a user