Найти в Дзене
AEHA Laba120

AEHA UART - подключение Arduino Uno к Скада SIMPLIGHT по протоколу ModBusRTU

Оглавление

Максимально просто, без лишних движений, соединение ардуины в режиме slave по протоколу ModBusRTU
Через COM порт, RS232, UART
со скадой
SIMPLIGHT

Если открыть документацию на протокол ModBus-RTU / ASCII

неискушенному читателю может стать дурно от изобилия слов

Что нам необходимо знать об этом стандарте?
Протокол Modbus использует последовательные линии связи (например, RS232, RS485),
а протокол Modbus TCP рассчитан на передачу данных по сетям TCP/IP.

Протокол Modbus имеет два режима передачи RTU и ASCII,
в режиме ASCII каждый байт передается как два ASCII символа его шестнадцатеричного представления.
В сети Modbus есть только один ведущий, который с заданным
интервалом опрашивает несколько ведомых устройств, каждое из которых имеет свой уникальный адрес от
1 до 254, адрес 0 широковещательный и на него отвечают все устройства, так как ведущий в сети один
у него нет своего адреса.

В спецификации Modbus определено два типа данных, один бит и 16 битное слово. Данные организованны
в четыре таблицы с 16 битной адресацией ячеек, адресация в таблицах начинается с 0.

Для доступа к данным из разных таблиц предназначены отдельные команды.

Discrete Inputs 1 бит только чтение

Coils 1 бит чтение и запись

Input Registers 16 бит только чтение

Holding Registers 16 бит чтение и запись

Object type Access Size Address Space

Coil Read-write 1 bit 00001 - 09999

Discrete input Read-only 1 bit 10001 - 19999

Input register Read-only 16 bits 30001 - 39999

Holding register Read-write 16 bits 40001 - 49999

Таблицы регистры? вы это серьезно?

После прочтения доков прозрение ко мне не пришло
но методом проб, удалось добиться стабильно работающей комбинации
- прошивка ардуино + мнемосхема скада

И картина мира сложилась такая:
имеется заданный массив переменных

типа как тут
uint16_t pint[12];

и эти 12 переменных живут как бы своей жизнью
контролер ардуино может считывать и записывать в них, а так же производить
математические вычисления , как с обычными переменными

например
uint16_t bc;
bc=100;

pint[5] = --bc;
pint[3] = random(5, 95);
pint[1]= analogRead(A0);

только pint[0] не использовать

А программа скада, также работает с этими переменными
считывает и записывает данные, периодичность опроса настраивается

то есть если компонент из редактора мнемосхем работает на отображение информации
и подключен к данному тегу (переменной) он выведет ее значение на экран

-2

если компонент заточен под запись значений и подключен к каналу (тегу , переменной)
то он изменит ее значение и оба этих действия возможно сочетать

***

2 код ардуины

устройство slave представляет собой ардуино уно
с установленным сверху шильдом LCD дисплея с кнопками
прошивка заливается через программатор
USBASP через программу AVRDUDEPROG.exe версии 3,3

-3

ибо заливка из среды Arduino IDE 1.8.13, через последовательный порт
кажется мне фантастическим вымыслом, и в реальном мире не существует

Вот все что нам потребуется для быстрого подключения ардуино к скада

простой Код для Arduino IDE 1.8.13

здесь используется 12 переменных но может быть больше
скада симп, бесплатно разрешает работу с 32 тегами, тобишь 32 переменными

-4

каждый тег имеет адрес и тип переменной
Адрес тега в данном примере
такой же как и индекс переменой в массиве

-5

то есть тег с адресом 12 запараллелен с переменной pint[12]

Что и прописано В данной программе для arduino ide 1.8.13
Убрать код Ардуино

#include <ModbusRtu.h>
#include <
LiquidCrystal.h> // либа для шильда дисплея
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int8_t state = 0;
Modbus slave(1, 0, 0); // Адрес slave девайса

весь код Ардуино приводить незачем

он имеется в архиве, который можно скачать

3 настройка скады SIMPLIGHT - Редактор каналов

Скада SIMPLIGHT имеет бесплатную версию на 32 канала
что, для некоторых задач вполне хватает

В ней сначала нужно настроить каналы, В данном случае используется
Сом порт

Запускаете редактор каналов,

-6

нажимаете внизу значок "Настройка ModBus драйвера"

-7

В окне "настроить"
выбираете Узел

-8

тип Узла СОМ

Указываете номер Сом порта (у меня 21)

UNO подключается родным кабелем к USB

драйвер USB-UART должен быть установлен


Можете дать устройству - свое название

-9

Нажимаете добавить устройство

-10

Также Можете дать свое название
и указать адрес

-11

Добавляете ТЕГИ, тегов накидываете сколько у вас объявлено в ардуино

типа как тут
uint16_t pint[12];

-12

меняете названия и адреса

У тега есть адрес и тип данных

-13

Регион
Тип данных
Тип доступа
Порядок байт

это описано в документации на
SCADA или выше на этой странице
для данного проекта оставляем как есть

-14

По концовке нажимаете "сохранить"

-15

Перетаскиваете свое устройство в область "Список активных каналов"
Нажимаете пуск "
Запустить тест каналов"

-16

Если прошитая ардуина подключена к правильному СОМ порту
наблюдаете движение данных по каналу
ModBus
Двойным кликом на параметре можно изменить значение

-17

Если накидаете тегов больше чем определено в ARDUINO UNO
Или адрес тега укажете больше,
увидите такую картину

-18

Каналы настроили теперь самое вкусное - Редактор схемы

-19

4 - настройка скады SIMPLIGHT - Редактор мнемосхем

Запускаете Редактор мнемосхем нажимаете "Новая мнемосхема",

-20

задаете размеры экрана - ширину и высоту
а так же желательно изменить цвет фона для наглядности
пусть будет 800 х 500 цвет серый

-21

Перетаскиваете из набора компонентов стрелочный индикатор

-22

Перетаскиваете из набора компонентов цифровой индикатор

-23

При желании меняете размеры и положения приборов

-24

Для подключения к нужному каналу (тегу, переменной) выбираете прибор, ставите галку в поле привязка к каналу

-25

Как-то не продумано, но название канала получилось длинновато растягиваем окно, нажимаем кнопку с тремя точками. Открывается окно с перечнем наших каналов двойным щелчком выбираете нужный При необходимости повторить для всех приборов на панели Нажимаете "Сохранить"

-26

запускаете монитор

-27

или можете открыть мнемосхему скачанную тут

-28

5 скачать исходник проекта "подключение Arduino Uno к Скада SIMPLIGHT "

В архиве исходник и прошивка для Ардуино уно
и готовая Мнемосхема для скада
SIMPLIGHT
Проект мнемосхемы хранится на ПК в папке C:\slProject\Forms\
туда нужно скопировать скачанную arduino.msl
затем открыть в Редакторе мнемосхем

-29