-
- Какова причина что в одном кванте не выполняется: input ->
compute -> output(results) ? - RxTx(27.06.2024 22:38)
- Джиттер output() из-за неконтролированного времени работы
compute(). - Boвa(28.06.2024 04:13)
- Хотел ответить, но вы то же самое ответили. - Make_Pic(28.06.2024 06:43)
- Тогда выбирать: либо джиттер, либо задержка реакции. - RxTx(28.06.2024 17:38)
- Можно разделить всё на критическое по времени, которое вообще засунуть в прерывание по изменению состояния входа и обычное которое будет обрабатываться в суперцикле. Можно также сделать несколько циклов с разными приоритетами и запуском каждого по прерыванию от таймера с возможностью вложенных прерываний. Можно также вместо циклов завести процессы с приоритетами и миниОС. - Boвa(30.06.2024 09:05)
- Тогда выбирать: либо джиттер, либо задержка реакции. - RxTx(28.06.2024 17:38)
- Хотел ответить, но вы то же самое ответили. - Make_Pic(28.06.2024 06:43)
- Джиттер output() из-за неконтролированного времени работы
compute(). - Boвa(28.06.2024 04:13)
- Правильно - по кванту времени запуск нового прогона прикладной
программы. Чтение - асинхронно, в прерываниях с буфером в памяти,
вывод данных - прямо из прикладной программы, по мере потребности. - Cкpипaч(26.06.2024 14:48)
- Прогону прикладной программы без разницы как запускаться, главное,
чтобы время выполнения внутрь цикла помещалось. А вот выборку и
вывод данных нужно делать синхронно и равными интервалами. Это
важно. Иначе начнутся флуктуации параметров, казалось бы,
совершенно прямолинейных процессов. Таково моё мнение. Nikolay_Po(92 знак., 26.06.2024 15:43)
- Несовсем. Многие алгоритмы (тот же ПИД) зависят от четкого
выдерживания шага. Для выходов - если нужно, нужно программно
"ручками" указывать. Для входов - незнаю. Может быть вы и правы, но
на практике, из того где удалось "подсмотреть в замочную скважину"
такого никто не делает. - Cкpипaч(26.06.2024 16:35)
- Мы когда свой контроллер проектировали (не общепром. ПЛК, а для
своего оборудования), делали так. Ввод нового, вывод рассчитанного
- по таймеру. В свободное время цикла - расчёт следующего состояния
выхода. - Nikolay_Po(26.06.2024 17:24)
- Сначала все таки вывод рассчитанного, а потом ввод? - Make_Pic(26.06.2024 21:44)
- Без разницы Задержка в петле управления всё равно будет одинаковой, как ни крути. Если можно одновременно, то одновременно. - Nikolay_Po(27.06.2024 05:12)
- Сначала все таки вывод рассчитанного, а потом ввод? - Make_Pic(26.06.2024 21:44)
- Мы когда свой контроллер проектировали (не общепром. ПЛК, а для
своего оборудования), делали так. Ввод нового, вывод рассчитанного
- по таймеру. В свободное время цикла - расчёт следующего состояния
выхода. - Nikolay_Po(26.06.2024 17:24)
- Несовсем. Многие алгоритмы (тот же ПИД) зависят от четкого
выдерживания шага. Для выходов - если нужно, нужно программно
"ручками" указывать. Для входов - незнаю. Может быть вы и правы, но
на практике, из того где удалось "подсмотреть в замочную скважину"
такого никто не делает. - Cкpипaч(26.06.2024 16:35)
- Прогону прикладной программы без разницы как запускаться, главное,
чтобы время выполнения внутрь цикла помещалось. А вот выборку и
вывод данных нужно делать синхронно и равными интервалами. Это
важно. Иначе начнутся флуктуации параметров, казалось бы,
совершенно прямолинейных процессов. Таково моё мнение. Nikolay_Po(92 знак., 26.06.2024 15:43)
- По идее, каждый квант, одновременно ввод новых данных и вывод результатов предыдущего интервала обработки. Сразу, в начале цикла, чтобы минимизировать дрожь момента выборки и момента обновления выхода. Обработку выполнять уже после завершения операций ввода/вывода. Так загрузка цикла не будет влиять на дрожание фаз ввода и вывода. Это лучший вариант для всех алгоритмов с производными сигналов. Ваш последний вариант правильнее. - Nikolay_Po(26.06.2024 13:28)
- Какова причина что в одном кванте не выполняется: input ->
compute -> output(results) ? - RxTx(27.06.2024 22:38)