Вход

Просмотр полной версии : Режим симуляции в CodeSYS2.3.9.41



AlexBut
04.06.2026, 05:48
Здравствуйте!
Почему-то в режиме симуляции не проходит сигнал через FBD AND(некоторые). Не пойму почему, в TASK Configuration -Program Call секция
программная есть. И сама программа в контроллере PLC110.60 работает. А в режиме симуляции через AND (по крайней мере этой секции)
сигналы не проходят-на выходе всегда FALSE (см. скрин).
Так только у меня или у всех?

west
04.06.2026, 07:49
Для начала ПКМ "Порядок ~> В соответствии с потоком данных", а дальше уже видно будет...

kondor3000
04.06.2026, 07:57
Что за подписи на албанском у вас?
Кириллицу поставьте в настройках.

AlexBut
05.06.2026, 04:00
Порядок поменял, кириллицу включил, но ничего не поменялось

МихаилГл
05.06.2026, 06:43
Порядок поменял, кириллицу включил, но ничего не поменялось

Вы эту подпрограмму прописали в основной? Она у вас не в обработке похоже.

PS Похоже в симуляции секция call, где вы прописали запуск подпрограммы, как то не так работает. Попробуйте стандартную prg, или как она там называется, и в ней пропишите вызов вашего модуля.

AlexBut
05.06.2026, 07:31
Выяснил как-то связано с priority в Task Configuration-
Там у меня пять задач, все cyclic и interval 100 ms, кроме первой задачи, где интервал 20 ms(она считает импульсы расходомера).
У всех приоритет 1, кроме той задачи , где вызывается неработающая в симуляции секция(OPER_CTRL), у неё 2.
Если у этой задачи поменять приоритет на 1 , то проект в Run не переходит т.к. появляется ошибка-
RUNTIME ERROR:Wrong array index!Please open callstack!
Пробовал менять интервалы но не помогло

МихаилГл
05.06.2026, 07:53
Выяснил как-то связано с priority в Task Configuration-
Там у меня пять задач, все cyclic и interval 100 ms, кроме первой задачи, где интервал 20 ms(она считает импульсы расходомера).
У всех приоритет 1, кроме той задачи , где вызывается неработающая в симуляции секция(OPER_CTRL), у неё 2.
Если у этой задачи поменять приоритет на 1 , то проект в Run не переходит т.к. появляется ошибка-
RUNTIME ERROR:Wrong array index!Please open callstack!
Пробовал менять интервалы но не помогло

Вы в проекте с глобальными переменными не напутали ничего...? Было у меня недавно на плк210, использовал индекс, который был в другой подпрограмме (ну и ещё где то индекс был больше массива), в результате массивы перезаписывали не только себя, но и дискреты после объявления массива. Не мог понять, почему переменные всегда в истине, хотя в программе не используются и сбросить в 0 даже принудительно не могу.

kondor3000
05.06.2026, 08:02
Порядок поменял, кириллицу включил, но ничего не поменялось

Очистку и компиляцию вы вообще делали?
Выкиньте все задачи и сделайте вызов программ из основной.

AlexBut
05.06.2026, 08:23
МихаилГл:
да нет, вроде. Проект простой -только один массив с индексом cnt. Да и то этот cnt - локальная переменная и больше в проекте не встречается

МихаилГл
05.06.2026, 08:37
МихаилГл:
да нет, вроде. Проект простой -только один массив с индексом cnt. Да и то этот cnt - локальная переменная и больше в проекте не встречается

Тогда, как вам уже 2 раза посоветовали, не через таски, а через программу модуль попробуйте запускать. Симуляция это одно, а реальный ПЛК другое. Помню делал, делал программу, залил в ПЛК, и пришлось 30 % переделывать.

AlexBut
05.06.2026, 09:58
Вы в проекте с глобальными переменными не напутали ничего...? Было у меня недавно на плк210, использовал индекс, который был в другой подпрограмме (ну и ещё где то индекс был больше массива), в результате массивы перезаписывали не только себя, но и дискреты после объявления массива. Не мог понять, почему переменные всегда в истине, хотя в программе не используются и сбросить в 0 даже принудительно не могу.

Да, вы правы. В user_fb есть FB DSensFault и в нём массив. И этот DSensFault вызывается в секции OPER_CTRL пару раз. И пока этот вызов не уберёшь при подаче команды Run выпадает эта ошибка.
Хотя компилируется без ошибок