41 lines
1.5 KiB
C++
41 lines
1.5 KiB
C++
#include <ModbusMaster.h>
|
||
#include <SoftwareSerial.h>
|
||
|
||
// Создание объектов для Modbus
|
||
SoftwareSerial modbusSerial(10, 11); // RX, TX пины для Modbus
|
||
ModbusMaster node; // Объект Modbus для работы с клиентом
|
||
|
||
const int pinState = 7; // Пин для состояния
|
||
|
||
void setup() {
|
||
// Настройка пина
|
||
pinMode(pinState, INPUT);
|
||
|
||
// Инициализация Modbus
|
||
modbusSerial.begin(9600); // Скорость обмена по серийному порту для Modbus
|
||
node.begin(1, modbusSerial); // Адрес устройства (Slave ID)
|
||
|
||
// Устанавливаем тайм-аут для Modbus
|
||
node.preTransmission(preTransmission);
|
||
node.postTransmission(postTransmission);
|
||
}
|
||
|
||
void loop() {
|
||
// Считываем состояние пина (0 или 1)
|
||
int pinStatus = digitalRead(pinState);
|
||
|
||
// Отправляем состояние пина на клиентскую сторону через Modbus
|
||
node.writeSingleRegister(0, pinStatus); // Пишем в регистр 0
|
||
|
||
delay(100); // Задержка для предотвращения перегрузки
|
||
}
|
||
|
||
// Функции для обработки передачи данных
|
||
void preTransmission() {
|
||
digitalWrite(8, 1); // Например, управление RE/DE пинами (если используется RS-485)
|
||
}
|
||
|
||
void postTransmission() {
|
||
digitalWrite(8, 0); // Отключение передачи
|
||
}
|