Страница 2 из 21
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 11:21 am
uni
Интерпретатор с ассемблера написать не сложно, т.к. нужно тупо декодировать каждую инструкцию (я уже делал
дизассемблер для объектного кода avr и представляю что это такое). Гораздо сложнее написать компилятор/транслятор из высокоуровневого языка в этот ассемблер. Вот тут будет сложно. Но это далёкие материи. Пока мне нужно сосредоточиться на ОС и параллельном выполнении задач.
Если напишу FTP сервер и аналог
2boots, то смогу из Total Commander'а заливать прошивку на карточку и через telnet перегружать Arduino, чтобы она сама прошилась на новую прошивку.
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 11:43 am
Alex
Что понимается под выражением «модули ввода-вывода»?
Возможно ли на Ардуино организовать реальную (а не кооперативную) многозадачность?
Возможно ли на Ардуино организовать работу в реальном времени и какая (максимальная гарантированная) задержка переводит систему в разряд «систем реального времени»?
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 12:14 pm
uni
Модуль ввода (дискретный, аналоговый) - это периферийная по отношению к вычислительной часть, которая предоставляет данные в обработанном виде (цифровом). Если у ПЛК нет модуля ввода, то обязательно должен быть интерфейс для подключения таких модулей. Интерфейс тоже цифровой. У мк, к примеру, есть модули на "борту", но они делают измерения "напрямую", что плохо. Каналы ввода должны быть изолированы и резервированы.
Модули вывода также должны быть "изолированы" (оптопары + транзисторы (реле)) и резервированы.
По этому поводу я давно ищу на ali такую периферийную часть без вычислительного ядра, в которую можно было вставить плату Arduino. Пока не нашёл. Я бы назвал его PLC Shield for Arduino в том смысле, что он предоставляет дополнительные развязанные части: ИБП (импульсный блок питания), модули дискретного ввода, аналогового ввода, дискретного вывода, аналогового вывода, RS-485 (несколько штук), USB-COM, индикация (ЖКИ, светодиоды).
По поводу планировщика. В ссылке из первого поста (
Документация) можно прочитать про scmRTOS, там есть отдельная глава про типы планировщиков (Глава 1. Введение). Вот цитата оттуда:
Операционная система реального времени для однокристальных микроконтроллеров scmRTOS (Single-Chip Microcontroller Real-Time Operating System) использует приоритетное вытесняющее планирование процессов.
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 1:20 pm
alexsis_76
Возможно ли на Ардуино организовать реальную (а не кооперативную) многозадачность?
только псевдо многозаданость, вычислитель один
Гораздо сложнее написать компилятор/транслятор из высокоуровневого языка в этот ассемблер. Вот тут будет сложно
да код для этого участка получится довольно пухлый
синтаксический анализатор последовательно выделяет лексемы и преобразует их в ассемблер, в принципе можно завернуть цикл и прогонять через него интерпретируемый код, на выходе получим команда в двоичном представлении,но даже если это будет родной для avr,все равно напрямую контроллер его выполнить не сможет, нужно прошить во флеш
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 1:32 pm
Alex
только псевдо многозаданость, вычислитель один
В этом случае, как я понимаю, любая задача может «подвесить» контроллер и диспетчер не сможет её «снять». И хотелось бы получить ответ о максимально допустимой задержке для «системы реального времени».
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 2:09 pm
uni
Задача не может подвесить контроллер, если только она не вмешалась в работу механизма переключения, а для этого нужно грамотно писать код, используя предоставленные механизмы. В scmRTOS возможно извне завершить и перезапустить процесс с нуля (Глава 4, раздел 4.3 упомянутого руководства).
Максимально допустимая задержка (жёсткое реальное время) определяется из ТЗ на ОСРВ, т.е. если для данного конкретного ТЗ система будет удовлетворять заданию, то она будет системой (жёсткого) реального времени. Жёсткое - превышение указанного времени считается отказом (аварией), мягкое - превышения изредка допустимы.
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 2:31 pm
alexsis_76
В этом случае, как я понимаю, любая задача может «подвесить» контроллер и диспетчер не сможет её «снять
нет не может, хотя планировщик и задача исполняются на одном процессоре.
задачи это части кода расположенные по разным адресам,по прерыванию запускается код, сохраняется контекст задачи управление передается в другой участок восстанавливается контекст задачи и она запускается на исполнение и так по кругу даже если кто то повис он будет висеть а все остальные работать
uni завтра я отправлю вам примеры где я пытался реализовать вм даже работали простейшие конструкции
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 2:52 pm
uni
Что касается интерпретатора, то я мог бы попробовать портировать вот этот:
picoc.
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 2:58 pm
alexsis_76
Re: ПЛК (Arduino Mega 2560 + W5100)
Добавлено: Пн сен 19, 2016 4:24 pm
Alex
Задача не может подвесить контроллер, если только она не вмешалась в работу механизма переключения, а для этого нужно грамотно писать код, используя предоставленные механизмы.
А как быть с поддержкой «железа»? Для каждой «железки» должен быть написан специализированный драйвер для этой операционной системы? Начиная с Ethernet Shield до nRF24 и так далее? Или как?
И если я правильно понял, в ваши планы входит написать такую ОС?