PDA

Просмотр полной версии : ПЛК63 время



JIexa21
23.03.2011, 10:04
Всем привет!!!
Есть какая-нибудь простая библиотека с простой функцией для получения текущего времени контролера ПЛК63 в формате TOD? Без всяких извратов с curtimeex и т.д.. Она еще в эмуляторе не работает ниразу. Что за маразмы с "тут работаю, тут нет"?
А то скоро мозг себе сломаю, т.к. запасного контроллера нет, а до рабочего идти с ноутом далековато и неудобно там сидеть... Уже начинаю скучать по степ7 и сименсу - там и эмулятор работает нормально, и флексибл, и проект можно полностью отладить в эмуляторах и сразу видеть то что будет на панели и что делает контроллер, а тут вечно какой-то геморрой. Чувствую что скоро выработаю стойкое отвращение к овенам.

Николаев Андрей
23.03.2011, 11:15
Ну мозг то ломать не стоит, можно просто немного разобратья.
1. Если Вам нужны просто часы, а не часы в ПЛК - пожалуйста - в библиотеке Util.lib есть блок RTC. Будет работать как с эмуляцией, так и без неё.
2. Если Вы хотите подключаться и считывать значение непосредственно с часов в самом ПЛК - сделать это в режиме эмуляции... как то странно на мой взгляд.
3. Однозначно работающей пример, чтобы Вы не ломали голову был сделан и выложен здесь:
http://www.owen.ru/forum/showpost.php?p=21405&postcount=39
4. Степ7 или CoDeSys - ИМХО дело привычки :) И с контроллерами ОВЕН связанно косвенно :)

kolyan
23.03.2011, 11:30
[QUOTE=Николаев Андрей;57355]Ну мозг то ломать не стоит, можно просто немного разобратья.
1. Если Вам нужны просто часы, а не часы в ПЛК - пожалуйста - в библиотеке Util.lib есть блок RTC. Будет работать как с эмуляцией, так и без неё.


Интересно, а я что-то не нашёл ни в описании ни в библиотеке этот блок "RTC"...

Николаев Андрей
23.03.2011, 12:01
Виноват, ошибся, не Util.lib а Standart.lib (которая вообще автоматически подключается) :)
Надо просто немного разобраться. ;)

JIexa21
24.03.2011, 12:43
В массив по таймеру записываю: время, текущую температуру, положение задвижек и еще несколько служебных параметров...
Вот с записью времени проблема: никак не могу вытащить... В эмуляторе всегда нули, перерыл доки, накатал, заливаю в контроллер - опять нули...
Пробовал и через CurTimeEx и как-то еще... Уже все варианты не помню...
И вот к примеру в ПЛК63 в выходах есть Additional - часы контроллера. Почему там тоже нули? Зачем тогда там вообще этот параметр?

А насчет степ7... Это пример как образец как надо делать софт, а овен - как не надо. :)) Вот такая косвенная связь. :))

И еще вопрос сразу в догонку:
как отключить переключение экранов по клавишам стрелок?
Хочу сделать свою навигацию.

Николаев Андрей
24.03.2011, 16:28
Очень рад, что Вы поклонник компании ОВЕН - это всегда приятно. :) Только вот CoDeSys - это не наша среда программирования, а немецкой компании 3S-Software. В общем то можно сказать пример как не надо делать - компании Wago, Beckhoff, Bosch, ABB, Moeller и еще 2 сотни
http://www.3s-software.com/index.shtml?en_Company_ref Ну может быть...

Как уже и писал: НЕЛЬЗЯ считать время из системных часов, если контроллер не подключен.
Интересно какие еще варианты Вы пробовали? Какие помните?
По поводу почему в конфигурации нули - надо разбираться.
Если Вы в Москве - подъезжайте к нам. Все расскажем, все покажем, всему научим. От нас уходят уже поклонниками CoDeSys ;)

Забыл про навигацию по индикации. Возможность самому организовывать индикацию есть: Для этого предусмотренны соответствующие режимы работы (для отображения и ввода) и 2 библиотеки.

kolyan
24.03.2011, 16:40
В массив по таймеру записываю: время, текущую температуру, положение задвижек и еще несколько служебных параметров...
Вот с записью времени проблема: никак не могу вытащить... В эмуляторе всегда нули, перерыл доки, накатал, заливаю в контроллер - опять нули...
Пробовал и через CurTimeEx и как-то еще... Уже все варианты не помню...
И вот к примеру в ПЛК63 в выходах есть Additional - часы контроллера. Почему там тоже нули? Зачем тогда там вообще этот параметр?

А насчет степ7... Это пример как образец как надо делать софт, а овен - как не надо. :)) Вот такая косвенная связь. :))

И еще вопрос сразу в догонку:
как отключить переключение экранов по клавишам стрелок?
Хочу сделать свою навигацию.

Поверьте, как раз-таки Степ7-это образец, как не надо делать софт!!!
А КоДеСис - как надо! Поработаете-узнаете!
А трудности - они поначалу у всех бывают.

JIexa21
24.03.2011, 23:00
Вообще уже не важно какие были варианты. Ни один не заработал. Надеюсь что пока... :)
И так и не ответили по поводу выхода с часами. Почему оттуда ничего не читается??? Проверял именно в контролере! Чисто логически это был бы самый простой способ, но он почему-то вообще никак не работает. Версия прошивки 1.94 (вроде) - была на диске с контроллером.

Теперь вернемся к библиотекам: как ни странно, но я их уже во всю использовал... В режиме workmode экраны переключаются стрелками. Я хочу убрать это переключение и самому обрабатывать когда какой экран вывести. Как там это можно сделать? Или тупо переводить в монопольный и там заново каждый раз формировать нужный экран?

Степ 7 хоть и громоздкий до безобразия, но как я уже писал выше - позволяет полностью отладить любой проект и сразу видеть все что нужно: панель, контроллер и т.д. Причем панель нормальную, а не как в кодесисе какую-то мутную визуализацию, которую делаешь только чтобы "потыкать". Т.е. делаешь абсолютно не нужную работу! Еще убило что TimeP не транслирует в эмулятор... Т.е. для отладки пришлось вводить еще один режим работы - режим эмулятора. Один раз уже на подобные грабли наступили в чужом проекте на кодесис - какой-то левый флаг выставился в единицу... Вот у меня в проекте овен теперь тоже есть такой же левый флаг. И почему-то я уверен что если я его не уберу оттуда, то рано или поздно он встанет в тру. :)
И есть у нас один проект с исходником на B&R. Хуже кода я еще в жизни не видел! :)))
Еще по степу: у нас несколько машин с S300. Исходников нет, есть схемы... Вот приспичило им сегодня клапан в таком-то месте не открывать, а закрывать, а вместо него открывать другой... За 5 минут с перекурами я эту программу переделаю. В кодесисе почему-то все "забывают" залить проект в контроллер и в итоге получаем "вечную" программу...
Кстати в тот же ПЛК63 исходник у меня упорно в контроллер не заливается. Могу завтра прицепить скриншот ошибки...

Вообще как бы привык уже к кодесису, но вот тут косяк, там косяк, тут не так работает, там не то транслирует... Понятно что это "особенности", а не баги. :) Но вот из-за этих мелочей и складывается отрицательное мнение о конечном продукте и компании в целом... Выпустили сырой продукт, а юзеры бесплатные бетатестеры. :)

capzap
25.03.2011, 07:40
КДС продукт немецкой фирмы, прямого отношения к компании ОВЕН не имеет, а вот территориально с Сименсом как раз таки очень близок и инженеры, скорее всего одни и те же. Внимательно читайте документацию и будет Вам счастье и не забывайте что пишут про забывчивость залить программу единицы, большинство ни чего не забывает и работает с удовольствием

lara197a
25.03.2011, 08:26
дорогой JIexa21. К сожалению контроллер делает только то, что вы написали в программе, а не то, что вы имели ввиду, когда писали эту программу. Попробуйте посмотреть примеры и внимательно почитать документацию. Все получится.

Николаев Андрей
25.03.2011, 12:05
Ну, ну, господа... Зачем же так. Оба хорошие спецы, грамотные люди, и из за мелочей вышли "к барьеру"... Зачем? Если очень хочется "попикироваться" - просьба в курилку.

По существу:
1. CoDeSys действительно немецкий продукт это раз. И есть некоторые подозрения, что родители CoDeSys имели отношение к Step 7.
Степ, как и система для B@R - это не система для программирования, а программный комплекс, включающий в себя 100 утилит для работы "со всем". Удобно? Наверное. Компания ОВЕН до такого уровня пока не дошла, ну так мы и контроллеры делаем 5 лет, а не 50. А CoDeSys - в чистом виде система программирования. Не более того.
2. Контроллеры ОВЕН - отдельная тема для разговора. Мы всегда открыты к диалогу. Единственно прошу - не мешать все в кучу.
3. Залить исходный код проекта в ПЛК63 нельзя - недостаточно памяти для этого в контроллере. Как в прочем и логи какие бы то ни было вести. Как и вычисления сложные и массивы большие не рекомендую. Контроллер сугубо для небольших локальных задач, о чем мы честно везде и говорим. Зато скомпилированный код при нажатии кнопки старт записывается в контроллер автоматически (кнопка создание загрузочного проекта не активна, если Вы заметили).
4. C временем в контроллере все работает. Как я и писал - присылайте свой проект и что не работает - обязательно разберемся. Ну или выкладывайте здесь, даже быстрее получится.
5. Рекомендую сменить версию прошивки на 2.0х

JIexa21
25.03.2011, 13:30
1. Ну в принципе я с этим не спорил. :)
Но система конечно удобна, хоть от "классичиского" кодесис внешне почти ничего не осталось... Дальше конечно все зависит от программера.
2. Ну я как бы не мешал... Просто чтобы не открывать новую тему, просто спросил про экраны и кнопочки. Почему вообще спросил? Не из-за того что про меня написал capzap :) , а потому что в документации по ЖКИ на стр. 16:
(*Перед между режимами осуществляется не мгновенно, может потребовать до 0.5сек) и возможен не из всех режимов. Для гарантированного перехода может потребоваться многократный вызов функции SWITCH_TO_SINGLE_MODE*)
Вот подобные мелочи я имел ввиду... Как-то не хочется чтобы сломали панель, пытаясь переключить что-то... А если есть какие-то задержки, то люди автоматически начинают нажимать сильнее на порядок...
3. Теперь с исходником в плк63 все понятно. Причем утверждение capzap про то что это "забывчивость" как-то начинает вызывать сомнения... :D
Лог ведется просто в массив, заданный моей структурой, с интервалом в 1 час (ну или сколько задашь в настройках). Причем массив даже не ретайн. Простой одномерный массив с размером 1..100, при достижении конца, автоматически начинает писать с начала. Если не вырубят питание, то нужную инфу я просмотреть успею. Если вырубят - не мои проблемы. Я предупредил если что. :)
Хотел сделать запись в файл, но прочитав доку (да-да - я иногда документацию все же читаю) "Ограничения ПЛК63.pdf", отказался от этой затеи.
Или я опять что-то делаю не так? :)
4. Сделал один в один как в примере. Скоро пойду тестировать.
5. Сменим. Потом.

ЗЫ Чей-то пример, вставленный практически один в один (добавил задержку чтобы не гонять каждый цикл), заработал...


VAR
HOUR:UINT; (* Часы *)
MINUTE:UINT; (* Минуты *)
SECOND:UINT; (* Секунды *)
TIME_NOW:TIME; (* Текущее время *)

DTNow: SystemTimeDate;
STNow: SysTime64;
GetCurrentTime: CurTimeEx;

TCLOCK: TON; (* Таймер обновления текущего времени *)
END_VAR

(* Обновляем раз в 500 мс - некуда спешить *)
TCLOCK (IN:=NOT TCLOCK.Q, PT := T#500ms);
IF TCLOCK.Q THEN

(* Текущее время *)
DTNow.Day :=0;
DTNow.DayOfWeek :=0;
DTNow.dwHighMsec :=0;
DTNow.dwLowMSecs :=0;
DTNow.Milliseconds :=0;
DTNow.Minute :=0;
DTNow.Second :=0;
DTNow.Hour :=0;
DTNow.Year :=0;
DTNow.Month :=0;
STNow.ulHigh :=0;
STNow.ulLow :=0;
GetCurrentTime(SystemTime:=STNow , TimeDate:=DTNow );
HOUR := DTNow.Hour;
MINUTE := DTNow.Minute;
SECOND := DTNow.Second;
TIME_NOW := UINT_TO_TIME((HOUR*3600 + MINUTE*60 + SECOND) * 1000);

END_IF


Всем спасибо! :)

capzap
25.03.2011, 18:02
Чувствую что скоро выработаю стойкое отвращение к овенам.

:) ну вот стоило Вас только поддеть и дело сдвинулось с мертвой точки, успехов в делах

JIexa21
29.03.2011, 09:26
Сделали б WorkInd=1 и не морочились бы.

Не вижу такой функции в библиотеках.



А чего не ретайн? В него можно пару сотен записей сделать.

Структура:

TYPE LOG_STRUCT:
STRUCT
P_CICL:UINT; (* Номер цикла *)
P_TIME:TIME; (* Текущее время *)
P_TMP_1:REAL; (* Температура в трубе *)
P_TMP_2:REAL; (* Температура в левой камере *)
P_TMP_3:REAL; (* Температура в правой камере *)
END_STRUCT
END_TYPE
Вряд ли 100 записей влезут в память...



Могли б записать когда выключилось, и когда включилось

А вот это можно и в ретайн, но нужно ли... :)
Все записи делаются в журнал. Им даже логи не нужны - они нужны мне.