ПЛК (Arduino Mega 2560 + W5100)
Модератор: Alex
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Интерпретатор с ассемблера написать не сложно, т.к. нужно тупо декодировать каждую инструкцию (я уже делал дизассемблер для объектного кода avr и представляю что это такое). Гораздо сложнее написать компилятор/транслятор из высокоуровневого языка в этот ассемблер. Вот тут будет сложно. Но это далёкие материи. Пока мне нужно сосредоточиться на ОС и параллельном выполнении задач.
Если напишу FTP сервер и аналог 2boots, то смогу из Total Commander'а заливать прошивку на карточку и через telnet перегружать Arduino, чтобы она сама прошилась на новую прошивку.
Если напишу FTP сервер и аналог 2boots, то смогу из Total Commander'а заливать прошивку на карточку и через telnet перегружать Arduino, чтобы она сама прошилась на новую прошивку.
Россия навсегда!
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
Что понимается под выражением «модули ввода-вывода»?
Возможно ли на Ардуино организовать реальную (а не кооперативную) многозадачность?
Возможно ли на Ардуино организовать работу в реальном времени и какая (максимальная гарантированная) задержка переводит систему в разряд «систем реального времени»?
Возможно ли на Ардуино организовать реальную (а не кооперативную) многозадачность?
Возможно ли на Ардуино организовать работу в реальном времени и какая (максимальная гарантированная) задержка переводит систему в разряд «систем реального времени»?
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Модуль ввода (дискретный, аналоговый) - это периферийная по отношению к вычислительной часть, которая предоставляет данные в обработанном виде (цифровом). Если у ПЛК нет модуля ввода, то обязательно должен быть интерфейс для подключения таких модулей. Интерфейс тоже цифровой. У мк, к примеру, есть модули на "борту", но они делают измерения "напрямую", что плохо. Каналы ввода должны быть изолированы и резервированы.
Модули вывода также должны быть "изолированы" (оптопары + транзисторы (реле)) и резервированы.
По этому поводу я давно ищу на ali такую периферийную часть без вычислительного ядра, в которую можно было вставить плату Arduino. Пока не нашёл. Я бы назвал его PLC Shield for Arduino в том смысле, что он предоставляет дополнительные развязанные части: ИБП (импульсный блок питания), модули дискретного ввода, аналогового ввода, дискретного вывода, аналогового вывода, RS-485 (несколько штук), USB-COM, индикация (ЖКИ, светодиоды).
По поводу планировщика. В ссылке из первого поста (Документация) можно прочитать про scmRTOS, там есть отдельная глава про типы планировщиков (Глава 1. Введение). Вот цитата оттуда:
Модули вывода также должны быть "изолированы" (оптопары + транзисторы (реле)) и резервированы.
По этому поводу я давно ищу на ali такую периферийную часть без вычислительного ядра, в которую можно было вставить плату Arduino. Пока не нашёл. Я бы назвал его PLC Shield for Arduino в том смысле, что он предоставляет дополнительные развязанные части: ИБП (импульсный блок питания), модули дискретного ввода, аналогового ввода, дискретного вывода, аналогового вывода, RS-485 (несколько штук), USB-COM, индикация (ЖКИ, светодиоды).
По поводу планировщика. В ссылке из первого поста (Документация) можно прочитать про scmRTOS, там есть отдельная глава про типы планировщиков (Глава 1. Введение). Вот цитата оттуда:
Операционная система реального времени для однокристальных микроконтроллеров scmRTOS (Single-Chip Microcontroller Real-Time Operating System) использует приоритетное вытесняющее планирование процессов.
Россия навсегда!
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
только псевдо многозаданость, вычислитель одинВозможно ли на Ардуино организовать реальную (а не кооперативную) многозадачность?
да код для этого участка получится довольно пухлыйГораздо сложнее написать компилятор/транслятор из высокоуровневого языка в этот ассемблер. Вот тут будет сложно
синтаксический анализатор последовательно выделяет лексемы и преобразует их в ассемблер, в принципе можно завернуть цикл и прогонять через него интерпретируемый код, на выходе получим команда в двоичном представлении,но даже если это будет родной для avr,все равно напрямую контроллер его выполнить не сможет, нужно прошить во флеш
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
В этом случае, как я понимаю, любая задача может «подвесить» контроллер и диспетчер не сможет её «снять». И хотелось бы получить ответ о максимально допустимой задержке для «системы реального времени».только псевдо многозаданость, вычислитель один
- uni
- Сообщения: 191
- Зарегистрирован: Вс июл 26, 2015 9:21 pm
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: ПЛК (Arduino Mega 2560 + W5100)
Задача не может подвесить контроллер, если только она не вмешалась в работу механизма переключения, а для этого нужно грамотно писать код, используя предоставленные механизмы. В scmRTOS возможно извне завершить и перезапустить процесс с нуля (Глава 4, раздел 4.3 упомянутого руководства).
Максимально допустимая задержка (жёсткое реальное время) определяется из ТЗ на ОСРВ, т.е. если для данного конкретного ТЗ система будет удовлетворять заданию, то она будет системой (жёсткого) реального времени. Жёсткое - превышение указанного времени считается отказом (аварией), мягкое - превышения изредка допустимы.
Максимально допустимая задержка (жёсткое реальное время) определяется из ТЗ на ОСРВ, т.е. если для данного конкретного ТЗ система будет удовлетворять заданию, то она будет системой (жёсткого) реального времени. Жёсткое - превышение указанного времени считается отказом (аварией), мягкое - превышения изредка допустимы.
Россия навсегда!
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
нет не может, хотя планировщик и задача исполняются на одном процессоре.В этом случае, как я понимаю, любая задача может «подвесить» контроллер и диспетчер не сможет её «снять
задачи это части кода расположенные по разным адресам,по прерыванию запускается код, сохраняется контекст задачи управление передается в другой участок восстанавливается контекст задачи и она запускается на исполнение и так по кругу даже если кто то повис он будет висеть а все остальные работать
uni завтра я отправлю вам примеры где я пытался реализовать вм даже работали простейшие конструкции
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: ПЛК (Arduino Mega 2560 + W5100)
А как быть с поддержкой «железа»? Для каждой «железки» должен быть написан специализированный драйвер для этой операционной системы? Начиная с Ethernet Shield до nRF24 и так далее? Или как?Задача не может подвесить контроллер, если только она не вмешалась в работу механизма переключения, а для этого нужно грамотно писать код, используя предоставленные механизмы.
И если я правильно понял, в ваши планы входит написать такую ОС?