ПЛК (Arduino Mega 2560 + W5100)

Модератор: Alex

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

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

Сообщение uni » Пн сен 11, 2017 10:20 am

16. Написать специальный загрузчик по типу 2boot, который имел бы несколько способов обновления прошивки.
Новости. Сделал загрузчик. Долго с ним мучился. 2boot поддерживает только карты до 2 Гб и протокол STK500v1. Ни то, ни другое мне не подходило. Хотелось FAT32 и STK500v2, т.к. последний протокол поддерживает ATmega2560. Поэтому за основу взял пример из PetitFS и совместил его с кодом из avr/boot.h. Далее выковыривал каждый байт, чтобы уместиться в 4Кб флеш. Конечно реализация STK500v2 туда не вошла. Только минимум для чтения прошивки в виде bin файла и записи её во флеш. Что же касается второй части, то мне пришла в голову мысль: А почему бы также не прописывать в пользовательскую память любой загрузчик и передавать управление ему? Поэтому мой загрузчик может ниже себя поместить бинарик другого загрузчика и передать ему управление в зависимости от настроек в специальном конфигурационном файле на sd-карте. Таким образом я могу поддержать любой протокол загрузки, который поместится в дополнительные 4Кб (загрузчик имеет размер 4 Кб и ниже).

Сейчас тестирую исходники доступных загрузчиков, поддерживающих STK500v2. Прежде всего это касается Arduino. К сожалению, удалось подружить (и то частично) второй загрузчик только с родной утилитой из AVR Studio. Считывание полной флеши соответствовало действительности. Но соединение сбрасывается часто по неизвестной пока причине.

Как результат. У меня есть свой загрузчик, который может обновлять прошивку с sd-карты с FAT32, поддерживающий дополнительную логику работы (конфигурируемый).
После того, как добью несколько вариантов вторичных загрузчиков, выложу бинарики (bin, hex) для желающих потестить. Фьюзы, настроенные для работы с моим загрузчиком, менять не надо при этом. Вторичный загрузчик работает как пользовательская программа, т.е. не из boot-секции.

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

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

Сообщение alexsis_76 » Пн сен 11, 2017 12:04 pm

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

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

Сообщение uni » Пн сен 11, 2017 1:26 pm

У меня зато будет встроенный Modbus TCP/RTU Master/Slave. Тоже параллельно их портирую на avr. Планирую иметь на борту 4 RS-485. Это нужно для сетей на основе протокола Modbus, как одного из самых распространённых. Застрял на низкоуровневой работе с сокетами пока, чтобы ftpd, httpd, telnetd переделать (объём кода сократить).
Надеюсь, что хоть за полгода получится сделать конфигурируемый по web модуль ввода/вывода с поддержкой Modbus TCP/RTU Slave, ftp, сохранением конфигурации в json-файле на sd-карте, логированием. Код почти весь есть, его нужно только объединить и протестировать.
Хочу ещё сделать конфигурацию универсальной, чтобы можно было из неё автоматически карту регистров modbus получать.
Россия навсегда!
cg_shura
Сообщения: 110
Зарегистрирован: Пт авг 14, 2015 11:24 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение cg_shura » Пн сен 11, 2017 1:31 pm

uni писал(а):Надеюсь, что хоть за полгода получится сделать конфигурируемый по web модуль ввода/вывода с поддержкой Modbus TCP/RTU Slave, ftp, сохранением конфигурации в json-файле на sd-карте, логированием.
Закладывать sd-карту для хранения критичных данных я бы не стал. Только для логов и прочей некритичной для работы устройства информации. Для критичных данных - микросхему флеш памяти. Прогнозируемая надежность и нет потенциально проблемного разъема.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

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

Сообщение uni » Пн сен 11, 2017 1:45 pm

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

По поводу загрузчика. Если работу с сокетами освою, то можно попробовать сделать вторичный загрузчик через web-интерфейс. Я знаю как этот сделать, но нужно уместиться в 4Кб. По крайней мере в текущей версии основного загрузчика.
Россия навсегда!
cg_shura
Сообщения: 110
Зарегистрирован: Пт авг 14, 2015 11:24 am
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

Сообщение cg_shura » Пн сен 11, 2017 2:01 pm

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

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

Сообщение uni » Пн сен 11, 2017 2:31 pm

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

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

Сообщение alexsis_76 » Пн сен 11, 2017 3:23 pm

У меня зато будет встроенный Modbus TCP/RTU Master/Slave
а ну это пожалуйста насчитал 30шт реализаций на питоне,выбирай любую
Надеюсь, что хоть за полгода получится сделать конфигурируемый по web модуль ввода/вывода с поддержкой Modbus TCP/RTU Slave, ftp, сохранением конфигурации в json-файле на sd-карте, логированием
да гиганский труд.
вот Вы скажите зачем все это,сначала вы полгода будете делать модуль,потом еще полгода будете все отлаживать,может имеет смысл подумать о смене платформы
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

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

Сообщение uni » Пн сен 11, 2017 4:00 pm

Мне нужна дешёвая платформа для автоматизации, т.к. я хочу десятками использовать эти модули и мне не хочется платить по 15-60 т.р. за одну штуку. Мы вот на работе продаём минимальный ПЛК за 30 т.р. примерно. Китайских аналогов не видел пока, так бы их взял. Пробовал Wecon LX3V, но функционал его не стоит его денег, если сравнить с моей поделкой.
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

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

Сообщение alexsis_76 » Пн сен 11, 2017 4:06 pm

ну возьмите хотя бы контроллер побыстрее,у меня например апельсин 650 рублей куда ж дешевле.
Ответить