ПЛК (Arduino Mega 2560 + W5100)

Модератор: Alex

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

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

Сообщение uni » Пн мар 27, 2017 8:40 am

Все решения на Linux стартуют от 20-30 секунд и выше, т.е. если вас устраивает готовность устройства через какое-то время, то пользуйтесь. Меня это не устраивает, мне надо сразу: включил и работает. Я мог бы использовать роутер TL-MR3020, но он у меня стартует около 40 сек. Я бы хотел своё решение использовать не только для домашней автоматизации.
Да,титанический труд,а зачем си код если он будет храниться в виде исходников,с таким же успехом можно использовать любой другой язык.
Да, можно и любой другой, но многие исходники для мк написаны на Си и вы сможете их использовать. Возможности picoc на удивление обширны, если посмотреть на его тестовые примеры. Есть и другая причина. Я не видел нигде никаких других подобных исходников для других языков, исключая может быть tinybasic, но его отмёл сразу, т.к. не идёт ни в какое сравнение с picoc.

Есть ещё один вариант - это tcc, который является компилятором, т.е. можно иметь компилятор C прямо на мк, а программу хранить во флеш. Этот путь гораздо сложнее, т.к. там нужно написать часть, ответственную за формирование оп-кода avr. Ещё я не уверен, что он влезет в avr, в отличие от picoc. Скорее не влезет.
в том то и дело что примитивно, возможности будут сильно ограничены, ну и скорость?
Что касается возможностей, то они будут определяться целиком доступными в прошивке библиотеками. Мой текущий код занимает всего 30% флеша у ATmega2560, там есть драйвер sd-карты и picoc (RTOS я пока исключил, т.к. надо изучить требования к памяти). Я могу добавить любой функционал: драйверы i2c, работа с экраном и т.д. Пользователи не должны их писать, функции для работы с периферией должны быть доступны внутри "скрипта" в виде какого-то API.
Скорость буду тестировать. Её можно регулировать через объём буфера чтения, чем больше объем, тем меньше обращений к карточке.

Поскольку всё упирается в ОЗУ, то без своей платы не обойтись. Кстати, существует отечественный ПЛК на avr с внешней ОЗУ (ПЛК NLсon-1AT). Это примерно то, чего хочу я, только мне нужно больше периферии и нужен обязательно JTAG, т.к. я отлаживаю код в отладчике. У меня к Arduino Mega2560 есть специальный комплект для железной отладки, без него было бы очень трудно или вообще не возможно что-то делать.

По поводу других железок типа esp32, где всего больше. У них у всех есть одна проблема, которая очень осложняет жизнь - это дефрагментация памяти. Она есть даже в железках на uClinux'е с 32 Мб ОЗУ, с которыми работал я, а они круче этих поделок. Эта проблема не даст возможности полноценно пользоваться интерпретаторами других языков, т.к. там объекты динамически создаются и освобождаются. Никто не скажет сколько сможет проработать такое устройство, пока память не закончится. Чем ещё там всё плохо, т.к. это тем, что нужна виртуальная машина с Linux, для сборки исходников. Следовательно нужно ещё знать всю кухню для сборки и чем сложнее устройство, тем дальше оно от простых смертных.

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

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

Сообщение alexsis_76 » Пн мар 27, 2017 10:20 am

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

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

Сообщение uni » Пн мар 27, 2017 10:52 am

По поводу синтаксиса picoc можно посмотреть на тестовые примеры, с помощью которых я буду всё проверять. Для такого мелкого интерпретатора синтаксис вполне достаточен для моих задач.

Компиляцию я хочу обойти, т.к. устройство должно быть самодостаточным (одна прошивка для любого применения - один runtime). Т.е. для изменения алгоритмов его работы не должно требоваться внешних программ сложнее текстового редактора, броузера, ftp-клиента. Можно вообще обойтись одним только браузером. Подключаешься к устройству, создаёшь управляющие задачи в виде си-скриптов, настраиваешь их цикличность, приоритет и всё. Количество задач при условии их параллельного выполнения ограничивается применяемой ОС. У меня их не может быть больше 31 шт, причём часть я заберу под сервисы (ftp, http, telnet, modbus-tcp, modbus-rtu 3 шт), которые тоже должны работать одновременно с интерпретатором.

Пришёл ответ по поводу ПЛК NLcon-1AT. JTAG у них не разведён. Жаль. Эх, если бы выпускался шилд с внешней ОЗУ, то я бы уже мог всё протестировать.

П.С. Закажу изготовление вот этого расширения, пока нет своего.

Не обратил внимания раньше, но можно купить не распаянную плату здесь. Только не понятно с доставкой в Россию. Можно было бы купить для образца пару штук.

Ещё одна полезная ссылка по теме:

1. CrossRoads "Arduino" inspired designs
Россия навсегда!
cg_shura
Сообщения: 110
Зарегистрирован: Пт авг 14, 2015 11:24 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение cg_shura » Пн мар 27, 2017 8:38 pm

uni писал(а):Petitfs завёлся с моим сборочным окружением, так что буду исполнять программы прямо с SD-карты, в виде файлов исходников.
Сомнительное решение с точки зрения надежности. SD карта в разъеме - не индустриальное решение, может начать капризничать в любой момент. А тут на нее возложены критические функции устройства. Я бы SD использовал только для логов, пропадание которых болезненно, но не критично.
cg_shura
Сообщения: 110
Зарегистрирован: Пт авг 14, 2015 11:24 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение cg_shura » Пн мар 27, 2017 8:42 pm

uni писал(а):Все решения на Linux стартуют от 20-30 секунд и выше, т.е. если вас устраивает готовность устройства через какое-то время, то пользуйтесь. Меня это не устраивает, мне надо сразу: включил и работает. Я мог бы использовать роутер TL-MR3020, но он у меня стартует около 40 сек.
Плюс на порядок выше энергопотребление. Плюс ниже надежность по сравнению с МК на двуслойной плате.
cg_shura
Сообщения: 110
Зарегистрирован: Пт авг 14, 2015 11:24 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение cg_shura » Пн мар 27, 2017 8:45 pm

uni писал(а):Возможности picoc на удивление обширны, если посмотреть на его тестовые примеры.
Интересная штука, но не увидел портов под МК, может недосмотрел. Уже удалось собрать? Сколько надо ОЗУ чтобы выполнить минимальный скрипт Hello World?
cg_shura
Сообщения: 110
Зарегистрирован: Пт авг 14, 2015 11:24 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение cg_shura » Пн мар 27, 2017 8:48 pm

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

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

Сообщение uni » Вт мар 28, 2017 5:19 am

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

Я не против использовать STM, тем более, что там проще с отладкой. Просто у меня нет отладочной платы с той же периферией как у Ардуино, включая Ethernet. Там бы конечно всё сразу завелось.

Портов для мк нет, так как сложно это сделать. Я долго мучался, чтобы на avr собралось, переделал под c++ компилятор.

Я сейчас пытаюсь запустить простейший скрипт с 8 Кб ОЗУ. Программа считывает его с карты, полностью загружает в память, выполнят проход, потом исполняет. Ещё не заменил работу с файловой системой в picoc. Как будет рабочий пример, покажу видео под отладчиком.

Если идея моя пойдёт, то я сделаю 3 runtime: ПЛК, шлюз modbus и универсальный модуль ввода-вывода. Этого должно быть достаточно, чтобы делать разные асу системы.

П.С. По поводу выбора мк. Я хочу использовать внешнюю память ОЗУ, чтобы выделить каждой задаче RTOS своё адресное пространство. Например, если у меня 512К, то я могу запустить 8 задач по 56 К (64 - 8, где 8 - глобальная для rtos и пр.) ОЗУ у каждой на avr или 16 задач с 28К памяти у каждой и т.д. Для этого нужно немного поправить переключатель контекста у rtos. Как работать с внешней памятью на avr я знаю, а вот с stm - нет. Мне пока проще обкатать технологию на том, что я умею.
Россия навсегда!
cg_shura
Сообщения: 110
Зарегистрирован: Пт авг 14, 2015 11:24 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение cg_shura » Вт мар 28, 2017 11:50 am

uni писал(а):По поводу sd-карты - да, не очень хорошо, но у нас на работе мы также используем sd-карту для хранения программы исполнения, а также файла конфигурации. Это в промышленном ПЛК. Так что пойдёт, если как раз базы всякие туда не писать.
В том ПЛК что вы используете наверняка есть возможность хранить программу не на SD, просто вы выбрали SD. Или только на SD?
uni писал(а):Я не против использовать STM, тем более, что там проще с отладкой. Просто у меня нет отладочной платы с той же периферией как у Ардуино, включая Ethernet. Там бы конечно всё сразу завелось.
Вы делаете тиражное устройство или единичное? Если тиражное, то странно звучит что нет отладочной платы. Если одиночное - проще купить готовый ПЛК и не париться. Да и незачем отладочная плата, что там отлаживать? Можно сразу делать первую версию по референс дизайну.
uni писал(а):Портов для мк нет, так как сложно это сделать. Я долго мучался, чтобы на avr собралось, переделал под c++ компилятор.
А что там надо править? Хочу попробовать под STM32 собрать в IAR.
uni писал(а):Ещё не заменил работу с файловой системой в picoc. Как будет рабочий пример, покажу видео под отладчиком.
Так весь смысл скриптового языка - это манипуляция ресурсами системы (порты, файловая система и т.д.). А если оно только printf может вывести, то какой смылс в этом скриптовом языке.
uni писал(а):Я хочу использовать внешнюю память ОЗУ, чтобы выделить каждой задаче RTOS своё адресное пространство. Например, если у меня 512К, то я могу запустить 8 задач по 56 К (64 - 8, где 8 - глобальная для rtos и пр.) ОЗУ у каждой на avr или 16 задач с 28К памяти у каждой и т.д. Для этого нужно немного поправить переключатель контекста у rtos. Как работать с внешней памятью на avr я знаю, а вот с stm - нет. Мне пока проще обкатать технологию на том, что я умею.
Если вы предполагаете продажу устройств, то надо учитывать себестоимость. С авр и внешней ОЗУ выйдет дороже и места на плате значительно больше.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

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

Сообщение uni » Вт мар 28, 2017 3:17 pm

На основной работе я занимаюсь программированием ПЛК под Linux, CoDeSys и пр. Этот проект мой частный.
В том ПЛК что вы используете наверняка есть возможность хранить программу не на SD, просто вы выбрали SD. Или только на SD?
У нас есть контроллеры, которые программируются напрямую без ОС, а есть с Linux и uClinux, с isagraf'ом и codesys'ом. Они хранят программу на sd-карте. ПЛК с голой ОС также хранит программу на sd-карте.
Вы делаете тиражное устройство или единичное? Если тиражное, то странно звучит что нет отладочной платы. Если одиночное - проще купить готовый ПЛК и не париться. Да и незачем отладочная плата, что там отлаживать? Можно сразу делать первую версию по референс дизайну.
Предполагаю тиражное. Отладочный комплект у меня есть под avr. Готовый ПЛК, если его покупать, стоит от 10 тыс и выше. Например, Wecon LX3V - аналог Mitsubishi FX2N. Или наш ПЛК даже на uClinux стоит от 15 тыс. А мне нужно много таких ПЛК, мне нужен шлюз Modbu-RTU в Modbus-TCP, мне нужны модули ввода-вывода. Если всё это посчитать, то станет понятным почему я делаю это всё на avr. Это будет дешевле намного, а по функционалу, если не ставить сложных задач вполне достойно.
А что там надо править? Хочу попробовать под STM32 собрать в IAR.
Кто мешает? Один уровень вверх от примеров и там есть исходники. Будет собственный интерпретатор.
Так весь смысл скриптового языка - это манипуляция ресурсами системы (порты, файловая система и т.д.). А если оно только printf может вывести, то какой смылс в этом скриптовом языке.
В avr работа со всей архитектурой идёт через ОЗУ. Вы можете объявить идентификаторы для каждого конфигурационного регистра и по особому их обрабатывать. Получится работа со всей периферий напрямую. Что касается работы с файлами, то это тоже можно сделать, просто немного сложнее, учитывая ограничения используемого драйвера. FatFs я ещё не подключил.
Если вы предполагаете продажу устройств, то надо учитывать себестоимость. С авр и внешней ОЗУ выйдет дороже и места на плате значительно больше.
Да, память дорогая, но в результате всё равно будет дешевле, если бы я себе покупал несколько ПЛК, модулей, шлюзов. По форм фактору я хочу, чтобы всё было почти одинаково и ПЛК, и шлюз, и МВВ. Кстати, для шлюза не обязательно иметь внешнее ОЗУ, если сильно его не грузить.

Вообще, я бы купил сторонний ПЛК, но они очень дороги и все кроме того ограничены в ПО. Те, кто продают ПЛК, берут деньги со всего, что можно монетизировать: ограничивают интерфейсы, входы/выходы, память для программ и пр.
Россия навсегда!
Ответить