Конструктор.
Tiny_ModBusRTU_Slave(byte adress, byte timeOut, unsigned int * holdingRegTable, unsigned int lengthTable, byte directPin)
Создает объект со следующими параметрами:
address – адрес ведомого устройства в сети. Может иметь значение от 1 до 247.
timeOut – время паузы (тишины) перед передачей ответа. Значение должно быть не менее времени, необходимого на передачу 3,5 байта. Вычисляется, как timeOut * период вызова функции update().
holdingRegTable – указатель на массив (имя массива) – таблицы регистров хранения.
lengthTable – размер таблицы регистров хранения.
directPin – номер вывода разрешения работы передатчика ведомого устройства. Используется для шинных интерфейсов, у которых передатчик имеет три состояния. Например, RS-485. Параметр не обязательный. При его отсутствии вывод не используется.
Tiny_ModBusRTU_Slave slave(1, 12, regTable, 12); // создаем объект, адрес 1, таймаут 6 мс, массив regTable, размер 12
Метод.
update() – загрузка данных. Единственная функция класса. В ней происходит все управление обменом. Функция должна вызываться регулярно в параллельном процессе, например, в прерывании по таймеру.
// обработчик прерывания 500 мкс
void timerInterrupt() {
slave.update();
}
Метод update() полностью контролирует обмен данными по сети. Программа основного цикла работает только с массивом regTable (таблица регистров хранения). Данные массива доступны ведущему устройству сети для чтения и записи.
На всякий случай я добавил 2 признака, сообщающие об обращении ведущего устройства к регистрам хранения.
flagRead – признак чтения данных. Активное состояние (true) говорит о том, что ведущее устройство прочитало хотя бы один регистр хранения. Признак должен сбрасываться в основной программе при обработке.
flagWrite – признак записи данных. Активное состояние сообщает о том, что произошла запись хотя бы одного регистра. Т.е. данные таблицы были изменены. Признак должен сбрасываться в основной программе.
Библиотека поддерживает коды функций.
Код функции
|
Название
|
Описание
|
03
|
READ HOLDING REGISTERS
|
Чтение значений одного или нескольких регистров хранения
|
06
|
FORCE SINGLE REGISTER
|
Запись в один регистр хранения
|
16
|
FORCE MULTIPLE REGISTERS
|
Последовательная запись нескольких регистров хранения
|
Обрабатываются следующие коды ошибок.
Код ошибки
|
Название
|
Описание
|
01
|
ILLEGAL FUNCTION
|
Код функции не поддерживается в контроллере
|
02
|
ILLEGAL DATA ADRESS
|
Недопустимый адрес данных
|
Библиотека поддерживает широковещательный обмен, при котором ведущее устройство формирует адрес равный 0.
Максимальное число байтов одного кадра – 64 байта.
Do'stlaringiz bilan baham: |