Поправил скрипт, поправил неточности в библиотеке
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM721_AI
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM721_AI : REAL
|
||||
(*
|
||||
Перевод значений входов модуля AIM721 из единиц АЦП в 0..20 мА
|
||||
*)
|
||||
VAR_INPUT
|
||||
ADC: DINT;
|
||||
END_VAR
|
||||
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
AIM721_AI := DINT_TO_REAL(ADC)*REAL#2.40802793E-006;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,22 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM722_AI
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM722_AI : REAL
|
||||
(*
|
||||
Перевод значений входов модуля AIM722 из единиц АЦП в 0..20 мА
|
||||
*)
|
||||
VAR_INPUT
|
||||
ADC: DINT;
|
||||
END_VAR
|
||||
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
AIM722_AI := DINT_TO_REAL(ADC)*REAL#2.384185791015625E-006;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,22 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM723_AI
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM723_AI : REAL
|
||||
(*
|
||||
Перевод значений входов модуля AIM723 из единиц АЦП в 4..20 мА
|
||||
*)
|
||||
VAR_INPUT
|
||||
ADC: DINT;
|
||||
END_VAR
|
||||
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
AIM723_AI := REAL#4.0 + DINT_TO_REAL(ADC)*REAL#1.93119072E-006;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,92 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM725_Status
|
||||
Type : FUNCTION_BLOCK
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION_BLOCK AIM725_Status
|
||||
(*
|
||||
Модуль формирования статуса
|
||||
Гистерезис по отключению и задержка по включению
|
||||
-1 - нет связи с датчиком
|
||||
0 - не определено
|
||||
1 - норма
|
||||
2 - предупредительный по нижнему уровню
|
||||
3 - аварийный по нижнему уровню
|
||||
4 - предупредительный по верхнему уровню,
|
||||
5 - аварийный по верхнему уровню
|
||||
*)
|
||||
VAR_INPUT
|
||||
Input: REAL;
|
||||
fail_hi: REAL:=3.402823466E+38;
|
||||
delta_fail_hi: REAL := 0;
|
||||
time_fail_hi: TIME :=t#0s;
|
||||
warn_hi: REAL:=3.402823466E+38;
|
||||
delta_warn_hi: REAL := 0;
|
||||
time_warn_hi: TIME :=t#0s;
|
||||
warn_low: REAL:=-3.402823466E+38;
|
||||
delta_warn_low: REAL := 0;
|
||||
time_warn_low: TIME :=t#0s;
|
||||
fail_low: REAL:=-3.402823466E+38;
|
||||
delta_fail_low: REAL := 0;
|
||||
time_fail_low: TIME :=t#0s;
|
||||
Modul_status: BYTE;
|
||||
Chanel_num: BYTE;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Status: INT;
|
||||
T_mod: INT;
|
||||
END_VAR
|
||||
VAR
|
||||
(* !!! ВНУТРЕННИЕ НЕВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
|
||||
TON_fail_hi: TON;
|
||||
TON_warn_hi: TON;
|
||||
TON_warn_low: TON;
|
||||
TON_fail_low: TON;
|
||||
(* !!! ВНУТРЕННИЕ ВЫХОДНЫЕ ПЕРЕМЕННЫЕ!!! *)
|
||||
fail_hi_st: BOOL;
|
||||
warn_hi_st: BOOL;
|
||||
normal_st: BOOL;
|
||||
warn_low_st: BOOL;
|
||||
fail_low_st: BOOL;
|
||||
no_signal_st: BOOL;
|
||||
END_VAR
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
no_signal_st := (Input <= - REAL#200 OR ((Modul_status.0 OR Modul_status.4 OR Modul_status.5) AND Chanel_num = 1) OR ((Modul_status.1 OR Modul_status.6 OR Modul_status.7) AND Chanel_num = 2) OR Modul_status.2 OR Modul_status.3);
|
||||
IF no_signal_st THEN T_mod := - INT#500; ELSE T_mod := REAL_TO_INT(Input); END_IF;
|
||||
|
||||
TON_fail_low(IN := ((Input <= fail_low) AND NOT(no_signal_st)), PT := time_fail_low);
|
||||
IF TON_fail_low.Q THEN fail_low_st := TRUE; ELSIF (Input > fail_low + delta_fail_low) THEN fail_low_st := FALSE; END_IF;
|
||||
|
||||
TON_warn_low(IN := ((Input <= warn_low) AND NOT(no_signal_st) AND NOT(TON_fail_low.Q)), PT := time_warn_low);
|
||||
IF TON_warn_low.Q THEN warn_low_st := TRUE; ELSIF (Input > warn_low + delta_warn_low) THEN warn_low_st := FALSE; END_IF;
|
||||
|
||||
TON_fail_hi(IN := ((Input >= fail_hi) AND NOT(no_signal_st)), PT := time_fail_hi);
|
||||
IF TON_fail_hi.Q THEN fail_hi_st := TRUE; ELSIF (Input < fail_hi - delta_fail_hi) THEN fail_hi_st := FALSE; END_IF;
|
||||
|
||||
TON_warn_hi(IN := ((Input >= warn_hi) AND NOT(no_signal_st) AND NOT(TON_fail_hi.Q)), PT := time_warn_hi);
|
||||
IF TON_warn_hi.Q THEN warn_hi_st := TRUE; ELSIF (Input < warn_hi - delta_warn_hi) THEN warn_hi_st := FALSE; END_IF;
|
||||
|
||||
normal_st := (NOT(no_signal_st) AND NOT(fail_low_st) AND NOT(warn_low_st) AND NOT(warn_hi_st) AND NOT(fail_hi_st));
|
||||
|
||||
IF no_signal_st THEN
|
||||
Status := - INT#1;
|
||||
ELSIF fail_hi_st THEN
|
||||
Status := INT#5;
|
||||
ELSIF fail_low_st THEN
|
||||
Status := INT#3;
|
||||
ELSIF warn_hi_st THEN
|
||||
Status := INT#4;
|
||||
ELSIF warn_low_st THEN
|
||||
Status := INT#2;
|
||||
ELSIF normal_st THEN
|
||||
Status := INT#1;
|
||||
ELSE
|
||||
Status := INT#0;
|
||||
END_IF;
|
||||
END_FUNCTION_BLOCK
|
||||
@@ -0,0 +1,21 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM726_AI
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM726_AI : REAL
|
||||
(*
|
||||
Перевод значений входов модуля AIM726 из единиц АЦП в 0..40 В
|
||||
*)
|
||||
VAR_INPUT
|
||||
ADC : DWORD; (*Единицы АЦП*)
|
||||
END_VAR
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
AIM726_AI := DWORD_TO_REAL(ADC) * REAL#4.768372E-006;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,22 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM727_AI
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM727_AI : REAL
|
||||
(*
|
||||
Перевод значений входов модуля AIM727 из единиц АЦП в 0..40 V
|
||||
*)
|
||||
VAR_INPUT
|
||||
ADC: DINT; (*Единицы АЦП*)
|
||||
END_VAR
|
||||
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
AIM727_AI := DINT_TO_REAL(ADC)*REAL#4.768372E-006;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,31 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM730_AO
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM730_AO : WORD
|
||||
(*
|
||||
Перевод значений 0..20 мА или 4..20 мА в единицы АЦП выходов модуля AIM730
|
||||
Диапазон:
|
||||
RANGE = 0 - 0..20 мА
|
||||
RANGE = 1 - 4..20 мА
|
||||
*)
|
||||
VAR_INPUT
|
||||
DAC : REAL; (*Миллиамперы*)
|
||||
RANGE : BYTE; (*Диапазон: 0..20 мА - 0; 4..20 мА - 1 *)
|
||||
END_VAR
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
IF (RANGE = 1) AND (DAC < 4) THEN AIM730_AO := WORD#4; RETURN;END_IF;
|
||||
CASE RANGE OF
|
||||
0 : AIM730_AO := REAL_TO_WORD(DAC/REAL#0.00030518);
|
||||
1 : AIM730_AO := REAL_TO_WORD((DAC - REAL#4)/REAL#0.00024414435);
|
||||
ELSE
|
||||
AIM730_AO := WORD#0;
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,30 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM731_AO
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM731_AO : WORD
|
||||
(*
|
||||
Перевод значений -10..+10 В или 0..+10 В в единицы АЦП выходов модуля AIM731
|
||||
Диапазон:
|
||||
RANGE = 0 - -10..+10 В
|
||||
RANGE = 1 - 0..+10 В
|
||||
*)
|
||||
VAR_INPUT
|
||||
DAC : REAL; (*Вольты*)
|
||||
RANGE : BYTE; (*Диапазон -10..+10 В - 0; 0..+10 В - 1 *)
|
||||
END_VAR
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
CASE RANGE OF
|
||||
0 : AIM731_AO := REAL_TO_WORD((DAC + REAL#10.0)/REAL#0.00030518);
|
||||
1 : AIM731_AO := REAL_TO_WORD(DAC/REAL#0.00015259);
|
||||
ELSE
|
||||
AIM731_AO := 0;
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,33 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : AIM791_AI
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION AIM791_AI : REAL
|
||||
(*
|
||||
Перевод значений входов модуля AIM791 из единиц АЦП в 0..5 мА / 0..20 мА / 4..20 мА
|
||||
Диапазон:
|
||||
RANGE = 0 - 0..5 мА
|
||||
RANGE = 1 - 0..20 мА
|
||||
RANGE = 2 - 4..20 мА
|
||||
*)
|
||||
VAR_INPUT
|
||||
ADC: WORD;
|
||||
RANGE: BYTE := 0;
|
||||
END_VAR
|
||||
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
CASE RANGE OF
|
||||
0 : AIM791_AI := WORD_TO_REAL(ADC) * REAL#7.820248722E-005;
|
||||
1 : AIM791_AI := WORD_TO_REAL(ADC) * REAL#3.128099488E-004;
|
||||
2 : AIM791_AI := (WORD_TO_REAL(ADC) * REAL#3.128099488E-004) - REAL#4.0;
|
||||
ELSE
|
||||
AIM791_AI := REAL#0.0;
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,25 @@
|
||||
(*
|
||||
===============================================================================
|
||||
Project : PLC_Library
|
||||
Device : -
|
||||
Path : Fastwel
|
||||
Name : DIM764_DI
|
||||
Type : FUNCTION
|
||||
Exported : 2026-07-31 11:16:16
|
||||
===============================================================================
|
||||
*)
|
||||
|
||||
FUNCTION DIM764_DI : REAL
|
||||
(*На выходе - Частота в Гц*)
|
||||
VAR_INPUT
|
||||
IN: DWORD;
|
||||
RANGE: BYTE; (* 0-Period; 1-Interval; *)
|
||||
END_VAR
|
||||
(*----- IMPLEMENTATION -----*)
|
||||
CASE RANGE OF
|
||||
0 : IF(IN=0) THEN DIM764_DI:=0; ELSE DIM764_DI := 50000000.0/DWORD_TO_REAL(IN); END_IF;
|
||||
1 : DIM764_DI:=DWORD_TO_REAL(IN)/50.0;
|
||||
ELSE
|
||||
DIM764_DI:=0;
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
Reference in New Issue
Block a user