1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

функции sfc0 и sfc1

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

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

функции sfc0 и sfc1

Сообщение gazman »

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

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

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

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

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

функции sfc0 и sfc1

Сообщение gazman »

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

смысл такой:
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
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

функции sfc0 и sfc1

Сообщение winb »

gazman писал(а): главное не забыть преобразовать тип данных INT в WORD
gazman писал(а): L "new_date".year // устанавливаемый год
ITB // преобразование INT в WORD
T B [AR1,P#0.0]
:o
Вы уверены, что ITB - преобразование INT в WORD?
Аватара пользователя

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

функции sfc0 и sfc1

Сообщение gazman »

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

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

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

Jackson
администратор
администратор
Сообщения: 17472
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1277 раз

функции sfc0 и sfc1

Сообщение Jackson »

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

Вернуться в «Средний уровень автоматизации (управляющий)»