ПЛК (Arduino Mega 2560 + W5100)

Модератор: Alex

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

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

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

Интерпретатор с ассемблера написать не сложно, т.к. нужно тупо декодировать каждую инструкцию (я уже делал дизассемблер для объектного кода avr и представляю что это такое). Гораздо сложнее написать компилятор/транслятор из высокоуровневого языка в этот ассемблер. Вот тут будет сложно. Но это далёкие материи. Пока мне нужно сосредоточиться на ОС и параллельном выполнении задач.

Если напишу FTP сервер и аналог 2boots, то смогу из Total Commander'а заливать прошивку на карточку и через telnet перегружать Arduino, чтобы она сама прошилась на новую прошивку.
Россия навсегда!
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

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

Что понимается под выражением «модули ввода-вывода»?

Возможно ли на Ардуино организовать реальную (а не кооперативную) многозадачность?

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

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

Сообщение uni » Пн сен 19, 2016 12:14 pm

Модуль ввода (дискретный, аналоговый) - это периферийная по отношению к вычислительной часть, которая предоставляет данные в обработанном виде (цифровом). Если у ПЛК нет модуля ввода, то обязательно должен быть интерфейс для подключения таких модулей. Интерфейс тоже цифровой. У мк, к примеру, есть модули на "борту", но они делают измерения "напрямую", что плохо. Каналы ввода должны быть изолированы и резервированы.
Модули вывода также должны быть "изолированы" (оптопары + транзисторы (реле)) и резервированы.

По этому поводу я давно ищу на ali такую периферийную часть без вычислительного ядра, в которую можно было вставить плату Arduino. Пока не нашёл. Я бы назвал его PLC Shield for Arduino в том смысле, что он предоставляет дополнительные развязанные части: ИБП (импульсный блок питания), модули дискретного ввода, аналогового ввода, дискретного вывода, аналогового вывода, RS-485 (несколько штук), USB-COM, индикация (ЖКИ, светодиоды).

По поводу планировщика. В ссылке из первого поста (Документация) можно прочитать про scmRTOS, там есть отдельная глава про типы планировщиков (Глава 1. Введение). Вот цитата оттуда:
Операционная система реального времени для однокристальных микроконтроллеров scmRTOS (Single-Chip Microcontroller Real-Time Operating System) использует приоритетное вытесняющее планирование процессов.
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

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

Сообщение alexsis_76 » Пн сен 19, 2016 1:20 pm

Возможно ли на Ардуино организовать реальную (а не кооперативную) многозадачность?
только псевдо многозаданость, вычислитель один
Гораздо сложнее написать компилятор/транслятор из высокоуровневого языка в этот ассемблер. Вот тут будет сложно
да код для этого участка получится довольно пухлый
синтаксический анализатор последовательно выделяет лексемы и преобразует их в ассемблер, в принципе можно завернуть цикл и прогонять через него интерпретируемый код, на выходе получим команда в двоичном представлении,но даже если это будет родной для avr,все равно напрямую контроллер его выполнить не сможет, нужно прошить во флеш
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Пн сен 19, 2016 1:32 pm

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

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

Сообщение uni » Пн сен 19, 2016 2:09 pm

Задача не может подвесить контроллер, если только она не вмешалась в работу механизма переключения, а для этого нужно грамотно писать код, используя предоставленные механизмы. В scmRTOS возможно извне завершить и перезапустить процесс с нуля (Глава 4, раздел 4.3 упомянутого руководства).

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

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

Сообщение alexsis_76 » Пн сен 19, 2016 2:31 pm

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

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

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

Сообщение uni » Пн сен 19, 2016 2:52 pm

Что касается интерпретатора, то я мог бы попробовать портировать вот этот: picoc.
Россия навсегда!
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

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

Сообщение alexsis_76 » Пн сен 19, 2016 2:58 pm

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Пн сен 19, 2016 4:24 pm

Задача не может подвесить контроллер, если только она не вмешалась в работу механизма переключения, а для этого нужно грамотно писать код, используя предоставленные механизмы.
А как быть с поддержкой «железа»? Для каждой «железки» должен быть написан специализированный драйвер для этой операционной системы? Начиная с Ethernet Shield до nRF24 и так далее? Или как?

И если я правильно понял, в ваши планы входит написать такую ОС?
Ответить