175 lines
5.0 KiB
Markdown
175 lines
5.0 KiB
Markdown
|
|
|||
|
* 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
|
|||
|
***
|
|||
|
|
|||
|
```pascal
|
|||
|
|
|||
|
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:
|
|||
|
***
|
|||
|
```pascal
|
|||
|
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
|
|||
|
|
|||
|
```pascal
|
|||
|
|
|||
|
// 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:
|
|||
|
```pascal
|
|||
|
|
|||
|
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
|
|||
|
```
|
|||
|
|