PDA

Просмотр полной версии : ПЛК100 и ИП320 работа с рецептами



xaron
20.03.2014, 17:13
Пытаю ПЛК100 и ИП320(как мастер). Очень расстроен отсутствием в ПЛК100 менеджера рецептов (((( с сименсом проще получалось. Подскажите пожалуйста как правильно организовать работу с рецептами. Может у кого пример есть. Буду очень благодарен !!!

Николаев Андрей
21.03.2014, 09:10
1. На сколько понимаю - рецепт - это просто массив данных. Который присваивается по значению одной переменной другим переменным. Или нет?
Если не сложно - скиньте скрины или описания как это реализовано у Семена на a.nikolaev@owen.ru

lara197a
21.03.2014, 09:31
Там все так просто. В несколько строк строк помещается:
FOR cN:=0 TO N DO (*Начинаем поиск от 0 до N*)
IF......(что ищем, как нашли, то exit)
.....
cn:=cN+1;(приращение номера при поиске)
EXIT; (*прерываем поиск*)
END_IF
END_FOR

Это если данных очень много.
А если у Вас простенько, то создайте структуру(если данные разнотипные).
Затем объявите массив из структуры.
И к примеру по номеру в этом массиве присваивайте значения текущим данным.
ну или в пику сименсу возьмите к примеру можно взять панель подороже, с готовыми рецептами.

Хотя я лично проблем не вижу. тут используются самые простые операции присваивания и выбора.

xaron
22.03.2014, 11:37
Там все так просто. В несколько строк строк помещается:
FOR cN:=0 TO N DO (*Начинаем поиск от 0 до N*)
IF......(что ищем, как нашли, то exit)
.....
cn:=cN+1;(приращение номера при поиске)
EXIT; (*прерываем поиск*)
END_IF
END_FOR

Это если данных очень много.
А если у Вас простенько, то создайте структуру(если данные разнотипные).
Затем объявите массив из структуры.
И к примеру по номеру в этом массиве присваивайте значения текущим данным.
ну или в пику сименсу возьмите к примеру можно взять панель подороже, с готовыми рецептами.

Хотя я лично проблем не вижу. тут используются самые простые операции присваивания и выбора.

Рецептов всего 15. Количество параметров (переменных) 5 в каждом. На экране номера, каждому присвоен свой рецепт, в каждом рецепте 5 изменяемых переменных, при нажатии клавиши с присвоенным номером ...загрузка требуемого набора рабочих параметров.
В мануале Codesys есть менеджер создания рецептов....только не для ПЛК (((((.
Можно их реализовать на CFC (FB) ?
Ткните носом в пример .... если есть.

lara197a
22.03.2014, 12:21
Можно, но лучше на 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, то это значительно сократит код, хотя смысл будет тем же. Если хотите, то разберетесь.
Не разберетесь -пишите как выше "индийский" код.

xaron
22.03.2014, 12:59
Можно, но лучше на 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, то это значительно сократит код, хотя смысл будет тем же. Если хотите, то разберетесь.
Не разберетесь -пишите как выше "индийский" код.

Прошу прощения ...может вопрос не в тему..... Как в codesys посмотреть список адресации с привязкой к входам/выходам ?

lara197a
22.03.2014, 13:05
Внутренне пр-во распределяет драйвер, этим и голову забивать не зачем.
Физические вх-вых, определены таргет файлом. Посмотреть в конфигурации ПЛК.

xaron
22.03.2014, 13:47
Внутренне пр-во распределяет драйвер, этим и голову забивать не зачем.
Физические вх-вых, определены таргет файлом. Посмотреть в конфигурации ПЛК.

Я не правильно вопрос задал (
к примеру
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;
взято из списка глобальных переменных....
Как (где) узнать (посмотреть) какие адреса регистров и битов компилятор назначил для этих выходов ???

zendo057
22.03.2014, 14:01
Я не правильно вопрос задал (
к примеру
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;
взято из списка глобальных переменных....
Как (где) узнать (посмотреть) какие адреса регистров и битов компилятор назначил для этих выходов ???

По маске.Напр. out0_word,- первый бит out0_word.0 шестнадцатый бит out0_word0.15

xaron
22.03.2014, 15:18
По маске.Напр. out0_word,- первый бит out0_word.0 шестнадцатый бит out0_word0.15

Я так понимаю что в codesys нельзя посмотреть используемые регистры ?
Про маску регистров ничего не откопал ((( ща моцк взорвётся.

lara197a
22.03.2014, 17:37
В приведенном Вами указаны прямые адреса:
%QWx.x.x.x
(область выходов тип слово и номер в памяти )

amn
22.03.2014, 21:06
Я так понимаю что в codesys нельзя посмотреть используемые регистры ?
Про маску регистров ничего не откопал ((( ща моцк взорвётся.

Вам наверное не входы-выходы нужны, а сетевые регистры для обмена с панелью.
Если у Вас панель мастер, то в ПЛК в конфигурации создаете Модбас(слэйв), задаете ему адрес и остальные настройки. Добавляете нужное количество регистров. Нумерация как у регистров, так и у битов идет с 0. Можно вычислить номер бита для любого регистра.

регистр 0 биты 0 -- 15
регистр 1 биты 16 --31
регистр 2 биты 32 -- 47
регистр 3 биты 48 -- 63
и т.д.

Регистры можно обозвать в самой конфигурации и использовать их имена в программе.

Если нужен доступ к битам, можно обращаться через точку, как выше ребята подсказали.

Sergey666
22.03.2014, 22:02
Я так понимаю что в codesys нельзя посмотреть используемые регистры ?
Про маску регистров ничего не откопал ((( ща моцк взорвётся.

Забудьте про регистры (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
*)
Только эта , ваша адресация не из модбас слэйва , а из модбас мастера .
И вообще есть тема с примерами программ и конфигураций.
А рецепты организуются легко при помощи массивов .

xaron
24.03.2014, 10:04
Всем большое спасибо за ответы !
Кто подскажет где в codesys посмотреть табличку такого вида.....
1234212343

xaron
24.03.2014, 11:23
Вам наверное не входы-выходы нужны, а сетевые регистры для обмена с панелью.
Если у Вас панель мастер, то в ПЛК в конфигурации создаете Модбас(слэйв), задаете ему адрес и остальные настройки. Добавляете нужное количество регистров. Нумерация как у регистров, так и у битов идет с 0. Можно вычислить номер бита для любого регистра.

регистр 0 биты 0 -- 15
регистр 1 биты 16 --31
регистр 2 биты 32 -- 47
регистр 3 биты 48 -- 63
и т.д.

Регистры можно обозвать в самой конфигурации и использовать их имена в программе.

Если нужен доступ к битам, можно обращаться через точку, как выше ребята подсказали.

Точно ! ПЛК100 по Модбас(слэйв)..... панель ИП320 по Модбас(мастер). В конфигураторе плк добавил нужное количество %QW и %XW и %QD . Теперь не могу посмотреть что назначено для использования в панели. Я понимаю что регистр 0 биты 0 -- 15 ! Где посмотреть это в codesys ? Не перебирать же на панели последовательно весь диапазон !

petera
24.03.2014, 12:12
Точно ! ПЛК100 по Модбас(слэйв)..... панель ИП320 по Модбас(мастер). В конфигураторе плк добавил нужное количество %QW и %XW и %QD . Теперь не могу посмотреть что назначено для использования в панели. Я понимаю что регистр 0 биты 0 -- 15 ! Где посмотреть это в codesys ? Не перебирать же на панели последовательно весь диапазон !
Ну Вы и "упертый":D
Вам же который раз говорят, что адреса регистров в модуле Modbus Slave соответствуют их порядковому номеру-1. И смотреть их нужно прямо в конфигурации ПЛК, там же и имена им присвоить можно и забыть про всякие "%QW и %XW и %QD"
http://www.owen.ru/forum/attachment.php?attachmentid=12345&d=1395648726

petera
24.03.2014, 12:48
Может так будет понятней?
http://www.owen.ru/forum/attachment.php?attachmentid=12346&d=1395650820

xaron
24.03.2014, 13:56
Может так будет понятней?
http://www.owen.ru/forum/attachment.php?attachmentid=12346&d=1395650820

Спасибо ! Разжевали до нельзя !
В codesys табличном виде этого не посмотреть.
Только если на листочек переписать заранее или конфигурацию ПЛК держать открытой (

Откоментирую каждую строку ) чтоб не путаться. Нда......это не сименс )

lara197a
24.03.2014, 14:23
1. Проект- компиляция
2. Проект- перекрестные ссылки.
И будет вам типа как в сименс.
Разница в том, что в КДС области переменных не имеют жестких адресов. их распределяет драйвер.
В сименсе каждая область(вх, вых, бит, ворд, д.ворд, таймеры, счетчики....) имеет строго отведенную ему область памяти.

petera
24.03.2014, 14:34
Спасибо ! Разжевали до нельзя !
В codesys табличном виде этого не посмотреть.
Только если на листочек переписать заранее или конфигурацию ПЛК держать открытой (

Откоментирую каждую строку ) чтоб не путаться. Нда......это не сименс )
При написании программы в ПЛК такая таблица не нужна. В программе Вы будете указывать имена переменных (Т.е. Parametr_1, Parametr_2, Knopka_1, Lampa_1 и т.д), а не их адреса. Используйте осмысленные названия переменных. Запоминать или выписывать их названия не обязательно.
Все переменные, имена которых объявлены в конфигурации, будут глобальными и всегда доступны через ассистент вода.
http://www.owen.ru/forum/attachment.php?attachmentid=12347&d=1395657054
А вот для адресов регистров для элементов экрана панели можно в Exele табличку сделать
12348

xaron
24.03.2014, 15:25
При написании программы в ПЛК такая таблица не нужна. В программе Вы будете указывать имена переменных (Т.е. Parametr_1, Parametr_2, Knopka_1, Lampa_1 и т.д), а не их адреса. Используйте осмысленные названия переменных. Запоминать или выписывать их названия не обязательно.
Все переменные, имена которых объявлены в конфигурации, будут глобальными и всегда доступны через ассистент вода.
http://www.owen.ru/forum/attachment.php?attachmentid=12347&d=1395657054
А вот для адресов регистров для элементов экрана панели можно в Exele табличку сделать
12348

По глобальным переменным Понял. до таблички ехель сам допёр. Вам, уважаемый надо книги писать по использованию codesys ! Очень информативно !

xaron
24.03.2014, 15:58
1. Проект- компиляция
2. Проект- перекрестные ссылки.
И будет вам типа как в сименс.
Разница в том, что в КДС области переменных не имеют жестких адресов. их распределяет драйвер.
В сименсе каждая область(вх, вых, бит, ворд, д.ворд, таймеры, счетчики....) имеет строго отведенную ему область памяти.

Была надежда что после компиляции можно это распределение посмотреть. Ну ничего ! И так приспособился )

В глобальных переменных правой кнопкой и "Объявления в форме таблицы" Вот оно ! Почти счастье )))

12349

lara197a
24.03.2014, 16:38
Там нужно ввести имя, и вам выдаст адреса.