Тонкости FROM/TO
Тонкости FROM/TO
Приветствую!
Контроллер DVP SE, установлены правосторонние модули AI, 8 штук.
Залил программу и столкнулся со срабатыванием Watch Dog, цикл зашкаливал за 3 сек!
Стал разбираться, вроде объем программы небольшой - 8000 шагов из 16000. Нашел, что программу тормозит использование инструкции FROM.
Первоначально организация работы с модулями в программе была следующая:
1. По М1002 опрашиваем модули оператором FROM, проверяем, все и те ли модули стоят.
2. Если правильные модули на месте, то:
2.1 записываем параметры в модули оператором TO;
2.2 опрашиваем FROM регистр состояния CR#30;
2.3 опрашиваем FROM регистры данных.
Ну и дальнейшая обработка.
Опрашивалось все 8 модулей сразу. Думал, что ПЛК сам разрулит, как опрашивать свои модули. Оказалось, что это неправильно и дико тормозит систему.
Пробовал добавить время Watch Dog - ошибка ушла, но дикие тормоза остались.
Организовал поочередный опрос модулей через STL - время цикла пришло в норму и составило около 150 мс. Всё равно многовато.
Сейчас в процессе причесывания программы, но дело в том, что я не нашел флага окончания операции инструкции FROM, поэтому переходы STL сделал по таймеру, что не очень красиво.
Вопрос: есть ли флаги окончания этих операций?
Есть ли другие пути по уменьшению времени цикла?
Контроллер DVP SE, установлены правосторонние модули AI, 8 штук.
Залил программу и столкнулся со срабатыванием Watch Dog, цикл зашкаливал за 3 сек!
Стал разбираться, вроде объем программы небольшой - 8000 шагов из 16000. Нашел, что программу тормозит использование инструкции FROM.
Первоначально организация работы с модулями в программе была следующая:
1. По М1002 опрашиваем модули оператором FROM, проверяем, все и те ли модули стоят.
2. Если правильные модули на месте, то:
2.1 записываем параметры в модули оператором TO;
2.2 опрашиваем FROM регистр состояния CR#30;
2.3 опрашиваем FROM регистры данных.
Ну и дальнейшая обработка.
Опрашивалось все 8 модулей сразу. Думал, что ПЛК сам разрулит, как опрашивать свои модули. Оказалось, что это неправильно и дико тормозит систему.
Пробовал добавить время Watch Dog - ошибка ушла, но дикие тормоза остались.
Организовал поочередный опрос модулей через STL - время цикла пришло в норму и составило около 150 мс. Всё равно многовато.
Сейчас в процессе причесывания программы, но дело в том, что я не нашел флага окончания операции инструкции FROM, поэтому переходы STL сделал по таймеру, что не очень красиво.
Вопрос: есть ли флаги окончания этих операций?
Есть ли другие пути по уменьшению времени цикла?
Re: Тонкости FROM/TO
Сделал опрос модулей по STL с переходом по таймеру 50мс, время цикла упало до 18мс.
Думаю, что на этом можно остановиться, но вопрос остался.
Думаю, что на этом можно остановиться, но вопрос остался.
-
- Сообщения: 955
- Зарегистрирован: 31 окт 2011, 15:18
Re: Тонкости FROM/TO
Хм-м... Не понял, а что-же вы лепили в качестве адреса модуля, когда решили, что "процессор сам разберется"?
Re: Тонкости FROM/TO
С адресацией всё в порядке.
Я имел ввиду, что ПЛК сам определит очередность опроса и выполнит FROM по порядку, а не одновременно.
У меня все FROM (16 штук) со всех модулей выполнялись в одном потоке, то есть ПЛК запрашивал все модули одновременно.
Я имел ввиду, что ПЛК сам определит очередность опроса и выполнит FROM по порядку, а не одновременно.
У меня все FROM (16 штук) со всех модулей выполнялись в одном потоке, то есть ПЛК запрашивал все модули одновременно.
Re: Тонкости FROM/TO
Для чтения значений правосторонних модулей есть D9900-D9999, и М1183.
Просто читаете значения командой MOV.
А команда FROM в программе нужна для чтения регистра ошибок у модулей.
Кстати, ставить таймер ожидания после нее не нужно.
Время чтения значения командой FROM зависит параметров выборки для модуля (RC8, RC9...) и, от того, какие значения вы читает: средние или действительные.
Просто читаете значения командой MOV.
А команда FROM в программе нужна для чтения регистра ошибок у модулей.
Кстати, ставить таймер ожидания после нее не нужно.
Время чтения значения командой FROM зависит параметров выборки для модуля (RC8, RC9...) и, от того, какие значения вы читает: средние или действительные.
Re: Тонкости FROM/TO
Это я давно читал, но никак не мог найти подробную информацию.tvent писал(а):Для чтения значений правосторонних модулей есть D9900-D9999, и М1183.
В мануале на ПЛК ссылка на мануалы модулей, в мануалах модулей и в отдельных и в общем об этом ни слова.
Везде в мануалах, даже в конфигураторе ISPSoft используется FROM/TO.
Сейчас подтолкнули, начал рыть снова и нашел информацию только во встроенном хелпе ISPSoft.
Попробовал-вроде заработало, попробую переделать программу.
Спасибо, что дали толчок!
Re: Тонкости FROM/TO
Может пригодится кому:
-
- Сообщения: 955
- Зарегистрирован: 31 окт 2011, 15:18
Re: Тонкости FROM/TO
Вы, пардон, просто пренебрегаете советами читать нормальную англоязычную документацию с сайта Дельты. Если бы вы это делали - и вопросов не было-бы.and909 писал(а):Это я давно читал, но никак не мог найти подробную информацию.tvent писал(а):Для чтения значений правосторонних модулей есть D9900-D9999, и М1183.
В мануале на ПЛК ссылка на мануалы модулей, в мануалах модулей и в отдельных и в общем об этом ни слова.
Везде в мануалах, даже в конфигураторе ISPSoft используется FROM/TO.
Сейчас подтолкнули, начал рыть снова и нашел информацию только во встроенном хелпе ISPSoft.
Попробовал-вроде заработало, попробую переделать программу.
Спасибо, что дали толчок!
Re: Тонкости FROM/TO
Я, пардон, всегда читаю англоязычную документацию. И сам даю всем такой совет. И сегодня актуализировал мануалы и именно с настоящего сайта Дельты.
Может я недостаточно внимателен, то ткните, пожалуйста, в каком конкретно мануале описан вышеуказанный вопрос.
Может я недостаточно внимателен, то ткните, пожалуйста, в каком конкретно мануале описан вышеуказанный вопрос.
Re: Тонкости FROM/TO
В Instruction Sheet на DVP04AD-E2, к примеру, на эти регистры есть табличка.and909 писал(а): В мануале на ПЛК ссылка на мануалы модулей, в мануалах модулей и в отдельных и в общем об этом ни слова.
Остается просто попробовать