Просмотр полной версии : Режим симуляции в CodeSYS2.3.9.41
Здравствуйте!
Почему-то в режиме симуляции не проходит сигнал через FBD AND(некоторые). Не пойму почему, в TASK Configuration -Program Call секция
программная есть. И сама программа в контроллере PLC110.60 работает. А в режиме симуляции через AND (по крайней мере этой секции)
сигналы не проходят-на выходе всегда FALSE (см. скрин).
Так только у меня или у всех?
Для начала ПКМ "Порядок ~> В соответствии с потоком данных", а дальше уже видно будет...
kondor3000
04.06.2026, 07:57
Что за подписи на албанском у вас?
Кириллицу поставьте в настройках.
Порядок поменял, кириллицу включил, но ничего не поменялось
МихаилГл
05.06.2026, 06:43
Порядок поменял, кириллицу включил, но ничего не поменялось
Вы эту подпрограмму прописали в основной? Она у вас не в обработке похоже.
PS Похоже в симуляции секция call, где вы прописали запуск подпрограммы, как то не так работает. Попробуйте стандартную prg, или как она там называется, и в ней пропишите вызов вашего модуля.
Выяснил как-то связано с 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
Порядок поменял, кириллицу включил, но ничего не поменялось
Очистку и компиляцию вы вообще делали?
Выкиньте все задачи и сделайте вызов программ из основной.
МихаилГл:
да нет, вроде. Проект простой -только один массив с индексом cnt. Да и то этот cnt - локальная переменная и больше в проекте не встречается
МихаилГл
05.06.2026, 08:37
МихаилГл:
да нет, вроде. Проект простой -только один массив с индексом cnt. Да и то этот cnt - локальная переменная и больше в проекте не встречается
Тогда, как вам уже 2 раза посоветовали, не через таски, а через программу модуль попробуйте запускать. Симуляция это одно, а реальный ПЛК другое. Помню делал, делал программу, залил в ПЛК, и пришлось 30 % переделывать.
Вы в проекте с глобальными переменными не напутали ничего...? Было у меня недавно на плк210, использовал индекс, который был в другой подпрограмме (ну и ещё где то индекс был больше массива), в результате массивы перезаписывали не только себя, но и дискреты после объявления массива. Не мог понять, почему переменные всегда в истине, хотя в программе не используются и сбросить в 0 даже принудительно не могу.
Да, вы правы. В user_fb есть FB DSensFault и в нём массив. И этот DSensFault вызывается в секции OPER_CTRL пару раз. И пока этот вызов не уберёшь при подаче команды Run выпадает эта ошибка.
Хотя компилируется без ошибок
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot