Просмотр полной версии : Объявление переменных в CoDesys v2.3
Добрый день. Волею судеб пришлось заниматься программированием ПЛК110 в CoDeSys2.3. При объявлении адресных глоб. переменных столкнулся с сообщением компилятора об ошибках. Не могли бы специалисты пояснить что не устраивает компилятор. Прикладываю скрин. Заранее благодарен.65229
Добрый день. Волею судеб пришлось заниматься программированием ПЛК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
Спасибо. До ОВЕНа приходилось заниматься со Шнайдеровскими Модиконами, а там, чтобы связать ПЛК с эконом-панелями Шнайдера приходилось использовать прямую адресацию переменных, иначе ни как. Сказались Шнайдеровские привычки.
Чтобы не заводить новую тему еще один вопрос по CoDeSys 2.3 и ПЛК110.
Сконфигурировал несколько дискретных входов и несколько дискр. выходов. Создал простенькое приложение в LD, как в обучающем видео, т.е. просто связал каждый вход с выходом. Подключился к ПЛК через USB B. , программка записалась. Нажал Старт. И на этом все остановилось. Впечатление такое, что программа не выполняется. Подаю сигнал на вход ПЛК, соответствующий светодиод загорается, но не подсвечивается вход в конфигурации и в теле программы не подсвечивается элемент программы привязанный к данному входу. С выходами та же ситуация. Переключатель на ПЛК в положение Работа. Что еще необходимо сделать?
kondor3000
23.01.2023, 13:52
Спасибо. До ОВЕНа приходилось заниматься со Шнайдеровскими Модиконами, а там, чтобы связать ПЛК с эконом-панелями Шнайдера приходилось использовать прямую адресацию переменных, иначе ни как. Сказались Шнайдеровские привычки.
Чтобы не заводить новую тему еще один вопрос по CoDeSys 2.3 и ПЛК110.
Сконфигурировал несколько дискретных входов и несколько дискр. выходов. Создал простенькое приложение в LD, как в обучающем видео, т.е. просто связал каждый вход с выходом. Подключился к ПЛК через USB B. , программка записалась. Нажал Старт. И на этом все остановилось. Впечатление такое, что программа не выполняется. Подаю сигнал на вход ПЛК, соответствующий светодиод загорается, но не подсвечивается вход в конфигурации и в теле программы не подсвечивается элемент программы привязанный к данному входу. С выходами та же ситуация. Переключатель на ПЛК в положение Работа. Что еще необходимо сделать?
Во первых подключитесь по изернету. USB часто глючит. Просто залив программу и нажав Старт, программа пишется в оперативную память. Для отладки этого достаточно. При перезагрузке программа сбросится. Для записи программы в ПЗУ нужно создать Загрузочный проект.
Почему у вас не работает, трудно сказать. Выкладывайте проект в расширенном режиме, возможно у вас что то не так с настройками либо не подключен или не правильно настроен слейв. И напишите точное название ПЛК.
Кроме того есть эмуляция работы, попробуйте проверить программу в ней.
Похоже причина: старая версия таргет-файла. Имею ПЛК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. После установки нового таргет-файла программа стала загружаться но не выполнялась. Сейчас заново создал проект,но уже изначально с нужным таргет-фалом. Загрузил. Все работает.
Тогда понятно, при замене целевой платформы и её применения, надо ещё нажать Дополнения, Стандартная конфигурация. Получите новый пустой таргет ПЛК. Прописать по новой нужные переменные и по новой накидать конфигурацию, если она была. Либо перенести конфиг. с помощью спец. программы.
В CoDeSys 2.3 переменные в конфигурации и так глобальные, достаточно им дать имена и можно обращаться к ним из любого блока программы по имени.
Вопрос может показаться странным, но тем не менее. Переменные в конфигурации можно каким-либо образом объявить как retain переменные?
Николай Суриков
26.01.2023, 17:22
Вопрос может показаться странным, но тем не менее. Переменные в конфигурации можно каким-либо образом объявить как retain переменные?
Переменные объявленные в Slave являются retain.
kondor3000
26.01.2023, 17:50
Вопрос может показаться странным, но тем не менее. Переменные в конфигурации можно каким-либо образом объявить как retain переменные?
Про слейв уже сказали. В слейве все глобальные и retain.
Если нужна retain переменная не в слейве, то объявите её и присвойте на выходную переменную в Мастере. На вход присвоить нельзя.
Спасибо. Еще один вопрос. Каким образом присвоить начальное значение переменной, объявленной в конфигурации ПЛК в подэлементе «ModBus (slave)»?
kondor3000
02.02.2023, 14:56
Спасибо. Еще один вопрос. Каким образом присвоить начальное значение переменной, объявленной в конфигурации ПЛК в подэлементе «ModBus (slave)»?
Сделать инициализацию при старте, главное в эту переменную Мастер ничего не должен записать.
Например так
IF NOT Init THEN
x1:=123 ;
Init :=TRUE ;
END_IF
Спасибо. Еще один вопрос. Каким образом присвоить начальное значение переменной, объявленной в конфигурации ПЛК в подэлементе «ModBus (slave)»?
Объявите её по тому адресу, который указан в конфигурации и укажите начальное значение:
Например:
iVar AT %QW8.1.0: INT := 12;
По команде
"Онлайн -> Сброс" переменной присвоится начальное значение
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot