Страница 203 из 1049 ПерваяПервая ... 103153193201202203204205213253303703 ... ПоследняяПоследняя
Показано с 2,021 по 2,030 из 10482

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #2021

    По умолчанию

    Цитата Сообщение от kolyan Посмотреть сообщение
    1). В визуализации - нет, только на реальном железе.

    2). Программно - можно, кто же Вам мешает.

    Имеется ввиду, нельзя в меню редактирования уставок самого ПЛК прямо зайти. Но для этого есть спец. функция, с помощью ее - можно.
    Если у Вас уставки самостоятельно описаны - в программе, то заводское меню Вам может и не понадобиться.

    Вы описание почитайте. На диске и примеры есть, как редактировать уставку без использования меню редактирования параметров ПЛК.
    Нет смысла переписывать документацию:
    http://kipshop.ru/CoDeSys/Navigator_PLC_DVD_v3.iso
    Спасибо, буду еще раз внимательно смотреть!

  2. #2022

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    На LD это еще проще. Можно делать параллельные ветки по одному условию.
    Но я все так-же считаю, что надо еще раз пересмотреть логику реализации. Опишите полностью задачу, постараемся помочь.
    Пример во вложении. В данный момент будет использоваться 12 температур. Это пилотный проект. Если испытания пройдут нормально, будет расширение. Меня в принципе интересует только прямая адресация входных сетевых переменных в выходные.

  3. #2023
    Пользователь
    Регистрация
    20.03.2012
    Адрес
    Алматы
    Сообщений
    9

    По умолчанию

    Доброе утро, уважаемые знатоки!
    Помогите с работой SysLibTime. не могу понять как с ней работать (3 дня читаю форум и не могу допереть) как мне сделать чтоб насос включался в 9.00 и выключался в 18.00.
    Если несложно напишите простейший пример (ранее выложенные примеры не могу понять). как дальше работать с SysTime64??

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

    По умолчанию

    Код:
    PROGRAM PLC_PRG
    VAR
        uptime: SysTime64;
        datetime: SystemTimeDate;
        clock: CurTimeEx;
        out: BOOL;
    END_VAR
    VAR CONSTANT
        nulldt: SystemTimeDate;
    END_VAR
    
    datetime := nulldt;
    clock(SystemTime := uptime, TimeDate := datetime);
    out := datetime.Hour >= 9 AND datetime.Hour < 18;

  5. #2025
    Пользователь
    Регистрация
    20.03.2012
    Адрес
    Алматы
    Сообщений
    9

    По умолчанию

    оказывается все гениально и просто а я голову ломал.
    огромное спасибо!

  6. #2026

    По умолчанию

    DECODE_FLOAT из Owen_FB работает в симуляции?

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

    По умолчанию

    Цитата Сообщение от Денис_Гуливатенко Посмотреть сообщение
    DECODE_FLOAT из Owen_FB работает в симуляции?
    Конечно работает, только аналоговый вход ПЛК в эмуляции не будет давать значение+код ошибки.
    Т.е. ситуацию неисправностей нужно тоже эмулировать.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    Эмуляция ошибок измерения. Для DECODE_FLOAT
    Я себе сделал так
    Вложение 10086
    Для эмуляции ошибок измерения сделал функцию, вот ее код
    Код:
    FUNCTION Em_Err : REAL
    VAR_INPUT
        ai: REAL;
        n_ERR: WORD:=0;
    END_VAR
    VAR
        pt:POINTER TO DWORD;
    END_VAR
    
    pt:=ADR(ai);
    CASE n_ERR OF
    1:     pt^:=pt^ OR 16#F1000000;
    2:     pt^:=(pt^ AND 16#00FFFFFF) OR 16#F6000000;
    3:     pt^:=(pt^ AND 16#00FFFFFF) OR 16#F7000000;
    4:     pt^:=(pt^ AND 16#00FFFFFF) OR 16#FA000000;
    5:     pt^:=(pt^ AND 16#00FFFFFF) OR 16#FB000000;
    6:     pt^:=(pt^ AND 16#00FFFFFF) OR 16#FC000000;
    7:     pt^:=(pt^ AND 16#00FFFFFF) OR 16#FD000000;
    END_CASE
    Em_Err:=ai;
    Мне нужны не все коды ошибок, как видно из кода эмулируются только
    16#F1 (*Результаты измерения не верны*)
    16#F6 (*Результаты измерения не готовы*)
    16#F7 (*Канал отключен в конфигурации*)
    16#FA (*Сигнал на входе больше возможного*)
    16#FB (*Сигнал на входе меньше возможного*)
    16#FC (*Перегрузка в канале измерения тока*)
    16#FD (*Обрыв датчика*)
    Можно добавить и остальные.

    ЗЫ. Ошибки измерения можно эмулировать как при оффлайн(эмуляция работы ПЛК) так и при онлайн подключении к ПЛК.
    Т.е. даже если с физическими датчиками все в порядке. Для этого на окне визуализации сделал ввод в переменные v_Err_AI чисел, от 0 до 7.
    Если v_Err_AI:=0, то ошибок нет и функция не влияет на нормальную работу ПЛК.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #2029

    По умолчанию

    Мне эмуляция ошибок не нужна, просто смотрю, что на выходе DECODE_FLOAT.OUT_VALUE не меняется
    Вложение 10092

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

    По умолчанию

    Цитата Сообщение от Денис_Гуливатенко Посмотреть сообщение
    Мне эмуляция ошибок не нужна, просто смотрю, что на выходе DECODE_FLOAT.OUT_VALUE не меняется
    Вложение 10092
    Да, Вы правы!
    Действительно DECODE_FLOAT не работает в эмуляции.
    Давно ее не использую и уже забыл. Когда-то, и скорей всего именно по тому, что DECODE_FLOAT не работает в эмуляции сделал свой аналог.
    Код:
    FUNCTION_BLOCK DECODE_AI
    VAR_INPUT
        ai: REAL;  (*Датчик*)
    END_VAR
    VAR_OUTPUT
        Rezultat: REAL;  (*Результат*)
        Cod_Err: BYTE;  (*Код ошибки измерения*)
        Err: BOOL;  (*Наличее ошибки измерения*)
    END_VAR
    VAR
        pt:POINTER TO DWORD;
        bar:BYTE;
        TMP:REAL:=4.0;    (*Значение до ошибки*)
    END_VAR
    
    Err:=TRUE;    (*Установить ошибку измерений*)
    pt:=ADR(ai);
    bar:=DWORD_TO_BYTE(SHR(pt^,24));
    CASE bar OF
    16#F1:        Cod_Err:=bar-240;    (*Результаты измерения не верны*)
    16#F6:        Cod_Err:=bar-240;    (*Результаты измерения не готовы*)
    16#F7:        Cod_Err:=bar-240;    (*Канал отключен в конфигурации*)
    16#FA:        Cod_Err:=bar-240;    (*Сигнал на входе больше возможного*)
    16#FB:        Cod_Err:=bar-240;    (*Сигнал на входе меньше возможного*)
    16#FC:    Cod_Err:=bar-240;    (*Перегрузка в канале измерения тока*)
    16#FD:    Cod_Err:=bar-240;    (*Обрыв датчика*)
    ELSE
    Err:=FALSE;
    Cod_Err:=0;    (*Нет ошибок измерений*)
    END_CASE
    IF NOT Err THEN TMP:=ai;
    END_IF
    Rezultat:=TMP;
    С тех пор только этим и пользуюсь.

    ЗЫ. В отличии от DECODE_FLOAT, здесь нет "Значения по умолчанию". При наличии ошибок измерения на выходе Rezultat будет последнее значение полученное, до отказа датчика.
    В остальном работает точно так же как и DECODE_FLOAT
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 203 из 1049 ПерваяПервая ... 103153193201202203204205213253303703 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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