Оглавление:
- Шаг 1. Введение
- Шаг 2: Описание реальной доски:
- Шаг 3. Какую последовательность программировать? SFC и диаграмма состояний
- Шаг 4: Программирование с помощью Arduino IDE 1.6.X
- Шаг 5: Программирование с YAKINDU
- Шаг 6: Контролируйте это с помощью AdvancedHMI
- Шаг 7. Контролируйте это с помощью Unigo Evolution
- Шаг 8: Заключение
Видео: ПЛК Arduino 32 ввода-вывода + конечный автомат + SCADA или HMI: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Множество способов программирования, управления и наблюдения за промышленной системой с помощью Arduino.
Шаг 1. Введение
В этом руководстве я буду иметь дело с:
2 метода программирования Arduino, подключенного к какой-то машине, включая кнопки, переключатели и светодиоды
1- Первый метод с IDE arduino 1.6.x с использованием библиотеки SM (State Machine)
2-Второй метод с использованием Yakindu, проекта редактора биграмм состояний, созданного в среде eclipse: вы рисуете конечный автомат, и он генерирует код для передачи на плату Arduino.
В связи с
2 способа наблюдения за машиной с запущенной SCADA или виртуальным HMI:
1- под Android 4.4: Unigo Evolution, бесплатное приложение без кода, только элементы для размещения на экране и Modbus TCP
2-под Windows 8: бесплатный проект AdvancedHMI, которому требуется Visual Studio 2013, без кода и элементов для размещения на экране и Modbus TCP.
Итак, вы рисуете свои функциональные последовательности с помощью SFC (в автоматизации: Sequential Function Chart), вы переводите их в диаграмму состояний (очень близко), вы программируете ее (Yakindu или Arduino SM lib), а затем контролируете ее с помощью SCADA (Unigo android или AdvancedHMI Windows).
Шаг 2: Описание реальной доски:
Схема:
Я использовал плату Arduino UNO, а не клон, потому что Yakindu не может отправить программу на любой клон, только плату UNO и Mega.
Я мог бы иметь 32 цифровых входа / выхода с двумя расширителями SPI, такими как MCP23S17 (2x16 входов / выходов), и еще 2 аналоговых 12-битных выхода (реальный аналоговый без фильтрации PWM) с 2 SPI DAC, например MCP4921.
Я не рисовал экран Ethernet, но он нужен вам для контроля вашей системы: поэтому контакты 4, 10, 11, 12 и 13 не должны использоваться ни для чего другого, и, очевидно, контакты 0 и 1 только для RX TX.
Настоящие фото доски:
Необходимо 8 кнопок:
- 4 для ручного режима: по одному для каждого светодиода
- 1 для аварийного останова: при нажатии вы находитесь в нормальном режиме, отпускание: аварийный
- 1 для автоматического режима, который запускает последовательное включение и выключение каждого светодиода, если отпускается: ручной режим, для управления каждым светодиодом без последовательности
- 1 для РАБОТА в автоматическом режиме
- 1 для СТОП в автоматическом режиме
4 светодиода для моделирования всего, что вы хотите (реле, клапан…)
Я даю название каждой кнопке и светодиоду, которые я использовал в программах.
Шаг 3. Какую последовательность программировать? SFC и диаграмма состояний
Я сделал очень простую SFC, чтобы описать, что должна делать система.
3 SFC необходимы:
- SFCsecu для перехода в аварийный режим или выхода из него, это главный SFC, который запускает другие
- Автоматическое руководство SFC, запущенное SFCsecu, вы можете перейти в автоматический режим или в ручной режим
- Остановка работы SFC, сканирование и запоминание, если кто-то нажал DCY (RUN) или FCY (STOP)
Эти SFC работают в псевдо-многозадачном режиме.
Затем перевожу их в диаграмму состояний:
- главная машина (Emergency) запускает 2 других подчиненных
- ведомое устройство для сканирования и запоминания DCY и FCY
- раб для перехода в автоматический или ручной режим
Еще одна вещь: когда вы нажимаете DCY, вы можете управлять аналоговым выходом с виртуальным тримером на scada, когда вы нажимаете FCY, аналоговые выходы падают до 0 В.
Диаграмма состояний помогает вам программировать Arduino.
Шаг 4: Программирование с помощью Arduino IDE 1.6. X
Я даю вам код для перевода предыдущих диаграмм. Мне потребовались 3 дополнительных библиотеки, которые я вам тоже даю.
Вам также понадобится таблица адресов, чтобы понять, какие выводы вы используете для чего, и Modbus регистрирует соответствующие адреса.
Шаг 5: Программирование с YAKINDU
Сначала загрузите бесплатную версию проекта 2.9 (не pro) на:
www.itemis.com/en/yakindu/state-machine/
Затем следуйте прилагаемому руководству: есть некоторые изменения по сравнению с последним разом, когда я загружал программу, только для завершения имен различных частей файла "xxxconnector.cpp".
На фотографиях: чертеж конечного автомата, вид папки в проекте и ее импортированных библиотек из Arduino, вид «xxxconnector.cpp» для установления связи между переходами / состояниями и реальными входами / выходами платы или SCADA.
Я даю вам проект, который вам просто нужно будет импортировать в ваше автоматически созданное рабочее пространство.
Также предоставляется: необходимые библиотеки для импорта в Yakindu и некоторые изменения, которые необходимо сделать, описанные в руководстве.
Шаг 6: Контролируйте это с помощью AdvancedHMI
Сначала загрузите Visual Studio Express 2013 или более позднюю версию по адресу:
www.microsoft.com/fr-fr/download/details.a…
Затем загрузите проект AdvancedHMI на:
sourceforge.net/projects/advancedhmi/?SetF…
Я даю вам изображения SCADA, которые я нарисовал (с соответствующими адресами регистров Modbus) и запрограммировал без кода, измененный проект и краткое руководство.
Шаг 7. Контролируйте это с помощью Unigo Evolution
Вам понадобится android devide с android 4.4 (kit kat) и экраном 7 дюймов.
Я даю вам изображения SCADA, которые я нарисовал (и соответствующие адреса регистров Modbus), и краткое руководство по использованию Unigo, код не требуется, папку, содержащую изображения промышленных фонарей и кнопок, которые можно поместить в папку UniGOPictures, созданную на вашем внутреннем устройстве. SD приложением и проектом.
Шаг 8: Заключение
Собрать воедино 2 разных способа программирования и 2 разных способа супервизии было огромной задачей. Поначалу трудно использовать все навыки. Но теперь это работает, и однажды вы поняли, что теперь вы можете управлять более сложными системами.
Большое спасибо множеству обучающих программ по всему миру, Арчи (AdvancedHMI), RenéB2 (Yakindu) и Микаэлю Андерссону (Unigo Evolution), а также разработчикам библиотек arduino, которые позволили мне сделать такой проект «технологического штурма».
Sans eux j'aurais peut être souffert d'un sentiment d'incomplétude infinie pour l'éternité. J'exagère un peu.
Счастливые инструкции.