Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: как воспользоваться RISING_EDGE?

  1. #1

    По умолчанию как воспользоваться RISING_EDGE?

    добрый день,

    судя по описанию в справке RISING_EDGE можно использовать только на ФБД и ЛД. А если на СТ пишу, то как им воспользоваться? Или только циклическая запись остается мне?

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

    По умолчанию

    Пост для экстрасенсов? Ладно, побуду экстрасенсом.

    Когда вы ставите канал в режим работы по фронту (он же RISING™ EDGE®), то у вас в таблице привязки появляется битовая запись, к которой вы можете привязать булевую переменную. В дальнейшем на каком угодно языке в нужные вам моменты вы переводите эту переменную из FALSE в TRUE, чем и образуете передний фронт.

  3. #3

    По умолчанию

    Кратовато написал я, конечно, но вы поняли правильно что я имел в виду. Попробовал, вроде работает, но не понял на какое время минамально необходимо держать в состоянии ТРУ триггерную переменную? пробовал сбрасывать на следующем цикле, не хватает ей времени, видимо. Если ставлю ТРУ и не снимаю, то срабатывает.
    Последний раз редактировалось Goga2000; 11.11.2014 в 20:19.

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

    По умолчанию

    Кратовато
    Да.

    А зачем именно вам этот режим работы? У меня вот он используется всего для трёх регистров, через которые панель передаёт команды оператора на другой ПЛК, и я спокойно могу ставить хоть целую секунду — быстрее оператор всё равно не работает. Пробовал снижать значение до 50 мс — работало.

  5. #5

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Да.

    А зачем именно вам этот режим работы? У меня вот он используется всего для трёх регистров, через которые панель передаёт команды оператора на другой ПЛК, и я спокойно могу ставить хоть целую секунду — быстрее оператор всё равно не работает. Пробовал снижать значение до 50 мс — работало.
    Хочу использовать его для релейного модуля му110-16Р, писать туда в цикле нет никакого желания - всю полосу забивают несколько релейных модулей, т.к. из-за наличия ПЧВ пришлось снизить частоту до 38200 кбод. Смысла писать постоянно одно и то же значение в течении нескольких часов нет никакого.

  6. #6

    По умолчанию

    Ну значит у вас обработка выхода триггера происходит раньше, чем вызов этого триггера, поэтому выход обрабатывается в следующем цикле ПЛК, когда он уже FALSE.
    Я ради теста в пустом проекте сейчас сделал вот так - работает так, как надо, как ожидалось.
    Код:
    PROGRAM PLC_PRG
    VAR
    	re: R_TRIG;
    	a, b: BOOL;
    END_VAR
    
    a;	(*это чтобы онлайн присвоить ей правду*)
    re (clk := a);
    IF a THEN
    	a := FALSE;
    END_IF;
    IF re.q THEN
    	b := TRUE;
    END_IF;
    
    END_PROGRAM
    Либо обнуляеете вход до вызова триггера.
    Последний раз редактировалось Lode Runner; 12.11.2014 в 07:43.

  7. #7

    По умолчанию

    Цитата Сообщение от Lode Runner Посмотреть сообщение
    Ну значит у вас обработка выхода триггера происходит раньше, чем вызов этого триггера, поэтому выход обрабатывается в следующем цикле ПЛК, когда он уже FALSE.
    Я ради теста в пустом проекте сейчас сделал вот так - работает так, как надо, как ожидалось.
    Код:
    PROGRAM PLC_PRG
    VAR
    	re: R_TRIG;
    	a, b: BOOL;
    END_VAR
    
    a;	(*это чтобы онлайн присвоить ей правду*)
    re (clk := a);
    IF a THEN
    	a := FALSE;
    END_IF;
    IF re.q THEN
    	b := TRUE;
    END_IF;
    
    END_PROGRAM
    Либо обнуляеете вход до вызова триггера.
    я правильно понимаю, что в качестве триггера назначается b?

  8. #8

    По умолчанию

    b := true; - это действие, которое выполняется по триггеру.
    Тут всё предельно просто, прочитайте повнимательнее.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    Lode Runner не слишком громоздко для ловли переднего фронта?
    Код:
    VAR
    uno,duo : BOOL;
    END_VAR
    
    IF uno AND NOT duo THEN
    ;(*любые действия выполняющиеся однократно по переднему фронту переменной uno*)
    END_IF;
    duo:=uno;
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10

    По умолчанию

    Цитата Сообщение от Lode Runner Посмотреть сообщение
    b := true; - это действие, которое выполняется по триггеру.
    Тут всё предельно просто, прочитайте повнимательнее.
    Почему просто нельзя сделать так:

    re.clk = TRUE;
    re.clk = FALSE;

    а re.q заводим на триггер отсылки слова по 485 интерфейсу?

    фронт есть? есть.
    триггер должен взвестись? вроде да.

    но не работает у меня, почему-то...

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Хочется как лучше,не получилось бы как всегда
    от Алекс2013 в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 07.10.2014, 21:31
  2. Подскажите - Каким прибором лучше воспользоваться..
    от Nikita13 в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 21.11.2012, 21:05

Ваши права

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