В вашем случае стоит переустановить CODESYS.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Да, сначала установил КДС3.5SP5 (Думал без него обойдётся), а потом переустановил КДС3.5SP5P5.
Что-то колтыли тоже не работают:
05.PNG
При onMouseDown у меня записывается нужный аргумент и должна переключаться в TRUE переменная PLC_PRG.chgFreq[i] (для проверки её также в ST-коде присваиваю, по причине ниже).
Далее в программе работает следующий код:
И опять же у меня при нажатии на ОК переменная Arg2 записывается, а chgFreq[i] переходит в TRUE только при следующем открытии диалога ввода.Код:// обрабатываем изменение частоты насосов FOR i := 1 TO 5 DO IF chgFreq[i] THEN Cmd := INT_TO_WORD(i)+4; Arg1 := 6; chgFreq[i] := FALSE; END_IF; END_FOR;
Боюсь предположить, что
также относиться и к "Переключить переменную" и ST-коду. Теплится надежда, что у меня что-то не так, иначе возникает серьёзная проблема - как выполнить нужную мне последовательность без глобальной переделки диалогов.
У меня, в целом, подобная конструкция работает. Правда, есть один достаточно специфичный момент - chgFreq[i] переходит в TRUE сразу после открытия диалога ввода.
Т.е., полагаю, вы для себя это представляете в стиле:
А CODESYS это воспринимает буквально:Код:открытие диалога ввода-->ввод нового значения-->нажатие на ОК-->взведение флага-->если флаг взведен, то выполняем код
Вообще, использование подобного кода на кнопках не кажется мне хорошей идеей. По-моему, лучше в программе по флагу производить сравнение введенного значения с предыдущим (если это действительно необходимо).Код:открытие диалога ввода-->взведение флага (независимо, что там в диалоге ввода, пусть он просто даже завис открытым)-->если флаг взведен, то выполняем код
Последний раз редактировалось Евгений Кислов; 15.11.2016 в 08:06.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
У меня тоже работала. Правда запись значения команды выполнялась после закрытия диалога. А вот когда уже начал использовать фреймы - начались эти проблемы.У меня, в целом, подобная конструкция работает. Правда, есть один достаточно специфичный момент - chgFreq[i] переходит в TRUE сразу после открытия диалога ввода.
Именно так мне и нужно, но при использовании фреймов это не работает.Т.е., полагаю, вы для себя это представляете в стиле:
Код:открытие диалога ввода-->ввод нового значения-->нажатие на ОК-->взведение флага-->если флаг взведен, то выполняем код
Изначально раньше так и было: при включении панели или восстановлении связи с ПЛК считывались значения, потом уже при изменении писались обратно в ПЛК. Позже для упрощения кода и т.п. перешел на команды с аргументами, что тоже хорошо работало. Все проблемы появились, когда начал применять фреймы, т.е. появились "вложенные" диалоги. В итоге конечно удобнее, когда много однотипных элементов, и проще для корректировки, но теперь нет возможности получить на выходеВообще, использование подобного кода на кнопках не кажется мне хорошей идеей. По-моему, лучше в программе по флагу производить сравнение введенного значения с предыдущим (если это действительно необходимо).
То есть нужно опять всё переделыватьКод:открытие диалога ввода-->ввод нового значения-->нажатие на ОК-->выполняем код
Во вкладке Device присутствует следующий параметр Опции цикла шины - Задачи цикла шины.. Что это за параметр? На что влияет?
Определяет частоту вызова modbus-компонентов. В большинстве случаев лучше не трогать ни эту (общую), ни аналогичные индивидуальные для компонентов настройки - при значениях по умолчанию обмен привязывается к задаче с наименьшим временем цикла. Поскольку обычно в проекте есть MainTask с циклом 10-20 мс, то проблем не возникает.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Интересуюсь потому что не могу обмен запустить на библиотеке Modbus:http://www.owen.ru/forum/showthread....l=1#post227122. Подумал что может быть в этом параметре дело.