Advertisement
Ilya_Bykonya

Untitled

Dec 9th, 2023
1,132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 1.37 KB | Source Code | 0 0
  1. #include "ModbusRtu.h"
  2. #define ID   1      // адрес ведомого
  3.  
  4. //Задаём ведомому адрес, последовательный порт, выход управления TX
  5. Modbus slave(ID, 0, 0);
  6.  
  7. constexpr uint8_t all_registers_count = 29;
  8. uint16_t all_registers[all_registers_count]{};
  9. #define TIME_L 5
  10.  
  11. // write
  12.   // service: [0, 1]
  13.   // controls: [lining, right/left lifting]
  14.   // indicators: [...]
  15. // read
  16.   // sensors
  17.  
  18.  
  19. // write[<=12]
  20.   // service: [0, 1]
  21.   // controls: [2, 3, 4]
  22.   // indicators: [5, 6, 7, 8, 9, 10]
  23. // read[>12]
  24.   // sensors [12, 13, 14, ..., 28]
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. // service: 0, 1
  32. // write
  33. // read
  34. int i = 0;
  35.  
  36. void setup() {  
  37.   // настраиваем последовательный порт ведомого
  38.   slave.begin(115200);  
  39. }
  40.  
  41. void loop() {
  42.   static unsigned long prev_time{};
  43.   unsigned long cur_time = millis();
  44.   if (cur_time - prev_time > TIME_L) {
  45.     i++;
  46.     prev_time = cur_time;
  47.   }  
  48.   if (prev_time > cur_time) prev_time = cur_time;
  49.   int8_t state = slave.poll(all_registers, all_registers_count);    
  50.   io_poll();
  51. }
  52.  
  53. void io_poll() {
  54.   const uint16_t register_number_data = all_registers[0];//holding
  55.   all_registers[1] = register_number_data * 2;//input
  56.   const bool register_flag_data = all_registers[2];//coil
  57.   all_registers[3] = !register_flag_data;//discrete input
  58. }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement