Obsidean_VM/04-InLavoro/9..... MASTER Transport/Standard Transport/FC551 FC FC Compute Machine...

175 lines
5.0 KiB
Markdown
Raw Normal View History

2025-02-18 05:37:27 -03:00
* 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
```