PDA

Просмотр полной версии : Цикл и таймер по прерыванию 10мкс ПЛК110



SuP
28.08.2012, 16:31
Добрый день! Имеется ПЛК 110 (Version 2.10).

Хотелось бы чётко уяснить некоторые вещи, связанные с циклом работы, а также с прерыванием, которое есть у ПЛК110.

1.Каким может быть максимальный период цикла контроллера, при котором сохраняется нормальная его работа (а не тот период, при котором срабатывает watch-dog)?
2.Это величина постоянная, или зависит от того, используются ли определённые каналы и протоколы связи, от количества задействованных входов-выходов и т.п.?
3.Если зависит, то каким может быть максимальный период цикла контроллера при использовании обоих портов rs-232 (голый обмен приём-передача), одного rs-485 (DCON) и Ethernet (Modbus) с частотой опроса порядка 300 мс?

4.В окне "Конфигурация ПЛК" как я понимаю, этот максимальный период определён как 50мс. Если пользовательская программа его превышает, то тормозится обслуживание нужд контроллера, а пользовательская часть всё равно выполняется до конца, правильно? При этом может пропадать связь по Modbus через Ethernet, могут не измениться какие-то дискретные выходы в том цикле, где пользовательская программа их изменила?

5.Параметр MinCycleLenth определяет минимальную длину цикла. То есть, при быстром выполнении пользовательской и своей программы контроллер всё равно будет делать задержку до этого значения, прежде чем снова начать выполнение пользовательской части. У меня сейчас используется значение 0, при котрором цикл длится по факту, но может разниться по длительности. Фактически, замеренно время, бывает, превышает 50 мс, а иногда и 100 мс. Чем это грозит в части обслуживания нужд контроллера?

6.Таймер, завязанный на прерывание 20 мкс, имеет высший приоритет, чем работа по обслуживанию нужд контроллера вне программы пользователя? То есть, можно ли быть уверенным, что моя функция, где есть две SysComWrite на разные порты, которая висит на этом таймере, сконфигурированном на её вызов каждые 8 мс, будет без перебоев отрабатываться? Как это будет проявляться по отношению к описанному выше в п.4?
7.Как выяснить время выполнения функции SysComWrite (SysLibCom.lib)? Данные, передаваемые ей, на скорости 115200 уходят за 2,34375 мс.

Заранее спасибо!

lara197a
28.08.2012, 17:22
На половину Вы ответили сами. По превышению цикла контроллер уйдет в перезагрузку. 10 000мс-мах цикл.
100мс-это много. Может использовать сопроцессор(к примеру ПЛК304(8)).
У таймера 20мс-приоритет высокий, будет.
7.-никак.

SuP
29.08.2012, 11:17
По превышению цикла контроллер уйдет в перезагрузку. 10 000мс-мах цикл. 100мс-это много.
10 000мс - это по watch-dog. почему 100мс много, если максимальный цикл 10 000мс? Чем плохо это "много"? Вплоть до 10 000мс будет сохраняться работа того, что я перечислил в п.3? Или же будет, как я описал в п.4? Если как в п.4, то что будет отваливаться в первую очередь, в каком порядке?


Может использовать сопроцессор(к примеру ПЛК304(8)).
Пока без переделок нужно обойтись, но для будущего масштабирования есть варианты более оптимальной схемы.


7.-никак.
Во сколько ассемблерных команд она скомпилирована, частота процессора известна. По идее, это могут знать разработчики.