Коллеги доброго дня ,Прошу не кидать тухлыми яблоками..Вложение 51960
почему не происходит инициализация переменной в цикле FOR?
если инициализирую переменную выше цикла то все нормально работает...
может я что то в синтаксе не понимаю.
Вид для печати
Коллеги доброго дня ,Прошу не кидать тухлыми яблоками..Вложение 51960
почему не происходит инициализация переменной в цикле FOR?
если инициализирую переменную выше цикла то все нормально работает...
может я что то в синтаксе не понимаю.
Максим, судя по предыдущему Вашему вопросу, после END_FOR стоит знак точка с запятой, которого не должно быть.
А так надо смотреть в отладке по шагам, почему не происходит инициализация.
Подскажите, пожалуйста, как убрать букву "М". И что она означает?
Недавно тут задавали такой вопрос, к сожалению, не могу найти.
Добрый день!
Пытаюсь реализовать функцию инвертирования входов ПЛК 210 с помощью переключателей в веб визуализации. Сама функция выглядит следующем образом:
Вложение 52114
aInvRs_DI (массив структур для панельки на экране)
aInvRs_DI[16].xButt - переменная переключателя
aInvRs_DI[16].dwColorBrick - переменная смены цвета индикатора
Вызов функции из программы выглядит так
TargetVars.stRightSide.xDi16:=funInvers(TargetVars .stRightSide.xDi16,aInvRS_DI[16].xButt,Color =>aInvRS_DI[16].dwColorBrick);
при компиляции выдает предупреждение:
'Application.TargetVars.stRightSide.xDi16' - не корректный объект для присваивания", вообще всё работает, как задумано. И если заменить таргет переменную на глобальную переменную, то выдаст то же самое предупреждение, а если задать переменную из plc_prg, то предупреждение отсутствует.
А вопрос вот собственно в чем: Насколько критично это предупреждение и почему оно возникает? Если оставить таргет переменную или глобальную какие могут быть последствия?
Добрый день.
'Application.TargetVars.stRightSide.xDi16' - эта переменная, значение которой зависит только от состояния соответствующего дискретного входа.
Не очень понятно, что вы ожидаете, присваивая туда какое-то значение.
DenisV, насколько я помню, функция может иметь только одну выходную переменную - это сама функция (пусть специалисты меня поправят). У вас же выходных переменных - две. Хотя, я сам пробовал в функции дополнительно изменять глобальную переменную (естественно в вызове функции никакие выходные переменные не указывал) - всё работало как надо и не было ошибок.
Возможно, Вам более подошел бы функциональный блок.
Поправляю - такая возможность (VAR_OUTPUT для функций) появилась уже во второй редакции МЭК 61131-3.Цитата:
насколько я помню, функция может иметь только одну выходную переменную - это сама функция (пусть специалисты меня поправят).
В CODESYS V3.5 это поддержано (а вот в CoDeSys V2.3 - поддержано не было).
https://help.codesys.com/webapp/_cds...tional-outputs
Евгений, спасибо за информацию. Уточните, а с какого сервис пака у функции появились дополнительные выходы, а то "вторая редакция" многим, наверное, ничего не говорит?
Здравствуйте, подскажите, пожалуйста, как сделать (какой элемент отвечает за это) что бы картинка менялась по ее ID (пул изображений с их ID создан)
CS3.5 SP14
Добрый день.
С помощью элемента Изображение.
Посмотрите пример:
https://ftp.owen.ru/CoDeSys3/21_Exam...projectarchive
Как я уже писал, я хочу добиться инвертирования значения переменной привязанной ко входу. Тогда остается непонятным вопрос: почему при привязке к определенному входу переменной из области глобальных переменных возникает это же предупреждение, а при задании её из plc_prg нет ?
https://dropmefiles.com/RrwKL
В проекте использованы 5 вариантов задания переменной
В gvl.xDi13 и TargetVars.stRightSide.xDi17 возникает предупреждение
в остальных нет, почему так происходит? и почему возникла разница между
обычной глобальной переменной и глобальной переменной заданной как элемент массива?
Предупреждения исчезнут, если в вашей программе закомментировать строки 2 и 10.
Тут, на мой взгляд, вопрос в том, почему 3 другие строки не вызывают предупреждений. Ответить на него я не могу - вероятно, это мелкая недоработка в CODESYS.
Я еще раз хочу обратить ваше внимание, что вы пытаетесь записывать что-то в переменные, привязанные к дискретным входам контроллера.
В момент привязки ко входам эти переменные становятся доступны только для чтения, потому что их значение начинает зависеть только от состояния соответствующего дискретного входа.
Хорошо, я вас понял, спасибо за помощь!
что-то мне везет на не очевидные предупреждения :D
столкнулся с таким предупреждением:
"Сравнение одного типа перечисления (MB_ERRORCODES) с другим (MB_ERRORCODES)"
aLinkControl[1]:=AO_D1_3001_MU210_501.byModbusError <> IoDrvModbus.MB_ErrorCodes.RESPONSE_SUCCESS;
Задача следующая: получить сигнал об отсутствии связи с устройством для записи в журнал.
Причем для устройства из шаблонов MU210-501 Версия: 3.5.11.7 есть такое предупреждение
А для не шаблонного устройства данное предупреждение не возникает, несмотря на то что применена та же самая логика.
Опять же всё работает корректно, но насколько критично это предупреждение ?
Посмотрите здесь (нужная галочка) + вам надо IoDrvModbusTCP.MB_ErrorCodes.RESPONSE_SUCCESS;
https://youtu.be/IFUN4cYskRI?t=285
Помогло, спасибо!
Не получается скачать Codesys V3.5 SP11 Patch5 с сайта. Видимо, проблемы на сервере?
Да, у нас в эти выходные технические работы, к сожалению.
Можно скачать отсюда.
Скачал. Спасибо.
Но при установке возникают проблемы (см. снимок экрана).Вложение 52225
Соответственно CoDeSys не встает.
Запуск установщика осуществляю от имени администратора.
Видимо, дело в необновленной Виндоус.
Устанавливаю обновления. Отпишусь.
Добрый день! В CDS 3.5.5.7 не отображаются вкладки для соотнесения входов/выходов на Modbus слейвах. Пробовал переустанавливать, результата не дало. При этом в CDS 3.5.14.3 они есть. Версии COM, мастера, слейвов 3.5.4.0 в обоих проектах. Подскажите, пожалуйста, что можно сделать. Вложение 52336
Добрый день.
Используйте актуальную для вашей модели СПК версию шаблонов - там эти вкладки есть:
https://ftp.owen.ru/CoDeSys3/04_Libr...5.4.13.package
Доброе время суток, подскажите, где в codesys 3.5 настроить длину выравнивания структуры ? поясню, создаю структру вида
zagolovok :
for_bool : ARRAY[0..505] OF BYTE ;
for_INT : ARRAY[0..1] OF INT ;
for_REAL : ARRAY[0..24] OF REAL;
логично бы видеть ее длину = 506+4+100= 610 байт, но sizeoff показывает 612 -( как бы настроить выравнивание по 1 байту ? спасибо
друзья , все нашел {attribute 'pack_mode' := '1'}
просто думал что где то галочку надо воткнуть. но нет, атрибут компилятора прям в структуре
Написал свою бибку для CDS3. Добавляю в проект, все внутренности видятся только через дополнительное пространство имен.
Например, хочу добавить в проект структуру из библиотеки. нужно объявлять так: <имя переменной>:<дополнительное имя бибки>.<имя структуры>;
а хочется так: <имя переменной>:<имя структуры>;
Кто знает, что и где подкрутить в библиотеке, чтобы без лишней бижутерии все объявлялось? :)
У вас при объявлении структуры, скорее всего, указан атрибут attribute ‘qualified_only’ (он устанавливается по умолчанию), который отвечает за это поведение.
И это правильно - потому что автор другой библиотеки может выбрать для одного из своих компонентов такое же имя, как и у вас - и пространство имен в этом случае позволит компилятору понять, что именно вы хотите объявить.
нет, никаких атрибутов ни где не указано. или он даже если его нет явно компилятором применяется? как отменить или какой может противоположный атрибут есть? страсть как неудобно все объявления перелопачивать. в других библиотеках же (например в ваших) такого же нет...
Для типа IoDrvModbusTCP.ModbusTCPSlave_Diag в документации выстраивается такая иерархия наследования: ModbusTCPSlave <- ModbusTCPSlaveBase <- IoDrvModbusBase.ModbusSlaveBase , а в IoDrvModbusBase никакого ModbusSlaveBase не находится. Я так понимаю, он объявлен в закрытой части библиотеки?
Интересен он тем, что в нём, похоже, объявлены методы AllocChannels и FreeChannels. Если по первому методу ещё всплывает какая-то подсказка относительно входных переменных, то по второму -- увы, пусто. Хотелось бы знать, как можно добраться до этих скрытых методов, или до их документации, не забираясь вглубь бинарников.
Попробуйте вот этот ключ оставить пустым или удалить.
Вложение 52429
> какую практическую задачу вы пытаетесь решить
Автоматизация настройки проекта. Скорее, с теоретической точки зрения интересно. Но если получится -- тоже хорошо будет.
> Чем вам не подходит настройка слэйва через дерево проекта?
Не знаю, как можно это автоматизировать.
Вы можете использовать библиотеку OwenCommunication - она позволяет организовать обмен исключительно кодом, без настройки через дерево проекта.
https://owen.ru/forum/showthread.php?t=31816
Спасибо, интересно, буду смотреть.