5.0 KiB
5.0 KiB
- The call of the FC551 ==must be after the reset of the DBMW94== because inside is set the DBX94.1
Example of use for Analogic
CALL "FC Compute Machine Speed"
Machine_DB :="DB Signal Blower"
Infeed_Signal_type :=#"Type_4-20ma"
Infeed_Signal_PEW :="EW1000":P
Infeed_Signal_Ethernet_IN :=0
Discharge_Signal_type :=#"Type_4-20ma"
Discharge_Signal_PEW :="EW1002"
Discharge_Signal_Ethernet_IN :=0
If Ethernet signals are needed it can be called like this:
CALL "FC Compute Machine Speed"
Machine_DB :="DB Signal Blower"
Infeed_Signal_type :=#Type_Ethernet_Bph
Infeed_Signal_PEW :=0
Infeed_Signal_Ethernet_IN :=DBxxx.Speed_By_Ethernet_Infeed
Discharge_Signal_type :=#Type_Ethernet_Bph
Discharge_Signal_PEW :=0
Discharge_Signal_Ethernet_IN :=DBxxx.Speed_By_Ethernet_Outlet
The types of communications to be adapted can be:
This uses xxxx_Signal_PEW
- Type_0_10v
- Type_4-20ma
- Type 0-20ma
This uses xxxx_Signal_Ethernet
- Type_Ethernet_Bph
- Type_Ethernet_Bpm
- Type_Ethernet_%
Infeed Data used on the DB exchange
- IN_CPM_Max DBW30
- IN_Diammeter DBW34
- IN_Adjustement_% DBW40
- IN_Minimun_% DBW42
- OUT_ACT_Speed% DBW60
- OUT_ACT_CPM DBW64
- OUT_ACT_Use DBW62
- OUT_PEW DBW68
- OUT_ACT_mm_sec DBW66
Discharge Data used on the DB exchange
- IN_CPM_Max DBW46
- IN_Adjustement_% DBW50
- IN_Minimun_% DBW52
- IN_Step DBW48
- OUT_ACT_Speed% DBW70
- OUT_ACT_CPM DBW74
- OUT_ACT_mm_sec DBW76
- OUT_ACT_Use DBW72
- OUT_PEW DBW78
// READ Recipe/HMI Data
#Ch.IN_CPM_Max := #"IN HMI-Recipe Data"[1];
#Ch.IN_Diammeter_Step := #"IN HMI-Recipe Data"[2];
#Ch."IN_Adjustement_%" :=#"IN HMI-Recipe Data"[3];
#Ch."IN_Minimun_%" := #"IN HMI-Recipe Data"[4];
// Calcolate Infeed_PEW
IF #Signal_type <> #Type_Disabled THEN
CASE #Signal_type OF
#Type_Ethernet_Bph:
// Signal from Ethernet - Bottle per Hour
#Ch."OUT_ACT_Speed%" := (DINT_TO_REAL(#Signal_Ethernet_IN) * 1000.0 / 60.0) / #Ch.IN_CPM_Max;
#Machine_DB.Analogic.Input[#Channel] := #Signal_Ethernet_IN * 10;
#Type_Ethernet_Bpm:
// Signal from Ethernet - Bottle per Minute
#Ch."OUT_ACT_Speed%" := DINT_TO_REAL(#Signal_Ethernet_IN) * 1000.0 / #Ch.IN_CPM_Max;
#Machine_DB.Analogic.Input[#Channel] := #Signal_Ethernet_IN * 10;
#"Type_Ethernet_%":
// Signal from Ethernet - % 0 - 100
#Ch."OUT_ACT_Speed%" := (DINT_TO_REAL(#Signal_Ethernet_IN) * 1000.0) / 100.0;
#Machine_DB.Analogic.Input[#Channel] := #Signal_Ethernet_IN * 10;
ELSE
// Signal from Analogic
IF DINT_TO_REAL(#Signal_PEW) <= 32511 THEN
#Ch."OUT_ACT_Speed%" := (DINT_TO_REAL(#Signal_PEW) * 1000.0) / 27648.0;
ELSE
#Ch."OUT_ACT_Speed%" := 0;
END_IF;
#Machine_DB.Analogic.Input[#Channel] := #Signal_PEW;
END_CASE;
// Speed CPM
#Ch.OUT_ACT_CPM := #Ch."OUT_ACT_Speed%" * #Ch.IN_CPM_Max / 1000.0;
// Speed mm/sec
#Ch.OUT_ACT_mm_sec := #Ch.OUT_ACT_CPM / 60.0 * (#Ch.IN_Diammeter_Step * 10.0);
// Speed Perc Use
#Ch.OUT_ACT_Use := #Ch."OUT_ACT_Speed%" * (#Ch."IN_Adjustement_%" + 1000.0) / 1000.0;
IF #Ch.OUT_ACT_Use < #Ch."IN_Minimun_%" THEN
#Ch.OUT_ACT_Use := #Ch."IN_Minimun_%";
END_IF;
CASE #Signal_type OF
#Type_0_10v:
#Ch.OUT_PEW := #Ch."OUT_ACT_Speed%" / 10.0;
#"Type_4-20ma":
#Ch.OUT_PEW := (#Ch."OUT_ACT_Speed%" / 1000.0) * 160.0 + 40.0;
#"Type 0-20ma":
#Ch.OUT_PEW := (#Ch."OUT_ACT_Speed%" / 1000.0) * 200.0;
END_CASE;
ELSE
#Ch.OUT_PEW := 0;
END_IF;
// WRITE #Machine_DB
#"OUT Analog Processed"[1] := ROUND_INT(#Ch."OUT_ACT_Speed%");
#"OUT Analog Processed"[2] := ROUND_INT(#Ch.OUT_ACT_Use);
#"OUT Analog Processed"[3] := ROUND_INT(#Ch.OUT_ACT_CPM);
#"OUT Analog Processed"[4] := ROUND_INT(#Ch.OUT_ACT_mm_sec);
#"OUT Analog Processed"[5] := ROUND_INT(#Ch.OUT_PEW);
#Machine_DB.Configuration.Analogic.Input_Type[#Channel] := #Signal_type;
#"Actual Speed" := ROUND_DINT(#Ch.OUT_ACT_CPM * 60.0);
On the old FC551 the max values can be check by:
Add this 2 networks:
Network 2:
// Check Analog Overflow IN
L DINT#0
L %DBW4 //Speed Infeed
L DINT#32511
<=D
SPB IsOkIn // Value is under maximun
L 0 // Value is over max value
T %DBW4
IsOkIn : NOP 0
Network 10:
// Check Analog Overflow OUT
L DINT#0
L %DBW6 //Speed Infeed
L DINT#32511
<=D
SPB IsOkOut // Value is under maximun
L 0 // Value is over max value
T %DBW6
IsOkOut : NOP 0