PDA

Просмотр полной версии : Нужна подсказка по программированию 63 контроллера



Rem77
02.10.2014, 08:54
Добрый день! Возникла необходимость на пустом месте быстро запустить "систему", головой которой является ПЛК 63. Контроллер увидел (вместе со средой программирования) в первый раз. Если с написанием и отладкой конфиги особых проблем не возникло, то встал в глухой тупор по созданию загрузочного проекта (закладка создать загрузочный проект не активна не в онлайне ни в офлане). Прошу подсказать, в чем проблематика (CoDeSys при закрытии проекта на ПК тоже ругается по поводу не созданного загрузочного проекта). Заранее благодарен.

lara197a
02.10.2014, 09:16
подключитесь к плк и загрузите проект

после этого активируется закладка "созд.з.пр.."

Rem77
02.10.2014, 09:26
не активируется, в этом и проблема

petera
02.10.2014, 10:07
не активируется, в этом и проблема
Это особенность ПЛК63/73. Для них не нужно делать загрузочный проект.
14591

Rem77
02.10.2014, 10:09
Спасибо! Тогда пойду посмотреть, чего система не завелась - голову конфигурил отдельно от шкафа управления.

ASo
02.10.2014, 11:32
После загрузки нажмите F5.

Rem77
13.10.2014, 07:00
Коллеги, все также нужна подсказка. Проект вполне себе благополучно работает в режиме эмуляции (сделал несколько вариантов в LD и СFC). При загруженном проекте в ПЛК 63М (версия РРРРР) не работает ни одна версия. Должно использоваться три выхода, не управляется ниодин по факту. Должны быть BOOL, (напрмер задал адрес VKL_KM AT %QD0.1.0: BOOL), не могу сообразить, какие значения присвоить для Outputs FIX (с его REAL параметрами).
Вопрос номер 2: какие адреса могут быть присвоены битовой глобальной переменной, чтоб организовать архив в контроллере
Вопрос номер 3: можно пример простейшей программы для вывода значений на жки для:
AT %ID0.2.0: REAL;
AT %IX0.0.0.0: BOOL;
AT %QD0.1.0: BOOL
После омронов на ПЛК63 у меня что то с фантазией не заладилось :(

Rem77
13.10.2014, 09:12
с вопросом один разобрался - нужно было на логический BOOL еще прицепит BOOL_TO_REAL для выхода.

lara197a
13.10.2014, 09:22
ShowString(0, 0, 0, 'Tбанок:'); (*выводим строку"Тбанок"*)
ShowReal(0,8,0,' %2.1f ' , Banki); (*выводим значение переменной Banki типа флоат 2-а знака до запятой 1-н после *)
ShowString(0, 14, 0, 'C '); (*добавляем после переменной C'*)

Валенок
13.10.2014, 09:43
Не проще : ShowReal(0,0,'Тбанок:%2.1f C',Banki); ?


PS
i := i + 1; (*увеличиваем i на единицу*)
Всегда радуют коментарии )))

Rem77
13.10.2014, 10:15
:(


не компилируется - пишет не определены идентификаторы ShowReal, ShowString /Но СПАСИБО! а с архивацией поможет кто нибудь?

lara197a
13.10.2014, 12:21
Не проще : ShowReal(0,0,'Тбанок:%2.1f C',Banki); ?


PS
i := i + 1; (*увеличиваем i на единицу*)
Всегда радуют коментарии )))

Вообще это просто пример, разные переменные показать...

lara197a
13.10.2014, 12:25
:(


не компилируется - пишет не определены идентификаторы ShowReal, ShowString /Но СПАСИБО! а с архивацией поможет кто нибудь?

Нужно добавить библиотеки Овен, для работы с экраном. И объявить переменные. Архивировать на плк 63/73 бессмысленно. Нет энергонезависимой памяти.

Валенок
13.10.2014, 13:04
Память энергонезависимая - есть. Маленькая только. Смастерить архивчик на несколько десятков параметров - можно.

Rem77
13.10.2014, 13:59
да мне три дискреты только и нужно архивировать.следить за шалыми ручками оперативного персонала. библиотеки экрана как называются? вроде все что в примерах были подшил.

Валенок
13.10.2014, 14:22
ind_mode, work_mode, syslibtime, 440 байт ретайна.
Дальше - сами. Или мы за Вас есть будем )))

lara197a
13.10.2014, 14:28
создайте массив и пишите в него события со сдвигом.
Если добавить еще дату и время, то тогда создайте структу, а из не массив.
Но это буквально чуть-чуть. 448 байт, а не кБ, как написано на сайте.
TYPE frx :
STRUCT
Den:BYTE;
Mesiac:BYTE;
God:BYTE;
N_Pp:BYTE; (*номер записи по порядку*)
Num1:BOOL; (var1*)
Num2:BOOL; (var2*)
Num3:BOOL; (var3*)
END_STRUCT
END_TYPE
1 запись займет примерно 10 байт в памяти.

Валенок
13.10.2014, 15:20
)))
Den - 5 бит
Mesiac - 4 бита
God - 4 бита
Num1..3 - 3 бита
Итого : 2 байта

И пара функций pack/unpack в/из структуры lara197a размером в 8 байт

PS
Ну а 3 дискрета замечательно пакуются и в 2 бита.

lara197a
13.10.2014, 16:18
)))
Den - 5 бит
Mesiac - 4 бита
God - 4 бита
Num1..3 - 3 бита
Итого : 2 байта

И пара функций pack/unpack в/из структуры lara197a размером в 8 байт

PS
Ну а 3 дискрета замечательно пакуются и в 2 бита.

Прямо RAR или ZIP :confused:
Даже год всего одной цифрой пишется.(16 уже не уместить)
Просто диву даешься сметливости нашего человека.
А если дату не писать, а использовать присваивание номера от 1 до 31, в соответствии датой.
Можно как раз уложиться в 1 байт.
К примеру:
31 число- это 5 бит.
и 3 тревоги-2 бита.
ИТОГО:-7 бит.
Но из 2-х бит есть риск не разобрать сработал к примеру датчик 1и2 или 1и3 или 2и3 и т.д.
Поэтому оставляем для "тревог" все 3 оставшиеся бита.
УРА, теоретически 448 записей можно сделать!
(что только в голову от безделья не придет)

Валенок
13.10.2014, 19:14
Даже год всего одной цифрой пишется.(16 уже не уместить)

А зачем больше 15 ? И 7 - с лихвой. ПЛК столько проживет ? Уговорили - проживет )) ТС нужна будет инфа от том что 11 лет назад сработал датчик перегрева ?

Видел рекламу каких-то выключателей (ручных). Мужик с суровым лицом говорил - 1000000 переключений гарантировано. П-ц полный. А я вот продаю резинку для трусов. Гарантирую 1000000 оттягиваний. Будут ли эти трусы носить мои правнуки - вопрос.


Но из 2-х бит есть риск не разобрать сработал к примеру датчик 1и2 или 1и3 или 2и3 и т.д.
Поэтому оставляем для "тревог" все 3 оставшиеся бита.

Про риск не понял. Для фиксации любой из 3х аварий и дальнейшего разбора "какая авария" достаточно 2х бит.
А третий бит - бонус. Пойдет для фиксации 8-ми аварий. Например факты включения/выключения эл.питания - актуально бывает. ТС об этом думал ? ))))

Год - реально не нужен. Месяц/день/час/минута - вполне.


УРА, теоретически 448 записей можно сделать!
(что только в голову от безделья не придет)

Теоритически - можно почти килобайт сохранить ))))

lara197a
13.10.2014, 20:41
Я не полагал все это для серьезного восприятия.
И примеры для примера, а не как самый оптимальный и правильный вариант, а по элементам, для доходчивости.
Что бы чел понял откуда, что берется и куда дЮёЦа.
:D
Вот верно замечено. описался не 448, а в 2 раза больше.....

приборист
13.10.2014, 20:42
А для кого то отсутствие возможности инвертировать текст в ПЛК63 уже кажется древностью и отстоем :D

А тут архивы на 440 байтах :)

Rem77
14.10.2014, 07:33
А для кого то отсутствие возможности инвертировать текст в ПЛК63 уже кажется древностью и отстоем :D

А тут архивы на 440 байтах :)
полная древность 63, но , к сожалению, нашлась пара тройка систем, где они стоят, а подрядчик с позором убежал. Т.к. задача подконтрольна гос.органам в преддверии оеннезимнего периода, пришлось экстренно осваивать кодесис и "лавку древностей".
по экрану у меня в конце концов получилось так:
описат.часть
VAR


IndString: STRING(20) := 'Улица';
Format: STRING(10) := '%2.1f';
TerM AT %ID0.2.0: REAL;
VKLUCHITH AT %QD0.1.1: REAL;
Alarm_Pitanie AT %IX0.0.0.1: BOOL;
STR1:STRING(20) :='обогрев включен;
STR2:STRING(20) :='обогрев отключен';
STR3:STRING(25) :='проверь питание';
END_VAR

тело
ShowString(0, 0, 0, IndString);
ShowReal(0,8,0,' %2.1f ' , TerM);
ShowString (0, 14, 0, 'C ');
IF VKLUCHITH=1 THEN
ShowString (0, 0, 1, STR1);
ELSE
ShowString (0, 0, 1, STR2);
END_IF
IF VKLUCHITH=1 AND Alarm_Pitanie=1 THEN
ShowString (0, 0, 1, STR3);
END_IF

если не поленюсь прикрутить архив, то прикручу еще второй экран для перемотки сообщений.

Валенок
14.10.2014, 10:12
..полная древность 63..
Когда нужно забить гвоздь, а забивающий жалицца на древность молотка - забивающему лучше что-то поменять в жизни

Если проектант заложил только 63й когда надо а-а-агромные архивы - проектант м-к
Если проектант заложил "супер-ЭВМ с сенсорной панелью с 100^500 цветами с 100^500 ТБ для архива" для простенькой приточки - проектант банальный разводила.
Если автоматчику потребовалось допилить существующую систему с 63-им, а он видит его параметры и начинает плакать - "ой-ой горюшко, всё пропало, ничего не сделать... кнопочки-то тут - с левой стороны.. а строчечек на экранчике-то тут 2, а я-то на фоточке показал 5..", то опытный хирург поможет улучшить танцевальные возможности.

63-й по возможностям избыточно перекрывает 99% задач малой автоматизации.

to Rem77
А тот волшебный ПЛК с фотки - в состоянии одновременно подключить 2xPt1000,1xPt100,2x4-20мА,3x0-1В или же он полный аццтой ?

Rem77
14.10.2014, 12:46
не собирался ни кому наступать на мазоль, да и за помощь СПАСИБО! Согласен, что 63 избыточно перекрывает задачи малой автоматизации. Просто очень хотелось бы иметь встроенный модуль чистых выходных дискрет на "палубе", да и описание под него слабовато - много приходится на ощупь делать.

Валенок
14.10.2014, 15:52
хотелось бы иметь встроенный модуль чистых выходных дискрет на "палубе"А ничего что на 63 могут быть Ao ? А платформа при этом - одна и та же. А комбинации out могут быть любыми - вы предлагает кучу платформ иметь ?


чистых выходных дискрет
А зачем ? "Чистому алгоритму" без разницы как исполнены дискреты.

Rem77
14.10.2014, 16:12
не побили и то хорошо :) . если не сложно, прошу подсказки - как и через что обращаться к структуре архивируемых данных?
разобраться времени не хватило, т.к. ввиду рукозадости подрядчиков пришлось и шкафу кишки перетряхнуть целиком. В принципе система работает, но остался академический интерес.

Валенок
14.10.2014, 17:34
А для чего нужно к ним обращаться ?

Rem77
14.10.2014, 18:30
есть мысль обращаться через кнопку меню и прокрутку, т.е. по нажатию кнопки меню переходить на второй экран и читать сообщения.

Алексей Дмитриев
16.10.2014, 14:47
Кнопочки все доступны из программы, экраны тоже можно переключать - читайте описание библиотеки работы с экранчиком - все там довольно тривиально.

lara197a
16.10.2014, 15:02
Переключение экранов, с использованием функциональных клавиш F1..F3
IF Klava=1 THEN (*F1*)
SetWorkScreen(ScreenNumber:=0);
ELSIF
Klava=2THEN (*F2*)
SetWorkScreen(ScreenNumber:=1);
ELSIF
Klava=256 THEN (*F3*)
SetWorkScreen(ScreenNumber:=2);
END_IF

аналогично через CASE

Rem77
16.10.2014, 18:06
спасибо, как работать с "мордочкой" я разобрался - не соображу как обращение к архиву сделать

Валенок
16.10.2014, 21:15
А для чего нужно к нему обращаться ?
(дежа вю какое-то)

Rem77
17.10.2014, 14:42
А для чего нужно к нему обращаться ?
(дежа вю какое-то)
архив нужен для того чтоб был, или для того. чтоб персонал имел возможность просмотреть его?

Валенок
21.10.2014, 19:17
Если просматривать - что нужно видеть ?

Rem77
22.10.2014, 16:42
Если просматривать - что нужно видеть ?
Сообщения о двух дискретных сигналах с перемоткой, глубина архива неделя. Шкаф живет локальных сам по себе. Нужно видеть сигнал по неисправности питания и переходу ключа на ручное

lara197a
22.10.2014, 20:10
ну дак по форуму поищите и вверх посмотрите, я ложил готовое.

Валенок
22.10.2014, 22:23
Сообщения о двух дискретных сигналах с перемоткой, глубина архива неделя
Видите - есть и готовое. Тем не менее -экран текстовый 2x16, пример экрана ?

приборист
22.10.2014, 22:29
Какая тема интересная, у ТС выпытывают информацию ;)

Кстати можно сделать отдельный экран, Аварии и по фронтам кнопок вверх и вниз сделать карусельку.
Ну или 1 строку в карусельку :
Аварии
ON хх:yy aa.bb

Я думаю за неделю листать не устанешь :cool:

Rem77
23.10.2014, 10:06
Какая тема интересная, у ТС выпытывают информацию ;)

Кстати можно сделать отдельный экран, Аварии и по фронтам кнопок вверх и вниз сделать карусельку.
Ну или 1 строку в карусельку :
Аварии
ON хх:yy aa.bb

Я думаю за неделю листать не устанешь :cool:

дельная мысль прилепить перемотку по фронту сигнала