Страница 9 из 9 ПерваяПервая ... 789
Показано с 81 по 86 из 86

Тема: Помогите разобраться...

  1. #81
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Код:
    output := power - power * 0.3 * BOOL_TO_REAL(dim); (* -30% когда dim = TRUE *)
    С выше приведённым BLINK_SEQ можно так:
    Код:
    PROGRAM PLC_PRG
    VAR
    	blinker: BLINK_SEQ;
    	power, output: REAL;
    END_VAR
    VAR CONSTANT
    	(* Два коротких, один длинный *)
    	testSequence: ARRAY[0..15] OF TIME := T#200ms, T#200ms, T#200ms, T#200ms, T#500ms;
    END_VAR
    
    blinker(ENABLED := TIME_TO_DWORD(TIME()) MOD 3000 > 100, SEQ := testSequence); (* Раз в три секунды *)
    output := power - power * 0.3 * BOOL_TO_REAL(blinker.OUT); (* Мигание в тушение на 30% *)
    Последний раз редактировалось Yegor; 21.11.2012 в 09:36.

  2. #82
    Пользователь
    Регистрация
    13.08.2012
    Адрес
    Питер
    Сообщений
    127

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Код:
    output := power - power * 0.3 * BOOL_TO_REAL(dim); (* -30% когда dim = TRUE *)
    С выше приведённым BLINK_SEQ можно так:
    Код:
    PROGRAM PLC_PRG
    VAR
    	blinker: BLINK_SEQ;
    	power, output: REAL;
    END_VAR
    VAR CONSTANT
    	(* Два коротких, один длинный *)
    	testSequence: ARRAY[0..15] OF TIME := T#200ms, T#200ms, T#200ms, T#200ms, T#500ms;
    END_VAR
    
    blinker(ENABLED := TIME_TO_DWORD(TIME()) MOD 3000 > 100, SEQ := testSequence); (* Раз в три секунды *)
    output := power - power * 0.3 * BOOL_TO_REAL(blinker.OUT); (* Мигание в тушение на 30% *)
    Огромное спасибо! Буду пробовать...

  3. #83
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Если б хоть можно было писать timer(IN := ..., NOT Q => output) — ан нет, хрен тебе
    Я знал! Я знал!

    notq.png

    В Стандарте есть эта фишка! Кодесис в очередной раз подтверждает своё весьма условное соответствие. Причём третья версия тоже это не поддерживает.

  4. #84
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    а где написано про инверсию выхода?
    Я выдержку из стандарта рисунком привёл. Не видно разве? Там формальное описание грамматики языка ST, согласно которому перед именем выхода программист может сказать NOT.
    Хм и что с того, я например видел в описалове стандарта и такую запись
    Не нашёл ничего подобного в самом стандарте. Вновь обратимся к разделу с грамматикой:
    Код:
    B.1.2.3.2 Time of day and datePRODUCTION RULES:
    time_of_day ::= ('TIME_OF_DAY' | 'TOD') '#' daytime
    daytime ::= day_hour ':' day_minute ':' day_second
    Пробуем TOD#20:12 — работает. Так что в данном случае всё соответствует.

  5. #85

    По умолчанию

    Да что вы возитесь с какими-то библиотеками, таймерами? Для отработки любых задержек - можно и без библиотек обходиться, есть стандартная функция TIME(), возвращает время в миллисекундах (с момента включения ПЛК), и этого достаточно. Если нужно отсчитать какую-то задержку с определённого момента - в требуемый момент присваиваете своей переменной текущее значение TIME(), а в последующих циклах проверяете условие: если разность текущего TIME() и той переменной превысила требуемую величину, то задержка закончилась.
    Последний раз редактировалось Boris_K; 29.09.2014 в 19:12.

  6. #86
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    А с чего тогда взяли, что цитируете стандарт?
    http://i.imgur.com/jUG7VHv.png
    Где Вам приходилось использовать присвоение ::=
    Это не присвоение. Это знак определения в форме Бэкуса-Наура. И процитированный кусок — не ST-код, а выдержка из формального описания синтаксиса языка ST вообще.
    я разве про tod#xx:xx выложил код, t# - работает?
    Я про то, что по стандарту t#20:12 быть не может в отличие от NOT перед обратным присвоением. Короче, то, что не поддерживается t#20:12 — правильно, а что не поддерживается NOT Q => boolVar — неправильно.

Страница 9 из 9 ПерваяПервая ... 789

Похожие темы

  1. помогите разобраться
    от Барон в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 17.11.2010, 08:30
  2. помогите разобраться
    от a_l_e_x в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 02.07.2010, 16:51
  3. Помогите разобраться...
    от xaker_tm в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 08.02.2010, 17:33
  4. ТРМ 12, помогите разобраться.
    от SEREG@ в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 12.01.2009, 14:21
  5. Помогите разобраться !!
    от viking в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 21.11.2007, 14:31

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •