Разное поведение программы в Z031 в режимах отладки и рабочем

Автор polyakovmo, 08 июля 2024, 14:13:28

« назад - далее »

polyakovmo

Добрый день.

Подскажите, пожалуйста, в чём отличие рабочей и отладочной компоновки в zworkbench?

Дано: связка контроллера М245 и Z031, Z031 в режиме мастера. На телефоне zcontrol.
На Z031 программа своя, для zcontrol меню тоже своё.
Из zcontrol пишу переменную в Z031, Z031 пишет в контроллер, потом Z031 считывает с контроллера и обновляет у себя переменную. Также можно менять кнопками с Z031, поменял кнопками, улетела переменная в ПЛК, Z031 считал и записал в переменную для zcontrol .
В чём загвоздка... в режиме отладки работает, прошиваю уже рабочим вариантом - не работает. Что не работает не знаю, поскольку прошиваю в отладке, смотрю и всё работает.
ПЗУ сбрасывал, не помогает. Дополнительные переменные вводил.

Эффект Розенталя исключаю, всё-таки это техника, а не психология

Nikolai

Здравствуйте.
В режиме "Отладки в устройстве", для контроля состояния ПЛК, добавляется огромное число внутренних modbus переменных, что в свою очередь ведет к увеличению времени выполнения проекта. Этого времени хватает на то, что бы переменные читались и записывались правильно. В рабочем режиме таких задержек нет и проект выполняется с максимальной скоростью. отсюда и такая ситуация.

polyakovmo

Благодарю. Значит, в правильном направлении искал, но не нашёл пока что верное решение.
Увеличивал время базового таймера вплоть до 600 мсек - не помогло. Видимо, контроллер всё делал за пару мсек, потом ждал до 600 мсек.
Попробую разнести на сцене подальше друг от друга запись и чтение переменной.

polyakovmo


Nikolai

Никак.
Нет такого режима. Контроллер всегда работает на максимальной частоте.

polyakovmo

А буфер какой-нибудь есть для RS485?
Вот в отладке работает, без отладки не работает. Увидел, что переменную в zcontrol меняю, а она не меняется в контроллере, либо блок front не обнаруживает её изменение.

Nikolai

Цитата: polyakovmo от 12 июля 2024, 16:17:02А буфер какой-нибудь есть для RS485?
Вот в отладке работает, без отладки не работает. Увидел, что переменную в zcontrol меняю, а она не меняется в контроллере, либо блок front не обнаруживает её изменение.
Нет никаких буферов. Есть очередь запросов. Запросы туда направляются автоматически все, у которых en 1 и они не стоят в очереди. У Вас скорее всего получается следующее. С zcontrol изменяется переменная, а в это время 31 панель вычитывает из 245 её же и меняет обратно. Вам необходимо процессы чтения записи как то диспетчирезировать.

polyakovmo

Цитата: Nikolai от 15 июля 2024, 07:59:23
Цитата: polyakovmo от 12 июля 2024, 16:17:02А буфер какой-нибудь есть для RS485?
Вот в отладке работает, без отладки не работает. Увидел, что переменную в zcontrol меняю, а она не меняется в контроллере, либо блок front не обнаруживает её изменение.
Нет никаких буферов. Есть очередь запросов. Запросы туда направляются автоматически все, у которых en 1 и они не стоят в очереди. У Вас скорее всего получается следующее. С zcontrol изменяется переменная, а в это время 31 панель вычитывает из 245 её же и меняет обратно. Вам необходимо процессы чтения записи как то диспетчирезировать.
Я тоже пришёл к этому. Написал макрос, который 3 переменные мне перезапишет по изменению одной из них.
тоже есть нюансы с медленной работой ПЛК в отладке и быстрой в рабочем варианте - то же самое, но теперь
 знаю с чем столкнулся и потому осталось это победить  :)

Кстати, заметил, что Z031 работает в сети Modbus RTU в качестве мастера, даже если не запускал в zwb отладку

polyakovmo

#8
Крч, это zcontrol не пишет переменную в z031. закрыть/открыть приложение на телефоне - считывает значение. Меняю значение переменной и эта переменная не синхронизируется с Z031.

Как залить отладочную версию в Z031, но чтобы приложение само запустилась сразу после подачи питания?

Nikolai

Цитата: polyakovmo от 17 июля 2024, 17:27:35Крч, это zcontrol не пишет переменную в z031. закрыть/открыть приложение на телефоне - считывает значение. Меняю значение переменной и эта переменная не синхронизируется с Z031.

Как залить отладочную версию в Z031, но чтобы приложение само запустилась сразу после подачи питания?
Никак. Нет такой возможности.