ПЛК (Arduino Mega 2560 + W5100)

Модератор: Alex

Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Вс сен 18, 2016 5:30 pm

Меня заинтересовала возможность использовать Arduino Mega 2560 в качестве ПЛК. Хотелось бы иметь нечто похожее на ПЛК, но в миниатюре. Буду выкладывать здесь свои прототипы программ.

Цели для прототипов:

☑ 1. Научиться собирать код отдельно от Arduino IDE.
☑ 2. Написать универсальную отладочную функцию (пока нет отладчика).
☑ 3. Научиться отлаживать код при помощи аппаратного отладчика.
☑ 4. Запустить операционную систему (ОС) на Arduino Mega 2560.
☐ 5. Научиться конфигурировать ОС и использовать средства межпроцессного управления и передачи данных.
☑ 6. Подключить библиотеки Arduino Framework'а (как временное решение).
☑ 7. Написать простейший командный интерпретатор (shell).
☑ 8. Написать простейший Telnet сервер.
☑ 9. Разобраться с одновременной работой Ethernet карты и SD-карты.
☑ 10. Написать простейший FTP сервер.
☑ 11. Написать простейший HTTP сервер.
☐ 12. Написать Modbus TCP сервер.
☐ 13. Добавить поддержку последовательных Modbus RTU master и slave.
☐ 14. Написать простой шлюз Modbus TCP <-> Modbus RTU.
☑ 15. Написать простой C-подобный интерпретатор (для выполнения программ ПЛК).
☑ 16. Написать специальный загрузчик по типу 2boot, который имел бы несколько способов обновления прошивки.

Вот такой план. Будем потихоньку исполнять.

Новости:
14.09.2017Показать
Написал свой загрузчик uniboot.
Загрузчик предназначен для прошивки мк с использованием sd-карты.
Исходники доступны через svn (см. ссылки).
18.09.2016Показать
Наконец-то продвинулся с telnet сервером (работающим под scmRTOS). Он заработал почти как надо. Как оказалось, реализовать даже простейший telnet не так просто. Ему соответствует большой документ - Telnet Protocol Specification (RFC854). Клиент и сервер общаются друг с другом специальными командами и я пока не нашёл простого описания как их правильно "игнорировать".

Замечания:
1. Где-то внутри Arduino Framework происходит отключения прерывания, отвечающего за переключение задач в scmRTOS. Из-за этого, как мне кажется, вторая задача не выводит в терминал сообщения. Думается мне, это связано с работой SPI, хотя это только догадки. Всё равно нужно переписывать класс SPI и работу с сокетами под многозадачность.
2. "Мусор" от клиентских терминалов не даёт нормально исполнять команды (работаю над этим).
3. Из-за наличия двух реализаций (подходов) к указателям на flash память, трудно написать универсальный (удобный) командный интерпретатор (все текстовые константы должны находиться во flash).
4. Нужно доработать интерпретатор, добавив управление клиентским терминалом через esc-последовательности. Это добавит гибкости в визуализацию.
Ссылки:

1. Документация.
2. scmRTOS 5.1.0 (библиотека для Arduino Framework без конфигурационных файлов).
3. Telnet Server (svn, http).
4. SoapBox Snap .
5. Arduino-Ftp-Server (форум).
6. Виртуальная машина отладки (AVDM) .
7. AttoBasic - интерпретатор диалекта Бейсика для avr.
8. Проект «Дом для AMS» (модульное исполнение Arduino Mega2560 и W5500 для установки на DIN-рейку).
9. PicoC - very small C interpreter for scripting .
10. MegaD-2561 - новая ступень в развитии проекта MegaD .
11. Ардуино-совместимый ПЛК CONTROLLINO, часть 1 .
12. Исходники загрузчика uniboot .
Последний раз редактировалось uni Чт сен 14, 2017 3:48 pm, всего редактировалось 11 раз.
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение Alex » Вс сен 18, 2016 6:57 pm

Как расшифровывается ПЛК мы знаем, но хотелось бы услышать развёрнутое объяснение «для ардуинщиков» в чем разница между 2560 и ПЛК 2560. Чтобы было понятно о чём идёт речь и почему просто 2560 это не совсем правильный вариант (и чего ему не хватает, чтобы иметь гордое название ПЛК).
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Вс сен 18, 2016 11:10 pm

ПЛК должен взять на себя рутину по извлечению сигналов и доставки их устройствам, т.е. создать ещё один уровень абстракции. Программист ПЛК должен думать только о логике работы алгоритма и некоторой дополнительной визуализации (сигнализации). Его не должны нагружать подробности того как и откуда сигналы считать или куда и как записать.

Arduino в любой комплектации - это просто набор железа. Довольно сложно без перепрошивки изменить поведение устройства, т.е. это программируемый микроконтроллер, но не ПЛК. Программист должен знать на порядок больше, чтобы устройство стало единым целым и могло выполнить свою функцию. Это время.

Я бы хотел иметь одну единственную универсальную прошивку, но которая поддерживала бы интерпретацию, чтобы я мог изменить программу просто переписав текстовой файл на флешке. Думается мне, что это возможно.

Вот, вкратце, и всё отличие - уровень абстракции выше за счёт драйверов, библиотек и одна универсальная прошивка - виртуальная машина. Всё остальное - дополнительные удобства, которые упрощают сопровождение.
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение alexsis_76 » Пн сен 19, 2016 4:53 am

да замахнулись вы
конечно все это возможно и уже сделано
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Пн сен 19, 2016 6:13 am

LDmicro похож на то, чего я хочу. Только лестничные диаграммы мне не нравятся и нет очень многого для удобства, о чём я выше указывал.
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение alexsis_76 » Пн сен 19, 2016 7:46 am

это в части интерпретатора или все будет написано на этом?
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Пн сен 19, 2016 9:10 am

Интерпретатор должен быть похож на C подобный. Промышленный ST (язык программирования) довольно убог. По идее можно сделать универсально - написать интерпретатор некоего ассемблера, а в него компилировать всё остальное, хоть графическое, хоть текстовое. LDmicro внутри имеет поддержку такого ассемблера, его можно взять за основу, но практического смысла писать на нём нет.

В сфере автоматизации некоторым некогда осваивать языки и нужно что-то вроде LD, другим, вроде меня, нужен более продвинутый язык. Поддержку множества вариантов вида программ можно заложить, реализовав один низкоуровневый.
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение Alex » Пн сен 19, 2016 9:17 am

Правильно ли я понимаю, что гордое название ПЛК присваивается контроллеру (системе), которая позволяет программировать логику работы, оперируя высокоуровневыми абстракциями, заранее определёнными в системе и без перепрошивки устройства?
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение uni » Пн сен 19, 2016 10:23 am

Правильно ли я понимаю, что гордое название ПЛК присваивается контроллеру (системе), которая позволяет программировать логику работы, оперируя высокоуровневыми абстракциями, заранее определёнными в системе и без перепрошивки устройства?
Программируемый логический контроллер - ПЛК (Programmable Logic Controller - PLC) - комплекс электронных и программных компонент и средств, включая модули ввода-вывода, предназначенный для выполнения логических функций.

Для ПЛК требования такие:

- работа в условиях промышленной среды (24 ч, развязка, ... );
- работа в реальном времени (об этом нужно говорить особо, к примеру, должно быть малое время загрузки/рестарта (секунды));
- должен быть понятен для программирования логики работы людям без специальных знаний в области информатики (электроникам, к примеру);
- может иметь встроенные модули ввода/вывода (не обязательно, но большинство имеют).

Некоторые называют ПЛК те железки, которые поддерживают IEC'овские языки программирования, все 5 штук: IL, LD, SFC, FBD, ST. И тому есть причина - из-за своей стандартизованности трудно программно "поломать" сам ПЛК, т.е. есть защита от программных сбоев не по вине программиста. Программа не должна "падать", уводить в BSOD или другим способом завершать свою работу. Поэтому такие прошивки очень дорогие (ISaGRAF, CoDeSys), т.к. протестированы на надёжность.

П.С. Что касается Arduino, я могу использовать эту плату как дешёвую железку для тестирования, но никто мне не мешает развести аналогичную, добавить модули, развязку, ОЗУ на 512 КБ и пр. и загрузить туда эту же программу, либо для некритичных применений использовать Arduino.
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: ПЛК (Arduino Mega 2560 + W5100)

Сообщение alexsis_76 » Пн сен 19, 2016 10:48 am

написание своего интерпретатора требует определенных знаний и дополнительных ресурсов процессора, может быть использовать что то готовое.
плюс отладка такого кода еще то удовольствие
Ответить