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

Тема: датчик давления пд100

  1. #11

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Читать руководство на модуль нужно внимательно!
    Вложение 25797
    Кроме значения физ.величины из модуля ОБЯЗАТЕЛЬНО нужно читать статус результата измерения и обрабатывать в программе оба значения
    Да читаю я ее с первого же дня, только из за остывания топлива создается вакум, который и уносит показания ниже 4 мА, мне сказали что можно изменить показ обрыва при изменении на меньший ток. Вот об этом то я и спрашиваю, а руководство уже выучил)

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

    По умолчанию

    1. Берёте из модуля оба значения iRD и SRD
    2. Делаете ФБ
    Код:
    UNCTION_BLOCK DECODE_Err
    VAR_INPUT
        iRD: INT;  (*Датчик*)
    	SRD: WORD;
    END_VAR
    VAR_OUTPUT
        Rezultat: INT;  (*Результат*)
        Cod_Err: BYTE;  (*Код ошибки измерения*)
        Err: BOOL;  (*Наличее ошибки измерения*)
    END_VAR
    VAR
    END_VAR
    
    IF	SRD <>0 THEN
    Err:=TRUE;    (*Установить ошибку измерений*)
    CASE SRD OF
    16#F000:        Cod_Err:=1;    (*Результаты измерения не верны*)
    16#F006:        Cod_Err:=2;    (*Данные не готовы*)
    16#F007:        Cod_Err:=3;    (*Датчик отключен*)
    16#F00A:        Cod_Err:=4;    (*Измеренное значение слишком велико*)
    16#F00B:        Cod_Err:=5;    (*Измеренное значение слишком мало*)
    16#F00D:        Cod_Err:=6;    (*Обрыв датчика*)
    16#F00F:        Cod_Err:=7;    (*Некорректный калибровочный коэффициент *)
    END_CASE
    ELSE
    Err:=FALSE;
    Cod_Err:=0;    (*Нет ошибок измерений*)
    END_IF
    IF iRD<0 OR Err THEN Rezultat:=0;
    ELSE Rezultat:=iRD;
    END_IF
    3. На вход ФБ подаёте оба сигнала
    Нажмите на изображение для увеличения. 

Название:	Захват-1.png 
Просмотров:	195 
Размер:	2.2 Кб 
ID:	25813
    4. На выходе Rezultat будут или правильные значения или 0 пока мазут не прогрелся.
    Это значение (Rezultat) используете в программе вместо iRD
    5. Дополнительно получаете коды ошибок.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #13
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,612

    По умолчанию

    Почему "Cod_Err: BYTE; (*Код ошибки измерения*)" сделан BYTE, а не WORD или INT?

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

    По умолчанию

    Цитата Сообщение от Эдуард_Н Посмотреть сообщение
    Почему "Cod_Err: BYTE; (*Код ошибки измерения*)" сделан BYTE, а не WORD или INT?
    Если Вам нравится WORD или INT, то сделайте Cod_Err таковыми, я не возражаю.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #15

    По умолчанию

    petera, спасибо большое, примерно так сейчас и сделано. Думал можно решить до захода в скаду или плк, на уровне настройки конфигуратора мв110. Единственное что в вашем и моем исполнение не нравится, это то что статус дает динамизацию на мнемосхеме, что то типа мигания значения, когда с датчиком не лады. Понимаю что это все обходится программно ( например не определять, пока не прогреется), просто левой пяткой правое ухо... А за помощь всем спасибо.

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

    По умолчанию

    Цитата Сообщение от Vitorgan Посмотреть сообщение
    petera, спасибо большое, примерно так сейчас и сделано. Думал можно решить до захода в скаду или плк, на уровне настройки конфигуратора мв110. Единственное что в вашем и моем исполнение не нравится, это то что статус дает динамизацию на мнемосхеме, что то типа мигания значения, когда с датчиком не лады. Понимаю что это все обходится программно ( например не определять, пока не прогреется), просто левой пяткой правое ухо... А за помощь всем спасибо.
    Тогда попробуйте вариант
    Код:
    FUNCTION_BLOCK DECODE_Err
    VAR_INPUT
        iRD: INT;  (*Датчик*)
        SRD: WORD;
    END_VAR
    VAR_OUTPUT
        Rezultat: INT;  (*Результат*)
        Cod_Err: BYTE;  (*Код ошибки измерения*)
        Err: BOOL;  (*Наличие ошибки измерения*)
    END_VAR
    VAR
       TMP: INT;		(*Значение до ошибки*)
    END_VAR
    
    IF	SRD <>0 THEN
    Err:=TRUE;    (*Установить ошибку измерений*)
    CASE SRD OF
    16#F000:        Cod_Err:=1;    (*Результаты измерения не верны*)
    16#F006:        Cod_Err:=2;    (*Данные не готовы*)
    16#F007:        Cod_Err:=3;    (*Датчик отключен*)
    16#F00A:        Cod_Err:=4;    (*Измеренное значение слишком велико*)
    16#F00B:        Cod_Err:=5;    (*Измеренное значение слишком мало*)
    16#F00D:        Cod_Err:=6;    (*Обрыв датчика*)
    16#F00F:        Cod_Err:=7;    (*Некорректный калибровочный коэффициент *)
    END_CASE
    ELSE
    Err:=FALSE;
    Cod_Err:=0;    (*Нет ошибок измерений*)
    END_IF
    
    IF NOT (iRD<0 OR Err) THEN TMP:=iRD;
    END_IF
    Rezultat:=TMP;
    в момент ошибки измерения выход Rezultat имеет последнее правильное(достоверное) значение, а не фиксированное =0. Т.е. ФБ замораживает последнее достоверное значение.
    Это позволяет игнорировать одиночные ошибки измерения, не "мельтешить" цифрами на HMI и не бросать PID в крайние положения.
    Ну а факт действительного отказа датчика можно сделать через разумную задержку сигнала "Err" с выхода данного ФБ и предпринять нужные действия (вкл. сигнализацию, перевести механизмы в безопасное состояние, и т.д.)

    Аналогичный ФБ для аналогового входа ПЛК http://www.owen.ru/forum/showthread....l=1#post183061
    Последний раз редактировалось petera; 16.08.2016 в 04:25.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #17
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,612

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    1. Берёте из модуля оба значения iRD и SRD
    2. Делаете ФБ
    Код:
    UNCTION_BLOCK DECODE_Err
    VAR_INPUT
        iRD: INT;  (*Датчик*)
    	SRD: WORD;
    END_VAR
    VAR_OUTPUT
        Rezultat: INT;  (*Результат*)
        Cod_Err: BYTE;  (*Код ошибки измерения*)
        Err: BOOL;  (*Наличее ошибки измерения*)
    END_VAR
    VAR
    END_VAR
    
    IF	SRD <>0 THEN
    Err:=TRUE;    (*Установить ошибку измерений*)
    CASE SRD OF
    16#F000:        Cod_Err:=1;    (*Результаты измерения не верны*)
    16#F006:        Cod_Err:=2;    (*Данные не готовы*)
    16#F007:        Cod_Err:=3;    (*Датчик отключен*)
    16#F00A:        Cod_Err:=4;    (*Измеренное значение слишком велико*)
    16#F00B:        Cod_Err:=5;    (*Измеренное значение слишком мало*)
    16#F00D:        Cod_Err:=6;    (*Обрыв датчика*)
    16#F00F:        Cod_Err:=7;    (*Некорректный калибровочный коэффициент *)
    END_CASE
    ELSE
    Err:=FALSE;
    Cod_Err:=0;    (*Нет ошибок измерений*)
    END_IF
    IF iRD<0 OR Err THEN Rezultat:=0;
    ELSE Rezultat:=iRD;
    END_IF
    3. На вход ФБ подаёте оба сигнала
    Нажмите на изображение для увеличения. 

Название:	Захват-1.png 
Просмотров:	195 
Размер:	2.2 Кб 
ID:	25813
    4. На выходе Rezultat будут или правильные значения или 0 пока мазут не прогрелся.
    Это значение (Rezultat) используете в программе вместо iRD
    5. Дополнительно получаете коды ошибок.
    Можете в этом блоке добавить булевые выхода на каждую ошибку?

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

    По умолчанию

    Цитата Сообщение от Эдуард_Н Посмотреть сообщение
    Можете в этом блоке добавить булевые выхода на каждую ошибку?

    Да, уж...
    Неужели самому семь строчек добавить сложно?

    Код:
    FUNCTION_BLOCK DECODE_ErrExt
    VAR_INPUT
        iRD: INT;  (*Датчик*)
        SRD: WORD;
    END_VAR
    VAR_OUTPUT
        Rezultat: INT;  (*Результат*)
        Cod_Err: BYTE;  (*Код ошибки измерения*)
        Err: BOOL;  (*Наличие ошибки измерения*)
    	Err1: BOOL;
    	Err2: BOOL;
    	Err3: BOOL;
    	Err4: BOOL;
    	Err5: BOOL;
    	Err6: BOOL;
    	Err7: BOOL;
    END_VAR
    VAR
       TMP: INT;		(*Значение до ошибки*)
    END_VAR
    
    IF SRD <>0 THEN
    Err:=TRUE;    (*Установить ошибку измерений*)
    CASE SRD OF
    16#F000:        Cod_Err:=1;   (*Результаты измерения не верны*)
    16#F006:        Cod_Err:=2;   (*Данные не готовы*)
    16#F007:        Cod_Err:=3;   (*Датчик отключен*)
    16#F00A:        Cod_Err:=4;   (*Измеренное значение слишком велико*)
    16#F00B:        Cod_Err:=5;   (*Измеренное значение слишком мало*)
    16#F00D:        Cod_Err:=6;   (*Обрыв датчика*)
    16#F00F:        Cod_Err:=7;    (*Некорректный калибровочный коэффициент *)
    END_CASE
    ELSE
    Err:=FALSE;
    Cod_Err:=0;    (*Нет ошибок измерений*)
    END_IF
        Err1:=Cod_Err = 1;
        Err2:=Cod_Err = 2;
        Err3:=Cod_Err = 3;
        Err4:=Cod_Err = 4;
        Err5:=Cod_Err = 5;
        Err6:=Cod_Err = 6;
        Err7:=Cod_Err = 7;
    Нажмите на изображение для увеличения. 

Название:	Захват-1.png 
Просмотров:	164 
Размер:	2.0 Кб 
ID:	26136
    Последний раз редактировалось petera; 02.09.2016 в 12:57.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #19
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,612

    По умолчанию

    Спасибо.
    Неужели самому семь строчек добавить сложно?
    В ST не очень понимаю, полдня экспериментировал.
    оказалось так просто.
    Последний раз редактировалось Эдуард_Н; 02.09.2016 в 13:25.

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

    По умолчанию

    Цитата Сообщение от Эдуард_Н Посмотреть сообщение
    Спасибо.

    В ST не очень понимаю, полдня экспериментировал.
    оказалось так просто.
    Не ужели ни с каким языком программирования не сталкивались? Например с Бэйсиком?

    В примере, для выражения
    Err2:=Cod_Err = 2;
    У переменной "Err2" тип BOOL, т.е. она может принимать только два значения TRUE или FALSE.
    Часть, которая "Cod_Err = 2" не что иное, как логическая операция сравнения на равенство двух величин. Результатом ее будет
    TRUE, если Cod_Err равен 2
    FALSE, если Cod_Err неравен 2
    Вот этот результат и прививается (операнд :=) переменной Err2
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Датчик давления ПД100-ДИ0,4-171-0,5. Нужна помощь.
    от SAG в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 15.05.2015, 18:28
  2. Датчик давления ОВЕН ПД100-ДГ??? и 2ТРМ1
    от Maikl37 в разделе Подбор Оборудования
    Ответов: 11
    Последнее сообщение: 29.09.2014, 14:08
  3. Датчики давления ПД100-ДИ1,6
    от Vitor в разделе Трёп (Курилка)
    Ответов: 2
    Последнее сообщение: 14.06.2007, 20:58

Ваши права

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