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

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

Максимально просто, без лишних движений, соединение ардуины в режиме slave по протоколу ModBusRTU
Через COM порт, RS232, UART
со скадой SIMPLIGHT
неискушенному читателю может стать дурно от изобилия слов
Что нам необходимо знать об этом стандарте?
Протокол Modbus использует последовательные линии связи (например, RS232, RS485),
а протокол Modbus TCP рассчитан на передачу данных по сетям TCP/IP.
Протокол Modbus имеет два режима передачи RTU и ASCII,
в режиме ASCII каждый байт передается как два ASCII символа его шестнадцатеричного представления.
В сети Modbus есть только один ведущий, который с заданным
интервалом опрашивает несколько ведомых устройств, каждое из которых имеет свой уникальный адрес от
1 до 254, адрес 0 широковещательный и на него отвечают все устройства, так как ведущий в сети один
у него нет своего адреса.
В спецификации Modbus определено два типа данных, один бит и 16 битное слово. Данные организованны
в четыре таблицы с 16 битной адресацией ячеек, адресация в та
Оглавление

Максимально просто, без лишних движений, соединение ардуины в режиме 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