ПЛК (Arduino Mega 2560 + W5100)
Модератор: Alex
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Я пишу примерно те же вещи с использованием uClinux (ARM LPC2468) на C++. И что с того? Да, некоторые вещи стали проще, а вот сопровождение всего этого хозяйства гораздо, гораздо сложнее. Не говоря уже о том, что чем "больше" ОС, тем дольше она загружается. Я не хочу ждать минуту, пока моё устройство загрузится. Для одних решений это не принципиально, но мне лично хочется, чтобы моё устройство стартовало с задержкой порядка нескольких секунд. С линуксом это сделать практически невозможно (нужно быть очень большим гуру, чтобы отключить всё ненужное при старте).
Это только кажется, что большие и мощные камни дадут вам подавляющее преимущество. Вы попробуйте отладить всё это дело или сделать так, чтобы сопровождение было несложным. За всё надо платить.
Меня вполне устроит реализация на avr, т.к. с ней просто проще работать, если не требовать чего-то действительно невозможного.
Это только кажется, что большие и мощные камни дадут вам подавляющее преимущество. Вы попробуйте отладить всё это дело или сделать так, чтобы сопровождение было несложным. За всё надо платить.
Меня вполне устроит реализация на avr, т.к. с ней просто проще работать, если не требовать чего-то действительно невозможного.
Россия навсегда!
-
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
это точно,если что то пойдет не так(а оно так и бывает)на отладке можно повеситься.Это только кажется, что большие и мощные камни дадут вам подавляющее преимущество
я вот сейчас пытаюсь(еще не начал)подключить usb камеру к микроконтроллеру.
- nightwind
- Сообщения: 333
- Зарегистрирован: Вс июн 26, 2016 4:42 pm
- Откуда: Барановичи
- Благодарил (а): 28 раз
- Поблагодарили: 52 раза
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
на чем там вешаться?? наоборот хоть пошагово ходи, хоть брэйки любые ставь. это на аврках приходилось тупо в уарт писать, а если вис, то капец. проще там конечно все и разжевано давно, это да. а на "больших камнях" там только инициализация весит больше, чем памяти в меге) но это только поначалу страшно)alexsis_76 писал(а):это точно,если что то пойдет не так(а оно так и бывает)на отладке можно повеситься.Это только кажется, что большие и мощные камни дадут вам подавляющее преимущество
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Хороший репозиторий с freemodbus. Я пробовал только демку с LinuxTCP (tcp slave). Работает.
Давно искал нечто похожее, чтобы шлюз сделать на Arduino Mega 2560 (tcp <-> modbus rtu). Теперь, похоже, будет гораздо легче это сделать.
1. freemodbus .
Давно искал нечто похожее, чтобы шлюз сделать на Arduino Mega 2560 (tcp <-> modbus rtu). Теперь, похоже, будет гораздо легче это сделать.
1. freemodbus .
Россия навсегда!
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Кстати, modbus можно использовать в качестве отладчика. Как-то не пришло раньше в голову, ведь у меня операционка и я могу один процесс задействовать под modbus pull. В регистры загнать все интересующие меня состояния и читать специальной программой (ibaPDA). Таким образом можно следить за изменениями с точностью n*10 мс (посмотрю по факту).
Выглядеть это будет так:

Выглядеть это будет так:

Россия навсегда!
-
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
обычно uart используют,а еще лучше полноценный отладчикКстати, modbus можно использовать в качестве отладчика
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Похоже, что мне есть у кого подсмотреть идеи: OpenPLC . Если можно их код запустить на Arduino Mega, то можно пока использовать их технологию. Там есть редактор и можно писать код на ST.
Россия навсегда!
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Новости. Мне удалось собрать picoc для AVR. Первая черновая сборка требует следующие ресурсы:
Я выбросил части кода, которые требуют для себя реализацию работы с файловой системой. Также выкинул код, для которого нет функций в библиотеках для avr мк. Практически я теперь могу промоделировать работу интерпретатора в Proteus, нужно только пересобрать код с поддержкой внешнего ОЗУ. Постепенно, просматривая код в отладчике можно уменьшить требования к ОЗУ, перенеся все строки во флеш. Не оценивал ещё сколько это освободит памяти. Далее нужно разобраться каким образом происходит интерпретация. Я не могу исходник загрузить в ОЗУ целиком, поэтому нужно будет переписать ту часть кода, которая работает с исходником как с целым, если это так на самом деле.
Код: Выделить всё
AVR Memory Usage
----------------
Device: atmega2560
Program: 72236 bytes (27.6% Full)
(.text + .data + .bootloader)
Data: 8679 bytes (105.9% Full)
(.data + .bss + .noinit)
Россия навсегда!
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Давно меня не было. Занимался адаптацией modbus-rtu, petitfs и scmRTOS. Очень тяжело сводить всё в одно. Пока могу доложить, что выпилил часть строк из ОЗУ, но места свободного всё равно мало. Буду пробовать исполнять простейшие Си-программы из нескольких команд. Petitfs завёлся с моим сборочным окружением, так что буду исполнять программы прямо с SD-карты, в виде файлов исходников.
Далее нужно поднять простейший web-сервер с поддержкой ajax post-запросов на сокетах, чтобы компактней было.
Тогда я получаю гибкое решение, где могу хоть и примитивно, но хранить всю логику во внешних си-файлах, а состояние системы я могу получать через ajax-запросы, считывая значения глобальных переменных из контекста интерпретатора.
В общем, к чему всё и шло: загружаем сценарии прямо в ПЛК и он автономно их исполняет. Можно по аналогии со старшими системами называть скрипты задачами и где-то прописать их цикличность. Останется только развести плату с внешней ОЗУ.
Что касается логики работы парсера. Его придётся немного переделать с учётом того, что он работает с файлом, считанным в ОЗУ полностью. Ясно, что это не вариант для мк и я переделаю его под работу с файлом определённой длины. Все операции чтения из ОЗУ превратятся в чтение файла с карточки с буфером в 512 байт.
Далее нужно поднять простейший web-сервер с поддержкой ajax post-запросов на сокетах, чтобы компактней было.
Тогда я получаю гибкое решение, где могу хоть и примитивно, но хранить всю логику во внешних си-файлах, а состояние системы я могу получать через ajax-запросы, считывая значения глобальных переменных из контекста интерпретатора.
В общем, к чему всё и шло: загружаем сценарии прямо в ПЛК и он автономно их исполняет. Можно по аналогии со старшими системами называть скрипты задачами и где-то прописать их цикличность. Останется только развести плату с внешней ОЗУ.
Что касается логики работы парсера. Его придётся немного переделать с учётом того, что он работает с файлом, считанным в ОЗУ полностью. Ясно, что это не вариант для мк и я переделаю его под работу с файлом определённой длины. Все операции чтения из ОЗУ превратятся в чтение файла с карточки с буфером в 512 байт.
Россия навсегда!
-
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
Да,титанический труд,а зачем си код если он будет храниться в виде исходников,с таким же успехом можно использовать любой другой язык.
может лучше посмотреть в сторону LINUX на малине или апельсине,там и памяти вагон и частота высокая и интерпретаторы готовые, сервер настоящий?
в том то и дело что примитивно, возможности будут сильно ограничены, ну и скорость?Тогда я получаю гибкое решение, где могу хоть и примитивно
может лучше посмотреть в сторону LINUX на малине или апельсине,там и памяти вагон и частота высокая и интерпретаторы готовые, сервер настоящий?