Хотелось бы увидеть подпрограммы, которые можно будет запускать по событию, это должно ускорить работы контроллера.
При загрузке пр200 на 50% и выше, появляется заметная задержка при работе с RS-485, на работу не влияет, но почему бы не увеличить производительность контроллера с помощью подпрограмм? Из-за отсутствия оператора MOV приходится использовать оператор SEL, а он по моей логике перезаписывает переменную каждый цикл тем самым нагружая контроллер.
Если проблем нет, то нет смысла и менять. Доработки о которых говорите непонятно зачем нужны (сейчас у всех работает), а на их реализацию, тестирование и документирование потребуется время разработчиков ОЛ.
Касательно mov. Вот вы пишете, что сейчас sel выполняется на каждом цикле. Так и с mov будет та же история: сначала нужно проверить условие, а потом переместить данные. Проверку на каждом цикле всё равно никто не отменял.
Я предложил добавление подпрограмм для повышения производительность контроллера, а в качестве примера я привел оператор SEL который не совсем грамотно использует ресурсы контроллера. Это не проблема, это доработка/улучшение.
Оператор SEL каждый цикл записывает переменную, независимо от условия, а оператор MOV же должен записывать переменную только при наличие условия.
Вы меня не понимаете. Вот вы же сами пишете "только при наличие условия". Кто условие проверять будет? Пушкин? Это самое условие контроллеру всё равно придётся проверять.
Для обработки оператора SEL контроллеру нужно сделать следующие действия:
1) Перейти к шагу 4, если значение на 1-ом входе является TRUE
2) Записать значение 2-го входа в результат
3) Перейти к шагу 5
4) Записать значение 3-го входа в результат
5) ...очередное действие
Если на 1-ом входе блока SEL находится TRUE, то потребуется 2 действия: 1, 4
Если же там FALSE, то потребуется 3 действия: 1, 2, 3
Теперь в случае с MOV:
1) Перейти к шагу 3, если значение входа EN равно FALSE
2) Записать значение входа на выход
3) ...очередное действие
Если EN==FALSE, то требуется 1 действие: 1
Если же EN=TRUE, то 2 действия: 1, 2
В сухом остатке: да, оператор MOV может и быть чуть более эффективным, но никакого кардинального ускорения он не принесёт. Было 2-3 действия, стало 1-2.
А разрабатывать, отлаживать и документировать -- реальный расход времени и денег. Потом ещё и ошибки исправлять.
Ради чего вся оптимизация-то? Вы реально понимаете, что разница между SEL и MOV это пара инструкций контроллера и всё равно считаете, что ради этого имеет смысл затевать целый блок?
Ну вот, я имел ввиду, то что контроллеру необходимо выполнить больше инструкций при операторе SEL, чем при MOV.
У меня присутствует в программе около 150 вот таких вот блоков:
1234.png
Блок используется для сброса переменной на заводское значение. Без этих блоков цикл выполняется, как пишет сама ПР200, за 10-14 мс,. С этими блоками цикл увеличивается до 22-26 мс. По моей логике контроллер работает в холостую из-за такого построения программы. Скорость цикла 26 мс тоже достаточно быстрая и удовлетворяет большинство потребностей, но появляются заметные задержки при работе с RS-485 в режиме SLAVE ПР200 при считывании переменных. В режиме мастер тоже должны быть задержки, но пока не довелось проверить.
Ввод подпрограммы или оператора MOV, увеличит скорость работы. Оптимизация радио увеличения скорости цикла, чем контроллер работает быстрее тем лучше.
Последний раз редактировалось Goodwin2; 09.05.2018 в 19:31.
fSEL встроенный блок и их штук 10, не больше, скриншот я сделал в первом попавшемся месте.
4321.png