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

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