Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ModbusRtu.h"
- #define ID 1 // адрес ведомого
- //Задаём ведомому адрес, последовательный порт, выход управления TX
- Modbus slave(ID, 0, 0);
- constexpr uint8_t all_registers_count = 29;
- uint16_t all_registers[all_registers_count]{};
- #define TIME_L 5
- // write
- // service: [0, 1]
- // controls: [lining, right/left lifting]
- // indicators: [...]
- // read
- // sensors
- // write[<=12]
- // service: [0, 1]
- // controls: [2, 3, 4]
- // indicators: [5, 6, 7, 8, 9, 10]
- // read[>12]
- // sensors [12, 13, 14, ..., 28]
- // service: 0, 1
- // write
- // read
- int i = 0;
- void setup() {
- // настраиваем последовательный порт ведомого
- slave.begin(115200);
- }
- void loop() {
- static unsigned long prev_time{};
- unsigned long cur_time = millis();
- if (cur_time - prev_time > TIME_L) {
- i++;
- prev_time = cur_time;
- }
- if (prev_time > cur_time) prev_time = cur_time;
- int8_t state = slave.poll(all_registers, all_registers_count);
- io_poll();
- }
- void io_poll() {
- const uint16_t register_number_data = all_registers[0];//holding
- all_registers[1] = register_number_data * 2;//input
- const bool register_flag_data = all_registers[2];//coil
- all_registers[3] = !register_flag_data;//discrete input
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement