Спасибо за ответ, приблизительно так и думал. Предполагал, что есть макрос и нем реализованы выходы за измеряемую величину (типа авария датчика)
Вид для печати
Есть - в компонентах - Convert_4_20_
Заодно он ещё и диагностику исправности датчика выполняет.
Я сейчас стал использовать самодельный, но на основе этого - просто дополнил входом для дополнительной диагностики неисправности датчика - например, неисправность ПРМ или аппаратный контроль датчика.
Код:///<Description>Макрос позволяет отмасштабировать аналоговый сигнал заданный в диапазоне 4...20 мА</Description>
///<Author>!!FPA!!</Author>
///<GroupName>Аналоговые преобразования</GroupName>
function_block Convert_4_20_
var_input
///<Description>Масштабируемое входное значение</Description>
IN : real;
///<Description>Верхний предел выходного значения</Description>
High : real;
///<Description>Нижний предел выходного значения</Description>
Low : real;
///<Description>Значение выхода при отказе датчика</Description>
Err_Value : real;
///<Description>Внешний сигнал неисправности/недостоверности показаний датчика (отказ модуля ввода)</Description>
Ext_error : bool;
end_var
var_output
///<Description>Выход отмасштабированой входной величины</Description>
Out : real;
///<Description>Выход обработки ошибок</Description>
Err_Sens : bool;
end_var
var
I_HH : real := 20.8; //20.0 + (16.0 * 5.0 / 100.0);
I_H : real := 20.4; //20.0 + (16.0 * 2.5 * 0.01);
I_L : real := 3.6; // 4.0 - (16.0 * 2.5 * 0.01);
I_LL : real := 3.2; // 4.0 - (16.0 * 5.0 * 0.01);
error_LL : bool;
error_HH : bool;
end_var
error_LL := error_LL and (IN <= I_L) or (IN < I_LL);
error_HH := error_HH and (IN >= I_H) or (IN > I_HH);
Err_Sens := Ext_error or error_LL or error_HH;
if Err_Sens then
Out := Err_Value;
else
Out := Low + (IN - 4.0) / 16.0 * (High - Low);
if Out < Low then
Out := Low;
elsif Out > High then
Out := High;
end_if;
end_if;
end_function_block
При подключении датчика к ПРМ уже нет возможности работы с диагностическими переменными - нужно дополнять проверкой исправности ПРМ.
Плюс, с экрана ПР невозможно менять настройки аппаратных переменных (диапазона измерений) - нужно лезть в системное меню, что в эксплуатации - недопустимо.