PDA

Просмотр полной версии : Объявление переменных в CoDesys v2.3



KIB52
18.01.2023, 16:56
Добрый день. Волею судеб пришлось заниматься программированием ПЛК110 в CoDeSys2.3. При объявлении адресных глоб. переменных столкнулся с сообщением компилятора об ошибках. Не могли бы специалисты пояснить что не устраивает компилятор. Прикладываю скрин. Заранее благодарен.65229

1exan
18.01.2023, 17:16
Добрый день. Волею судеб пришлось заниматься программированием ПЛК110 в CoDeSys2.3. При объявлении адресных глоб. переменных столкнулся с сообщением компилятора об ошибках. Не могли бы специалисты пояснить что не устраивает компилятор. Прикладываю скрин. Заранее благодарен.65229

А есть какая-то необходимость задания конкретных адресов в памяти?

kondor3000
18.01.2023, 18:07
Добрый день. Волею судеб пришлось заниматься программированием ПЛК110 в CoDeSys2.3. При объявлении адресных глоб. переменных столкнулся с сообщением компилятора об ошибках. Не могли бы специалисты пояснить что не устраивает компилятор. Прикладываю скрин. Заранее благодарен.

В CoDeSys 2.3 переменные в конфигурации и так глобальные, достаточно им дать имена и можно обращаться к ним из любого блока программы по имени.
Вы же их второй раз поместили в глобальные указав конкретные адреса в конфигурации, чего делать не надо.
Мало того, прямые адреса вообще не рекомендуется применять без крайней необходимости. Если надо объявить глобальную переменную, которой нет в конфиге, пишите просто
Q_Ind_Close : BOOL ;
Смотрите обучающие видео на ютуб.https://www.youtube.com/watch?v=eSTmoNeLa7A&list=PL2EcVEe6E9SB4F3WVm-MptpHA5ep0nrq5

KIB52
23.01.2023, 13:32
Спасибо. До ОВЕНа приходилось заниматься со Шнайдеровскими Модиконами, а там, чтобы связать ПЛК с эконом-панелями Шнайдера приходилось использовать прямую адресацию переменных, иначе ни как. Сказались Шнайдеровские привычки.
Чтобы не заводить новую тему еще один вопрос по CoDeSys 2.3 и ПЛК110.
Сконфигурировал несколько дискретных входов и несколько дискр. выходов. Создал простенькое приложение в LD, как в обучающем видео, т.е. просто связал каждый вход с выходом. Подключился к ПЛК через USB B. , программка записалась. Нажал Старт. И на этом все остановилось. Впечатление такое, что программа не выполняется. Подаю сигнал на вход ПЛК, соответствующий светодиод загорается, но не подсвечивается вход в конфигурации и в теле программы не подсвечивается элемент программы привязанный к данному входу. С выходами та же ситуация. Переключатель на ПЛК в положение Работа. Что еще необходимо сделать?

kondor3000
23.01.2023, 13:52
Спасибо. До ОВЕНа приходилось заниматься со Шнайдеровскими Модиконами, а там, чтобы связать ПЛК с эконом-панелями Шнайдера приходилось использовать прямую адресацию переменных, иначе ни как. Сказались Шнайдеровские привычки.
Чтобы не заводить новую тему еще один вопрос по CoDeSys 2.3 и ПЛК110.
Сконфигурировал несколько дискретных входов и несколько дискр. выходов. Создал простенькое приложение в LD, как в обучающем видео, т.е. просто связал каждый вход с выходом. Подключился к ПЛК через USB B. , программка записалась. Нажал Старт. И на этом все остановилось. Впечатление такое, что программа не выполняется. Подаю сигнал на вход ПЛК, соответствующий светодиод загорается, но не подсвечивается вход в конфигурации и в теле программы не подсвечивается элемент программы привязанный к данному входу. С выходами та же ситуация. Переключатель на ПЛК в положение Работа. Что еще необходимо сделать?

Во первых подключитесь по изернету. USB часто глючит. Просто залив программу и нажав Старт, программа пишется в оперативную память. Для отладки этого достаточно. При перезагрузке программа сбросится. Для записи программы в ПЗУ нужно создать Загрузочный проект.
Почему у вас не работает, трудно сказать. Выкладывайте проект в расширенном режиме, возможно у вас что то не так с настройками либо не подключен или не правильно настроен слейв. И напишите точное название ПЛК.
Кроме того есть эмуляция работы, попробуйте проверить программу в ней.

KIB52
23.01.2023, 15:03
Похоже причина: старая версия таргет-файла. Имею ПЛК110-220.60P-L. При создании проекта установил таргет-файл PLC110.60-L, с сайта. ПЛК тогда еще на руках не было. Когда пришел ПЛК и после проб загрузить его система выдала сообщение о несовпадении целевой платформы. Установил таргет файл с диска, что шел с ПЛК. Название файла там PLC110.60-L v2. После установки нового таргет-файла программа стала загружаться но не выполнялась. Сейчас заново создал проект,но уже изначально с нужным таргет-фалом. Загрузил. Все работает.

kondor3000
23.01.2023, 15:11
Похоже причина: старая версия таргет-файла. Имею ПЛК110-220.60P-L. При создании проекта установил таргет-файл PLC110.60-L, с сайта. ПЛК тогда еще на руках не было. Когда пришел ПЛК и после проб загрузить его система выдала сообщение о несовпадении целевой платформы. Установил таргет файл с диска, что шел с ПЛК. Название файла там PLC110.60-L v2. После установки нового таргет-файла программа стала загружаться но не выполнялась. Сейчас заново создал проект,но уже изначально с нужным таргет-фалом. Загрузил. Все работает.

Тогда понятно, при замене целевой платформы и её применения, надо ещё нажать Дополнения, Стандартная конфигурация. Получите новый пустой таргет ПЛК. Прописать по новой нужные переменные и по новой накидать конфигурацию, если она была. Либо перенести конфиг. с помощью спец. программы.

KIB52
26.01.2023, 17:00
Спасибо за разъяснения.

KIB52
26.01.2023, 17:13
В CoDeSys 2.3 переменные в конфигурации и так глобальные, достаточно им дать имена и можно обращаться к ним из любого блока программы по имени.

Вопрос может показаться странным, но тем не менее. Переменные в конфигурации можно каким-либо образом объявить как retain переменные?

Николай Суриков
26.01.2023, 17:22
Вопрос может показаться странным, но тем не менее. Переменные в конфигурации можно каким-либо образом объявить как retain переменные?

Переменные объявленные в Slave являются retain.

kondor3000
26.01.2023, 17:50
Вопрос может показаться странным, но тем не менее. Переменные в конфигурации можно каким-либо образом объявить как retain переменные?

Про слейв уже сказали. В слейве все глобальные и retain.
Если нужна retain переменная не в слейве, то объявите её и присвойте на выходную переменную в Мастере. На вход присвоить нельзя.

KIB52
02.02.2023, 14:25
Спасибо. Еще один вопрос. Каким образом присвоить начальное значение переменной, объявленной в конфигурации ПЛК в подэлементе «ModBus (slave)»?

kondor3000
02.02.2023, 14:56
Спасибо. Еще один вопрос. Каким образом присвоить начальное значение переменной, объявленной в конфигурации ПЛК в подэлементе «ModBus (slave)»?

Сделать инициализацию при старте, главное в эту переменную Мастер ничего не должен записать.
Например так

IF NOT Init THEN
x1:=123 ;
Init :=TRUE ;
END_IF

1exan
02.02.2023, 15:00
Спасибо. Еще один вопрос. Каким образом присвоить начальное значение переменной, объявленной в конфигурации ПЛК в подэлементе «ModBus (slave)»?

Объявите её по тому адресу, который указан в конфигурации и укажите начальное значение:
Например:

iVar AT %QW8.1.0: INT := 12;

По команде
"Онлайн -> Сброс" переменной присвоится начальное значение

KIB52
02.02.2023, 15:42
Спасибо большое.