-----
18.11.2017 форум перенесён на другой хостинг. О замеченых глюках просьба сообщать администраторам.
-----
На форуме обязательно:
  1. Заполнить свой профиль на Русском языке. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.
Рекламу на своём форуме мы не размещаем ни на каких условиях.

функции sfc0 и sfc1

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Аватара пользователя

Автор темы
gazman
здесь недавно
здесь недавно
Сообщения: 15
Зарегистрирован: 20 янв 2017, 11:48
Имя: Каравкин Павел Николаевич

функции sfc0 и sfc1

Сообщение gazman » 13 апр 2017, 15:21

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

я хочу записать значение времени в контроллер при нажатии кнопки, а потом его считать.
скриншот прилагаю.

"baza".init_time должно задавать нужное мне время. "baza".time_start сюда записывается время.
при нажатии на кнопку I0.0 происходит сброс на дату 95-го года и время отсчитывается дальше. для отслеживания времени создал таблицу переменных и оттуда смотрю. в DB указываю для "baza".init_time время, нужное мне, например 99-й год. но установка времени всё равно происходит на 95-й. формат времени DT указываю правильно.

что делаю не так?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя

Автор темы
gazman
здесь недавно
здесь недавно
Сообщения: 15
Зарегистрирован: 20 янв 2017, 11:48
Имя: Каравкин Павел Николаевич

функции sfc0 и sfc1

Сообщение gazman » 25 апр 2017, 12:17

решил проблему.
если кому интересно, то приведу пример решения. пошарил буржуйскую документацию.

смысл такой:
1. создаём временную переменную с форматом DATE_AND_TIME
2. заносим свои значения из DB в нужные байты (год, месяц, день и т.д.)
3. потом эту временную переменную устанавливаем в sfc0

главное не забыть преобразовать тип данных INT в BCD

вот код:

LAR1 P##NEW_TIME // новая временная переменная DATE_AND_TIME

L "new_date".year // устанавливаемый год
ITB // преобразование INT в BCD
T B [AR1,P#0.0]

L "new_date".month // устанавливаемый месяц
ITB // преобразование INT в BCD
T B [AR1,P#1.0]

L "new_date".day // устанавливаемый день
ITB // преобразование INT в BCD
T B [AR1,P#2.0]

L "new_date".hour // устанавливаемый час
ITB // преобразование INT в BCD
T B [AR1,P#3.0]

L "new_date".minute // устанавливаемая минута
ITB // преобразование INT в BCD
T B [AR1,P#4.0]

L "new_date".second // устанавливаемая секунда
ITB // преобразование INT в BCD
T B [AR1,P#5.0]


// запись нужных значений в DB (делал в LAD с помощью MOVE при нажатии на кнопку I0.0)

A I 0.0
= L 42.0
A L 42.0
JNB _001
L 17 // 2017 год
T "new_date".year
_001: NOP 0
A L 42.0
JNB _002
L 2 // февраль
T "new_date".month
_002: NOP 0
A L 42.0
JNB _003
L 25 // 25 число
T "new_date".day
_003: NOP 0
A L 42.0
JNB _004
L 4 //4 часа
T "new_date".hour
_004: NOP 0
A L 42.0
JNB _005
L 5 // 5 минут
T "new_date".minute
_005: NOP 0


// установка системного времени

A I 0.1
JNB _006
CALL "SET_CLK"
PDT :=#NEW_TIME // новая дата и время
RET_VAL:=LW40
_006: NOP 0
Последний раз редактировалось gazman 25 апр 2017, 14:55, всего редактировалось 1 раз.


winb
здесь недавно
здесь недавно
Сообщения: 96
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Благодарил (а): 2 раза
Поблагодарили: 14 раз

функции sfc0 и sfc1

Сообщение winb » 25 апр 2017, 12:51

gazman писал(а):Источник цитаты главное не забыть преобразовать тип данных INT в WORD

gazman писал(а):Источник цитаты L "new_date".year // устанавливаемый год
ITB // преобразование INT в WORD
T B [AR1,P#0.0]

:o
Вы уверены, что ITB - преобразование INT в WORD?

Аватара пользователя

Автор темы
gazman
здесь недавно
здесь недавно
Сообщения: 15
Зарегистрирован: 20 янв 2017, 11:48
Имя: Каравкин Павел Николаевич

функции sfc0 и sfc1

Сообщение gazman » 25 апр 2017, 14:54

оговорился. извините. исправил

ITB преобразование INT в BCD

спасибо за замечание.
главное код работает))

Аватара пользователя

TEB
администратор
администратор
Сообщения: 9000
Зарегистрирован: 17 июн 2008, 15:01
Имя: Евгений свет Брониславович
Благодарил (а): 88 раз
Поблагодарили: 118 раз
Контактная информация:

функции sfc0 и sfc1

Сообщение TEB » 28 апр 2017, 15:38

Коды лучше запихивать в тэг "code"
Иначе будете потом удивляться, куда символы деваются - автозамена сработает.
По вопросам работы Форума можно обратиться ко мне, или по этим контактам.