Пытаю ПЛК100 и ИП320(как мастер). Очень расстроен отсутствием в ПЛК100 менеджера рецептов (((( с сименсом проще получалось. Подскажите пожалуйста как правильно организовать работу с рецептами. Может у кого пример есть. Буду очень благодарен !!!
Вид для печати
Пытаю ПЛК100 и ИП320(как мастер). Очень расстроен отсутствием в ПЛК100 менеджера рецептов (((( с сименсом проще получалось. Подскажите пожалуйста как правильно организовать работу с рецептами. Может у кого пример есть. Буду очень благодарен !!!
1. На сколько понимаю - рецепт - это просто массив данных. Который присваивается по значению одной переменной другим переменным. Или нет?
Если не сложно - скиньте скрины или описания как это реализовано у Семена на a.nikolaev@owen.ru
Там все так просто. В несколько строк строк помещается:
FOR cN:=0 TO N DO (*Начинаем поиск от 0 до N*)
IF......(что ищем, как нашли, то exit)
.....
cn:=cN+1;(приращение номера при поиске)
EXIT; (*прерываем поиск*)
END_IF
END_FOR
Это если данных очень много.
А если у Вас простенько, то создайте структуру(если данные разнотипные).
Затем объявите массив из структуры.
И к примеру по номеру в этом массиве присваивайте значения текущим данным.
ну или в пику сименсу возьмите к примеру можно взять панель подороже, с готовыми рецептами.
Хотя я лично проблем не вижу. тут используются самые простые операции присваивания и выбора.
Рецептов всего 15. Количество параметров (переменных) 5 в каждом. На экране номера, каждому присвоен свой рецепт, в каждом рецепте 5 изменяемых переменных, при нажатии клавиши с присвоенным номером ...загрузка требуемого набора рабочих параметров.
В мануале Codesys есть менеджер создания рецептов....только не для ПЛК (((((.
Можно их реализовать на CFC (FB) ?
Ткните носом в пример .... если есть.
Можно, но лучше на ST.
Подойдут функции Casse и IF.
Упрощенно типа так:
IF Prog=1 THEN
VDK_p:=VDK1;
ELSIF Prog=2 THEN
VDK_p:=VDK2;
.......
ELSE
VDK_p:=0;
END_IF
И далее для следующей переменной.
Если присваивание и чтение делать через цикл FOR и команду exit, то это значительно сократит код, хотя смысл будет тем же. Если хотите, то разберетесь.
Не разберетесь -пишите как выше "индийский" код.
Внутренне пр-во распределяет драйвер, этим и голову забивать не зачем.
Физические вх-вых, определены таргет файлом. Посмотреть в конфигурации ПЛК.
Я не правильно вопрос задал (
к примеру
OUT0_WORD AT %QW9.1.0.0: WORD;
OUT1_WORD AT %QW9.1.1.0: WORD;
OUT2_WORD AT %QW9.1.2.0: WORD;
OUT3_WORD AT %QW9.1.3.0: WORD;
взято из списка глобальных переменных....
Как (где) узнать (посмотреть) какие адреса регистров и битов компилятор назначил для этих выходов ???
В приведенном Вами указаны прямые адреса:
%QWx.x.x.x
(область выходов тип слово и номер в памяти )
Вам наверное не входы-выходы нужны, а сетевые регистры для обмена с панелью.
Если у Вас панель мастер, то в ПЛК в конфигурации создаете Модбас(слэйв), задаете ему адрес и остальные настройки. Добавляете нужное количество регистров. Нумерация как у регистров, так и у битов идет с 0. Можно вычислить номер бита для любого регистра.
регистр 0 биты 0 -- 15
регистр 1 биты 16 --31
регистр 2 биты 32 -- 47
регистр 3 биты 48 -- 63
и т.д.
Регистры можно обозвать в самой конфигурации и использовать их имена в программе.
Если нужен доступ к битам, можно обращаться через точку, как выше ребята подсказали.
Забудьте про регистры (V , D , M , T, C, X и Т.д) , неужели не понятно обращение к переменной по имени .
(*
OUT0_WORD AT %QW9.1.0.0: WORD; - адрес 0 для слэйва
OUT1_WORD AT %QW9.1.1.0: WORD; - адрес 1
OUT2_WORD AT %QW9.1.2.0: WORD;
OUT3_WORD AT %QW9.1.3.0: WORD; - адрес 3
*)
Только эта , ваша адресация не из модбас слэйва , а из модбас мастера .
И вообще есть тема с примерами программ и конфигураций.
А рецепты организуются легко при помощи массивов .
Всем большое спасибо за ответы !
Кто подскажет где в codesys посмотреть табличку такого вида.....
Вложение 12342Вложение 12343
Точно ! ПЛК100 по Модбас(слэйв)..... панель ИП320 по Модбас(мастер). В конфигураторе плк добавил нужное количество %QW и %XW и %QD . Теперь не могу посмотреть что назначено для использования в панели. Я понимаю что регистр 0 биты 0 -- 15 ! Где посмотреть это в codesys ? Не перебирать же на панели последовательно весь диапазон !
Ну Вы и "упертый":D
Вам же который раз говорят, что адреса регистров в модуле Modbus Slave соответствуют их порядковому номеру-1. И смотреть их нужно прямо в конфигурации ПЛК, там же и имена им присвоить можно и забыть про всякие "%QW и %XW и %QD"
http://www.owen.ru/forum/attachment....5&d=1395648726
Может так будет понятней?
http://www.owen.ru/forum/attachment....6&d=1395650820
1. Проект- компиляция
2. Проект- перекрестные ссылки.
И будет вам типа как в сименс.
Разница в том, что в КДС области переменных не имеют жестких адресов. их распределяет драйвер.
В сименсе каждая область(вх, вых, бит, ворд, д.ворд, таймеры, счетчики....) имеет строго отведенную ему область памяти.
При написании программы в ПЛК такая таблица не нужна. В программе Вы будете указывать имена переменных (Т.е. Parametr_1, Parametr_2, Knopka_1, Lampa_1 и т.д), а не их адреса. Используйте осмысленные названия переменных. Запоминать или выписывать их названия не обязательно.
Все переменные, имена которых объявлены в конфигурации, будут глобальными и всегда доступны через ассистент вода.
http://www.owen.ru/forum/attachment....7&d=1395657054
А вот для адресов регистров для элементов экрана панели можно в Exele табличку сделать
Вложение 12348
Была надежда что после компиляции можно это распределение посмотреть. Ну ничего ! И так приспособился )
В глобальных переменных правой кнопкой и "Объявления в форме таблицы" Вот оно ! Почти счастье )))
Вложение 12349
Там нужно ввести имя, и вам выдаст адреса.