Показано с 1 по 10 из 1349

Тема: Hardella IDE

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    ctrl+пробел = успех.
    Хотя переменные объявлены... ну да ладно.
    В идеале я пытаюсь добавить управление быстрыми выходами. по достижении заданной частоты. (материал сыпится, время идёт... С кодесис тут наверняка будут мСек плясать не предсказуемо)
    ctrl+c/v не получается. Перемешиваются строки...
    PROGRAM FAST_COUNTER
    variables:
    @Export
    @Export
    inputs : FAST_INPUTS;
    CounterCH1 : WORD; (* счётчик для первого канала *)
    CounterCH2 : WORD; (* счётчик для второго канала *)
    StartCounter1 : BOOL; (* начался отсчёт по первому каналу *)
    StartCounter2 : BOOL; (* начался отсчёт по 2 каналу *)

    body:
    (* первый канал *)
    (* проверка флага начатого отсчёта *)
    IF StartCounter1 THEN (* если флаг установлен *)
    IF R_TRIG(CLK := inputs.in1).Q THEN (* ждём передний фронт второго импульса *)
    (* если импульс пришёл *)
    counter1 := CounterCH1; (* записываем значение на выход *)
    CounterCH1 := 0; (* обнуляем счётчик *)
    (* иначе, если флаг начала установлен, но пока нет переднего фронта второго импульса *)
    ELSE
    CounterCH1 := CounterCH1 + 1; (* считаем циклы *)
    END_IF;
    (* иначе, если флаг первого импульса не установлен *)
    ELSE
    IF F_TRIG(CLK := inputs.in1).Q THEN (* ждём заднего фронта первого импульса *)
    StartCounter1 := TRUE; (* если импульс пришёл, устанавливаем флаг начала счёта *)
    CounterCH1 := CounterCH1 + 1; (* и начинаем счёт циклов *)
    END_IF;
    END_IF;
    (* второй канал *)
    (* проверка флага начатого отсчёта *)
    IF StartCounter2 THEN (* если флаг установлен *)
    IF R_TRIG(CLK := inputs.in2).Q THEN (* ждём передний фронт второго импульса *)
    (* если импульс пришёл *)
    counter2 := CounterCH2; (* записываем значение на выход *)
    CounterCH2 := 0; (* обнуляем счётчик *)
    (* иначе, если флаг начала установлен, но пока нет переднего фронта второго импульса *)
    ELSE
    CounterCH2 := CounterCH2 + 1; (* считаем циклы *)
    END_IF;
    (* иначе, если флаг первого импульса не установлен *)
    ELSE
    IF F_TRIG(CLK := inputs.in2).Q THEN (* ждём заднего фронта первого импульса *)
    StartCounter2 := TRUE; (* если импульс пришёл, устанавливаем флаг начала счёта *)
    CounterCH2 := CounterCH2 + 1; (* и начинаем счёт циклов *)
    END_IF;
    END_IF;

    END_PROGRAM
    output counter1 : WORD; (* This variable will be visible in CoDeSys program *) output counter2 : WORD; (* период между импульсами в мкСек Канал ном.2 *)
    Хотя вроде ничего. А в блокнот, - так безобразие....
    Последний раз редактировалось TV13M; 06.07.2020 в 10:34.

  2. #2

    По умолчанию

    Цитата Сообщение от TV13M Посмотреть сообщение
    В идеале я пытаюсь добавить управление быстрыми выходами. по достижении заданной частоты.
    Да, если управление, тогда действительно можно и в Hardella сделать PRU программу.

Ваши права

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