PDA

Просмотр полной версии : Ввод уставок в ПЛК73



AndreyAPG
24.01.2012, 09:30
Добрый день.
Задача следующая - ввести 4 значения: два в формате INT и две уставки времени для таймеров (те, которые будут на входе PT).
Пример "Редактирование уставок" есть, но там для одной уставки, а поскольку я до этого работал только с контроллерами SIEMENS, то вопросов много....
Начать с того, как мне сказать, что у меня будет несколько экранов для ввода параметров?

IF NOT starting THEN (*то что выполняется один раз при запуске программы*)
SetWorkScreenCount(ЗДЕСЬ???);
Как ввести значение в формате TIME?
Для того, чтобы можно было зайти в режим редактирования достаточно будет вставить этот код в программу (и соответствующие библиотеки Int_Mode.lib и Work_Mode.lib)?

ft(clk:=kbrd=key); (*если пользователь нажал заданное сочетание клавиш*)
IF ft.Q THEN (*отработаем по отпусканию клавиш*)
flag:=TRUE; (*установим флаг первой стадии редактирования*)
flag1:=TRUE; (*и флаг необходимости переключения в single_mode*)
END_IF
IF flag THEN (*первая стадия редактирования*)
IF flag1 THEN (*если необходимо переключение в single_mode*)
Switch_To_Single_Mode(); (*осуществим переключение в single_mode*)
flag1:=FALSE; (*сбросим флаг необходимости перехода в single_mode*)
END_IF
ton2(in:=TRUE,pt:=t#1000ms); (*с момента запроса перехода в режим редактирования подождём 1000 мс*)
IF ton2.Q THEN (*1000 мс прошло?*)
Switch_To_EDITOR(pnode_); (*переключаемся в режим редактора*)
flag:=FALSE; (*сбрасываем флаг первой стадии редактирования*)
flag2:=TRUE; (*устанавливаем флаг второй стадии редактирования*)
ton2(in:=FALSE,pt:=t#1000ms); (*сбрасываем таймер ton2*)
END_IF
END_IF
IF flag2 THEN (*последняя стадия -- отслеживаем редактирование*)
dm:=Get_Display_Mode(); (*в dm занесём текущий режим*)
IF dm<>editor_mode THEN (*пользователь вышел из редактирования? тогда в dm будет single_mode*)
ton2(in:=TRUE,pt:=t#1000ms); (*подождём после выхода 1000 мс*)
IF ton2.Q THEN (*1000 мс прошло?*)
Switch_To_PREV_Mode(); (*переключаемся в предыдущий режим. То есть в work_mode*)
flag2:=FALSE; (*сбросим флаг второй стадии редактирования*)
ton2(in:=FALSE,pt:=t#1000ms); (*сбросим таймер ton2*)
END_IF
END_IF
END_IF
Как с панели контроллера перейти в режим редактирования? В программе указано сочетание:

key:BYTE:=136; (*код сочетания альт+стрелка вверх*)
Это можно изменить или это стандартная комбинация?
И как получить доступ к функциональным клавишам Ф1, Ф2, Ф3?
В документе РП ПЛК63.73 для ПЛК73 состояние клавиатуры WORD и значения:
http://s018.radikal.ru/i510/1201/54/150626e8f64d.jpg (http://www.radikal.ru)

swerder
24.01.2012, 09:57
значение в формате time вводить и не надо, вводите обычное число и уже в программе преобразовывайте в time
pt := t#1s * уставка_таймера;

ASo
24.01.2012, 10:15
1. Число экранов вводится в параметре WorkInd PLC Configuration
2. А чем Вас не устраивает ввод параметров через меню?
3. Слово состояния клавиатуры находится в Configurational-Additional

AndreyAPG
24.01.2012, 10:18
Ээээ, собственно:
1. Как преобразовать в INT в time?
2. Ввод параметров через меню очень даже устроит. Что это за меню, как к нему получить доступ? Какие параметры будут доступны для изменения?
Нужно ли для этого добавлять код, который я указывал?
3. Какой код для клавиш Ф1, Ф2, Ф3?

ASo
24.01.2012, 10:36
1. Как преобразовать в INT в time?Какой инт в какой тайм? См. далее

2. Ввод параметров через меню очень даже устроит. Что это за меню, как к нему получить доступ? Какие параметры будут доступны для изменения? Ээээ.
У вас в PLC Conf. есть три слота для задания параметров. Вот в них и постройте стандартное древовидное меню. Дам есть параметры для даты и времени и есть функции в ОВЕНовских библиотеках для преодразования в системный формат.

3. Какой код для клавиш Ф1, Ф2, Ф3?
Что вы называете кодом? Считайте указанный в 7.3.5 параметр, и возьмите соответствующий бит

swerder
24.01.2012, 10:38
var
pt: time;
timer_ust: int;
end_var

pt := t#1s * max(0,timer_ust); (* где t#1s - задаваемый минимальный интервал времени *)

AndreyAPG
24.01.2012, 10:58
Так, более понятно, вроде.
Я добавляю ветки в конфигурации ПЛК:
http://s018.radikal.ru/i517/1201/ec/a36429dce888.jpg (http://www.radikal.ru)
Доступ в программе к этим параметрам будет в таком виде:

IF rr < ryad
А вот с time..
О какой библиотеке идёт речь?
У меня есть вот эти (скачал с сайта ОВЕН):
Arm7_Specific.lib
ComService.lib
Ind_Mode.lib
ModBus.lib
Owen_FB.lib
OwenNet.lib
Pid_Reg2.lib
Sound.lib
Work_Mode.lib
Время в ветке имеет тип TimeP с форматом ЧЧ:ММ:СС, а мне надо просто секунды, да желательно с миллисекундами....
При этом вот этот код мне для редактирования параметров не нужен будет, я правильно понимаю?

ft(clk:=kbrd=key); (*если пользователь нажал заданное сочетание клавиш*)
IF ft.Q THEN (*отработаем по отпусканию клавиш*)
flag:=TRUE; (*установим флаг первой стадии редактирования*)
flag1:=TRUE; (*и флаг необходимости переключения в single_mode*)
END_IF
IF flag THEN (*первая стадия редактирования*)
IF flag1 THEN (*если необходимо переключение в single_mode*)
Switch_To_Single_Mode(); (*осуществим переключение в single_mode*)
flag1:=FALSE; (*сбросим флаг необходимости перехода в single_mode*)
END_IF
ton2(in:=TRUE,pt:=t#1000ms); (*с момента запроса перехода в режим редактирования подождём 1000 мс*)
IF ton2.Q THEN (*1000 мс прошло?*)
Switch_To_EDITOR(pnode_); (*переключаемся в режим редактора*)
flag:=FALSE; (*сбрасываем флаг первой стадии редактирования*)
flag2:=TRUE; (*устанавливаем флаг второй стадии редактирования*)
ton2(in:=FALSE,pt:=t#1000ms); (*сбрасываем таймер ton2*)
END_IF
END_IF
IF flag2 THEN (*последняя стадия -- отслеживаем редактирование*)
dm:=Get_Display_Mode(); (*в dm занесём текущий режим*)
IF dm<>editor_mode THEN (*пользователь вышел из редактирования? тогда в dm будет single_mode*)
ton2(in:=TRUE,pt:=t#1000ms); (*подождём после выхода 1000 мс*)
IF ton2.Q THEN (*1000 мс прошло?*)
Switch_To_PREV_Mode(); (*переключаемся в предыдущий режим. То есть в work_mode*)
flag2:=FALSE; (*сбросим флаг второй стадии редактирования*)
ton2(in:=FALSE,pt:=t#1000ms); (*сбросим таймер ton2*)
END_IF
END_IF
END_IF

ASo
24.01.2012, 11:19
Тогда задайте в меню время, как Float с точностью до 3-х знаков после запятой. В программе переведете в нужный формат, если будет нужно. А скорее всего - нет

AndreyAPG
24.01.2012, 11:25
По-поводу времени попробую.
Код? Код, в программе

ft(clk:=kbrd=key); (*если пользователь нажал заданное сочетание клавиш*)
IF ft.Q THEN (*отработаем по отпусканию клавиш*)
flag:=TRUE; (*установим флаг первой стадии редактирования*)
flag1:=TRUE; (*и флаг необходимости переключения в single_mode*)
END_IF
IF flag THEN (*первая стадия редактирования*)
IF flag1 THEN (*если необходимо переключение в single_mode*)
Switch_To_Single_Mode(); (*осуществим переключение в single_mode*)
flag1:=FALSE; (*сбросим флаг необходимости перехода в single_mode*)
END_IF
.................... нужен будет или нет?
Или и без этого кода будет доступ к меню и возможность редактирования параметров?

ASo
24.01.2012, 11:32
Не понял вопроса.
1. Доступ на чтение из меню - он очевиден. Присвоили переменную в конфигураторе - и читаем.
2. Редактирование оператором производится встроенной ПО ПЛК.
3. Редактирование из программы - возможно, но за несколько шагов. И по изменению величины - она сохраняется во Флэшь, можно "протереть".

AndreyAPG
24.01.2012, 11:40
Всё, теперь ясно.
Для того, чтобы можно было вводить параметры, достаточно их добавить в конфигурацию ПЛК, в SubMenu.
Код из программы убираю.

Благодарю за оперативную помощь и подробные ответы.
После обеда буду на объекте и начну "мучать" ПЛК и мучаться сам :-)

Николаев Андрей
25.01.2012, 08:50
А что за объект?
Расскажите плиз о результатах мучений :)

AndreyAPG
25.01.2012, 10:02
Отсадочная машина.

А теперь о результатах мучений:
1. Поскольку на ноуте СОМ-порта нет, то покупался (и купился) "конвертер USB-СОМ", естессно "Мадэ ин Чайна"...., но суть не в этом...
Для того, чтобы подключиться к ПЛК пришлось немного "потанцевать с бубном". Настройки СОМ (в устройствах ПК) выставили на скорость 115200, битов 8, в настроках CoDeSys всё точно так же, СОМ указали нужный, но! периодически вылетает "Ошибка связи #0 произошло отключение", правда, насколько я понимаю, это уже проблемы самой винды, а не среды разработки и ПЛК.
2. target файл был взят с диска, который шёл с ПЛК в коробке. ПЛК ещё не юзаный был, неделя, может чуть больше, как заказчик его купил.
ПЛК 73-КККК РРРР-L. После установки конфигурационного файла я в железе вижу следующее:
http://s53.radikal.ru/i141/1201/a1/335356b4f3ab.jpg (http://www.radikal.ru)
DInputs - понятно, дискретные входа
Outputs - аналоговые выходы?
AInputs - аналоговые входы.
MR1_Outputs - дискретные выходы?
Но!
При подключение к ПЛК, в онлайн вижу, что программа устанавливает определённые выходы:
http://s018.radikal.ru/i511/1201/d2/12f068503fe7.jpg (http://www.radikal.ru)
А вот когда тестером, на прозвонке, электронщик садится на выходы, согласно документа "РЭ ПЛК73" (который опять таки шёл с ПЛК), к примеру DO5 клеммы 31-32, то "звонилка" не работает. Я ему говорю что надо к этим выходам подключить реле, а он на меня смотрит с ухмылкой и говорит, чтобы я искал в программе проблему. Кто прав?
3. Пока не установил "Разрешить изменение значения по сети"
http://s61.radikal.ru/i171/1201/85/f6292ff1a74e.jpg (http://www.radikal.ru)
С панели не мог вводить значения, так и должно быть?
4. Как сделать вывод текста в несколько строк?

AndreyAPG
25.01.2012, 11:39
Вопрос 4 снимается, с выводом в несколько строк разобрался.
А вот 2 и 3 так и остались загадкой.....
Неужели ни у кого не было подобного?

AndreyAPG
26.01.2012, 11:32
Тема закрыта, благодарю ответивших.