Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 20 из 23

Тема: звeно зaпaздывания на SТ

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

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

    По умолчанию

    посмотрел страничку что предложили, там он работает с задержкой сигнала типa bool, а мне нужно с real(
    так никто не поможет в данном случае?

    за 2004 год последнее издание петрова?

  2. #2
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,189

    По умолчанию

    Цитата Сообщение от longalier Посмотреть сообщение
    так никто не поможет в данном случае?
    смотри п#9

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,218

    По умолчанию

    Цитата Сообщение от longalier Посмотреть сообщение
    посмотрел страничку что предложили, там он работает с задержкой сигнала типa bool, а мне нужно с real(
    так никто не поможет в данном случае?

    за 2004 год последнее издание петрова?
    Нужно смотреть библиотеку OSCAT
    Захват-1.png
    Захват-2.png
    Захват-3.png
    Три ФБ, различаются разрешением(дискретизацией) сигнала на выходе
    FT_TN8:
    Код:
    FUNCTION_BLOCK FT_TN8
    VAR_INPUT
        in : REAL;
        T : TIME;
    END_VAR
    VAR_OUTPUT
        out : REAL;
        trig: BOOL;
    END_VAR
    VAR
        length : INT := 8;
        X : ARRAY[0..7] OF REAL;
        cnt : INT;
        last : TIME;
        tx: TIME;
        init: BOOL;
    END_VAR
    tx := DWORD_TO_TIME(T_PLC_MS());
    trig := FALSE;
    IF NOT init THEN
        x[cnt] := in;
        init := TRUE;
        last := tx;
    ELSIF tx - last >= T / length THEN
        IF cnt = length - 1 THEN cnt := 0; ELSE cnt := cnt + 1; END_IF;
        Out := X[cnt];
        x[cnt] := in;
        last := tx;
        trig := TRUE;
    END_IF;

    FT_TN16:
    Код:
    FUNCTION_BLOCK FT_TN16
    VAR_INPUT
        in : REAL;
        T : TIME;
    END_VAR
    VAR_OUTPUT
        out : REAL;
        trig : BOOL;
    END_VAR
    VAR
        length : INT := 16;
        X : ARRAY[0..15] OF REAL;
        cnt : INT;
        last : TIME;
        tx: TIME;
        init: BOOL;
    END_VAR
    
    (* read system time *)
    tx := DWORD_TO_TIME(T_PLC_MS());
    trig := FALSE;
    IF NOT init THEN
        x[cnt] := in;
        init := TRUE;
        last := tx;
    ELSIF tx - last >= T / length THEN
        IF cnt = length - 1 THEN cnt := 0; ELSE cnt := cnt + 1; END_IF;
        Out := X[cnt];
        x[cnt] := in;
        last := tx;
        Trig := TRUE;
    END_IF;

    FT_TN64:
    Код:
    FUNCTION_BLOCK FT_TN64
    VAR_INPUT
        in : REAL;
        T : TIME;
    END_VAR
    VAR_OUTPUT
        out : REAL;
        trig: BOOL;
    END_VAR
    VAR
        length : INT := 64;
        X : ARRAY[0..63] OF REAL;
        cnt : INT;
        last : TIME;
        tx: TIME;
        init: BOOL;
    END_VAR
    (* read system time *)
    tx := DWORD_TO_TIME(T_PLC_MS());
    
    trig := FALSE;
    IF NOT init THEN
        x[cnt] := in;
        init := TRUE;
        last := tx;
    ELSIF tx - last >= T / length THEN
        IF cnt = length - 1 THEN cnt := 0; ELSE cnt := cnt + 1; END_IF;
        Out := X[cnt];
        x[cnt] := in;
        last := tx;
        trig := TRUE;
    END_IF;

    Используется функция T_PLC_MS из той же библиотеки
    Код:
    FUNCTION T_PLC_MS : DWORD
    VAR CONSTANT
        debug : BOOL := 0;
        N : INT := 0;
        offset : DWORD := 0;
    END_VAR
    VAR
        tx : TIME;
    END_VAR
    tx := TIME();
    T_PLC_MS := TIME_TO_DWORD(Tx);
    
    
    IF debug THEN
        T_PLC_MS := (SHL(T_PLC_MS,N) OR SHL(DWORD#1,N)-1) + OFFSET;
    END_IF;
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #4

    По умолчанию

    спасибо большое! разобрался поверхностно с элементами- как надо действует, завтра посмотрю КАК это работает)
    у меня несколько вопросов...
    0-а что это за "библиотеку OSCAT"?
    1- как сделать чтобы на выход подавался именно вещественный синус, а не "целый"?
    2- мы же вроде задали 4 секунды, а "отпаузил" он лишь 2,2? и даже если считать с начала работы то тоже порядка 3,2 с, почему так? и с какого момента отсчет этого времени, с момента нажатия "Старт"?
    3- как ДОБАВИТЬ элемент в библиотеку(как создавать новые библиотеки - понял, а как добавить элемент, не пойму)?
    Изображения Изображения
    • Тип файла: png 6456.png (96.5 Кб, Просмотров: 17)

  5. #5
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,218

    По умолчанию

    Цитата Сообщение от longalier Посмотреть сообщение
    спасибо большое! разобрался поверхностно с элементами- как надо действует, завтра посмотрю КАК это работает)
    у меня несколько вопросов...
    0-а что это за "библиотеку OSCAT"?
    1- как сделать чтобы на выход подавался именно вещественный синус, а не "целый"?
    2- мы же вроде задали 4 секунды, а "отпаузил" он лишь 2,2? и даже если считать с начала работы то тоже порядка 3,2 с, почему так? и с какого момента отсчет этого времени, с момента нажатия "Старт"?
    3- как ДОБАВИТЬ элемент в библиотеку(как создавать новые библиотеки - понял, а как добавить элемент, не пойму)?
    0.OSCAT - это сообщество разработчиков библиотек в стандарте IEC 61131-3 с открытым исходным кодом, существующее с 2006 года. Скачать библиотеки и документацию к ним можно по ссылкам из этой темы http://www.owen.ru/forum/showthread.php?t=14007. Для CDS v2.xx нужно качать "OSCAT Basic Codesys / Twincat 2.x"
    1. Например взять генератор синуса из той же библиотеки OSCAT
    1.png
    2. Где Вы увидели 2,2 с? Я увидел 220 мс
    А Вас не смущает, что половина периода исходного сигнала на трассировке равна примерно 460 мс, а должна быть 7500 мс?
    Скорей всего Вы пытаетесь запускать трассировку в эмуляции. Тогда покажите настройки сэмплирования. Скорей всего Вы задали интервалы выборок несколько мс, а для эмулятора нужно задавать сотни мс, что бы получить более менее правильные результаты.
    Дело в том, что в эмуляции используется системный таймер компьютера и сама Windows не является оп.системой реального времени.
    Запускать трассировку нужно в режиме онлайн соединения с живым ПЛК, в крайнем случае можно использовать PLC WinNT. И не нужно устанавливать интервалы в трассировке меньше чем время цикла ПЛК. Например
    Выполнение программы и трассировки в эмуляторе
    2.png
    Результат
    3.png 4.png
    Хорошо видно, что в эмуляции трассировка с выборкой 20 мс отображается не верно.
    Теперь эта же программа выполняется в PLC WinNT с теми же параметрами выборки
    5.png
    Здесь видно, что задержка сигнала действительно равна 4 сек.
    3. Библиотека такой же проект кодесис. Добавить элемент можно так, же как и в проекте "Добавить объект.."

    ЗЫ. Эта простейшая программа в эмуляторе имеет время цикла 63 мс, а в PLC WinNT примерно 16 мс.
    Последний раз редактировалось petera; 17.11.2014 в 04:57.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Надо бы описать задачу подробнее. Что дано и что должны получить в итоге. А то не совсем понятно что Вам нужно.

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,218

    По умолчанию

    Пример работы ФБ FT_TN. Для наглядности на языке CFC
    Захват-2.png Захват-1.png
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    если из оскат что то берете, конкретно математические константы, то в бибке используются все вкладки проекта, внимательно изучите
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 03.03.2017, 08:25
  2. Файловый менеджер на Delphi на основе утилиты plc_io
    от kandiral в разделе Помощь Разработчикам
    Ответов: 18
    Последнее сообщение: 09.12.2016, 14:52
  3. На плк-304 не работает 1 порт (232/485) на чтение
    от Boris3B в разделе ПЛК3xx (архив)
    Ответов: 8
    Последнее сообщение: 15.03.2011, 12:04
  4. Ответов: 7
    Последнее сообщение: 26.01.2011, 07:58

Ваши права

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