Как ЕЩЁ проще сделать "будильник"?
Не программер; 30.7.04
Помогите решить задачку - на S7-300 (CPU314) нужно реализовать
будильник типа "Включить во вторник в 9-30, выключить в среду в
16-00".
Заранее благодарен за любую инфу!
Re: Как ЕЩЁ проще сделать
GorA; 1.8.04
Можно сделать следующее:
1. Установить в PLC текущую дату и время PLC->Set time of
day...
2. Существуют организационные блоки прерываний OB10 - OB17 нужно их
активизировать. Для этого в HW Config кликнуть два раза на
процессор и выбрать вкладку Time-of-Day Interrupts. В данной
вкладке активизировать (для предложенного примера), например, ОВ10
для включения, ОВ11 для выключения. Затем в графе EXECUTION выбрать
Every week и далее Start day установить, например, 3 августа, Time
of day - 9-30. Аналогично для ОВ11 - EXECUTION - Every week, Start
day - 4 августа, Time of day - 16-00.
3. Теперь необходимо создать сами ОВ10, ОВ11 и запрограммировать
деиствия. Например, устройство включается/выключается выходом
Q10.5.
Тогда в ОВ10 пишем
Set
S Q10.5
В ОВ11 пишем
Set
R Q10.5
И тогда получаем - начиная со вторника 3 августа в 9-30 и в
дальнейшем каждый вторник в контроллере будет вызываться
организационный блок ОВ10, где выполняется включение
устройства.
И, аналогично, работает ОВ11, только там производится отключение
устройства начиная со среды 4 августа и каждую неделю.
Re: Как ЕЩЁ проще сделать
MooR; 2.8.04
Все бы хорошо только у CPU314, на сколько я помню, всего один блок
временного прерывания ОВ10 соответственно:) Я выдерал день недели и
час из DATE_AND_TIME и сравнивал с уставками.
Re: Как ЕЩЁ проще сделать
Не программер; 2.8.04
Во-во!!!
Не даёт включить ещё один ОВ...
MooR, а нельзя как ить по-подробнее?
Или, хотя бы - что и где почитать(желательно на нашем)???
Спасибо всем, кто откликнулся!
Re: Как ЕЩЁ проще сделать
Diana; 3.8.04
Есть такие функции у 314-го: FC14-FC40. Они лежат в stdlibs.
Насколько я понимаю, вам нужны функции READ_CLK (SFC1), DATE and
TOD to DT (FC3) и, например, LE_DT (FC18). Help по ним имеется. Вот
этот хитрый формат есть просто количество тысячных долей секунды,
прошедших с начала 1990-го года.
Re: Как ЕЩЁ проще сделать
GorA; 3.8.04
Действительно можно использовать только ОВ10.
Тогда возможно использовать функции SFC28 - SFC31 для установки и
активизации прерывания ОВ10.
Re: Как ЕЩЁ проще сделать
MooR;
3.8.04
Пишите на мыло вышлю пример. А вобще Уважаемая(ый) Diana как раз
про то и пишет.
Re: Как ЕЩЁ проще сделать
Чистяков Дмитрий ОАО СеверСталь; 4.8.04
Ну раз уж вы не "Не программер", то пригласите "программера".
;-)
Re: MooR; - написал на мыло!
Не программер; 4.8.04
Спасибо!
Жду!
Re: Как ЕЩЁ проще сделать
Darwin; 5.8.04
CALL "READ_CLK"
RET_VAL:=#CUR_RETVAL // Contains error code
CDT :=#OUT_TIME_DATE // Contains read time
LAR1 P##OUT_TIME_DATE
L B [AR1,P#0.0]
T "Data time".Year
L B [AR1,P#1.0]
T "Data time".Month
L B [AR1,P#2.0]
T "Data time".Data_month
L B [AR1,P#3.0]
T "Data time".Time_hour
L B [AR1,P#4.0]
T "Data time".Time_minute
L B [AR1,P#5.0]
T "Data time".Time_second
A(
A(
L "Data time".Time_hour
L B#16#8
==I
)
A(
L "Data time".Time_minute
L 0
==I
)
A(
L "Data time".Time_second
L 0
==I
)
O
A(
L "Data time".Time_hour
L B#16#20
==I
)
A(
L "Data time".Time_minute
L 0
==I
)
A(
L "Data time".Time_second
L 0
==I
)
)
AN "Reset_complete"
JC rst
BEU
Re: Как ЕЩЁ проще сделать
Darwin; 5.8.04
Это для записи данных в конце смен 08:00 и 20:00. Ну а будильник
или что еще там делается аналогично
Re: Как ЕЩЁ проще сделать
Не программер; 5.8.04
Спасибо!
Про двигатель внутреннего сгорания я понял! И куда бензин заливать
- понял!
Я не понял - ЛОШАДЬ-ТО КУДА ЗАПРЯГАТЬ??? (Шутка с бородой) :-))
А как ввести - то "RET_VAL:=#CUR_RETVAL // Contains error code
CDT :=#OUT_TIME_DATE // Contains read time", например???
Степ 5.2 красным цветом ругается...
и про "rst" он что-то неприличное рассказывает! :-)
НЕ ПРОГРАММЕР Я! (Так получилось - вынужден!)
Всё остальное, вроде, принял, а вот это-то я и не догнал... :-(
Где описать CUR_RETVAL и т.п.???
Спасибо заранее!
Re: Как ЕЩЁ проще сделать
Darwin; 6.8.04
CUR_RETVAL - это TEMP переменная тип Word, вводится в описании
интерфейса блока (сейчас речь о функции). В редакторе вверху есть
таблица такая, там есть in out in-out temp. Также и OUT_TIME_DATE
там надо прописать тип DATA_AND_TIME.
rst это метка перехода, ставишь ее далее и пишешь что там тебе надо
сделать при совпадении этих условий.
Re: Как ЕЩЁ проще сделать
Не программер; 13.8.04
Спасибо, уже лучше!!!
вот только со строчкой типа:
L "Data time".Time_hour
какие-то проблемки....
Не принимает, хоть и пробовал как-то прописывать, но, видимо, не
угадаю где...
Подскажите, плиз!!!
И ещё - где поситать-то по-понятнее про эти вещи?!!
Re: Как ЕЩЁ проще сделать
Darwin; 13.8.04
L "Data time".Time_hour
"Data time" это символьное имя глобального блока данных (т.е.
доступного везде) вы можете использовать любой свой блок данных или
создать новый, но есттно необходимо создать там области подобно
Time_hour-это в блоке данных,если проще, строчка с типом данных
БАЙТ т.к. мы загружаем туда временную переменную БАЙТ типа, потом
мы считываем Time_hour или в СТеп программе или в Протуле или где
еще.
<<br>