Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte
Ergebnis 41 bis 50 von 55

Thema: Jobwechsel - Softwarestandard in neuer Firma

  1. #41
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von UniMog Beitrag anzeigen
    Soll man auf den Quatsch wirklich was antworten ??........ Liegt das an dem "Wenn man ganz crazy drauf ist" oder wo kommen diese intelligenten Lebensweisheiten her ??
    Was zum Geier soll daran Quatsch sein ? Daß man Prozessautomation auch ohne APL aufbauen kann ? Und wie das geht!
    Code:
    FUNCTION_BLOCK BST_VALVE_400
    NAME:BSTVALVE
    FAMILY:BST
    AUTHOR:BADBIT
    //VERSION:'2.0'
    //FB 630
    
    // Typical-Attribute
    {
      S7_tasklist:='OB100,OB101';
      S7_m_c:='true';
      S7_blockview:='big'
    }
    
    // Parameterattribute
    // S7_visible       sichtbar/unsichtbar (default='true')
    // S7_m_c           WinCC - Tag         (default='false')
    // S7_dynamic       Testmodus           (default='false')
    VAR_INPUT
        LOCK        {S7_dynamic:='true'} : BOOL := FALSE; // Interlock
        ERR_EXTERN  {S7_dynamic:='true'} : BOOL := FALSE; // External Error
        LIOP_SEL    {S7_dynamic:='true'} : BOOL := FALSE; // 0=Operator 1=Linking
        L_AUT       {S7_dynamic:='true'} : BOOL := FALSE; // 0=Manual 1=Automatic
        L_REMOTE    {S7_dynamic:='true'} : BOOL := FALSE; // 0=Lokal 1=Remote
        L_SIM       {S7_dynamic:='true'} : BOOL := FALSE; // 0=Normal 1=Simulation
        L_RESET     {S7_dynamic:='true'} : BOOL := FALSE; // 1=Reset Error Peripherie
        AUT_OP      {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD OPEN Automatic
        MAN_OP      {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD OPEN Manual
        SIM_OP      {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD OPEN Simulation
        FB_OPEN     {S7_dynamic:='true'} : BOOL := FALSE; // Feedback VALVE open
        FB_CLOSE    {S7_dynamic:='true'} : BOOL := TRUE;  // Feedback VALVE close
        L_MON       {S7_dynamic:='true'} : BOOL := TRUE;  // 1=Monitoring Feedback OPEN
        MON_T       {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 10.0; // Monitoring Time
    
        SAMPLE_T    {S7_sampletime:='true'} : REAL := 0.0; // Sample Time
       
        // Message blocks
        MSG1_EVID { S7_visible  :='false';
                    S7_link     :='false';
                    S7_param    :='false';
                    S7_server   :='alarm_archiv';
                    S7_a_type   :='alarm_8p'}: DWORD :=0;
        MSG2_EVID { S7_visible  :='false';
                    S7_link     :='false';
                    S7_param    :='false';
                    S7_server   :='alarm_archiv';
                    S7_a_type   :='notify_8p'}: DWORD :=0;
    END_VAR
    
    VAR_IN_OUT
        OP_dwCmd    {S7_dynamic := 'true'; S7_m_c := 'true'} : DWORD :=0;   // control word wincc
    END_VAR
    
    VAR_OUTPUT
        QdwState    {S7_dynamic:='true'; S7_m_c:='true'}: DWORD:=0;     // status wincc
        QabyState AT QdwState : ARRAY [0..3] OF BYTE;                   // look at state byte-wise
    
        QwState     {S7_dynamic:='true'}: WORD:= 0; //0=close, 1=opening, 2=open, 3=closing
        
        QCLOSE     {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Closed
        QOPENING   {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Opening
        QOPEN      {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Open
        QCLOSING   {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Closing
        
        QCMD_OP    {S7_dynamic:='true'} : BOOL := FALSE;     // 0=Close 1=Open
    
        QMON        {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Monitoring Feedback
        QMON_ERR    {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Monitoring Error
        QMON_T      {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 0.0; // Current Monitoring Time Feedback
        
        QMAN_AUT   {S7_dynamic:='true'} : BOOL := FALSE;     // 0=Hand 1=Automatic
        QREMOTE    {S7_dynamic:='true'} : BOOL := FALSE;     // 0=Local 1=Remote
        QSIM       {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Simulaition is active
        QLOCK      {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Lock is active
        QERR       {S7_dynamic:='true'} : BOOL := FALSE;     // 1=ERROR
        QERR_EXT   {S7_dynamic:='true'} : BOOL := FALSE;     // 1=External ERROR
    
        
        //Alarm
        MSG1_bDone  {S7_visible:='false'} : BOOL; // A8P
        MSG1_bError {S7_visible:='false'} : BOOL; // A8P
        MSG1_wState {S7_visible:='false'} : WORD; // A8P
        MSG1_wAck   {S7_visible:='false'} : WORD; // A8P
        MSG2_bDone  {S7_visible:='false'} : BOOL; // N8P
        MSG2_bError {S7_visible:='false'} : BOOL; // N8P
        MSG2_wState {S7_visible:='false'} : WORD; // N8P
    END_VAR
    
    VAR
        OPdwCmdHMI : DWORD := 16#0;                       // Operator Commands in HMI format
        OPabyCmdHMI AT OPdwCmdHMI : ARRAY [0..3] OF BYTE; // look at HMI command byte-wise
        OPdwCmdPLC : DWORD := 16#0;                       // Operator Commands in PLC format
        OPabyCmdPLC AT OPdwCmdPLC : ARRAY [0..3] OF BYTE; // look at plc command byte-wise
        OPabCmdPLC AT OPdwCmdPLC : ARRAY [0..31] OF BOOL; // look at plc command bit-wise
        
        QdwStatePLC : DWORD := 16#0;                        // State word in PLC format
        QabyStatePLC AT QdwStatePLC : ARRAY [0..3] OF BYTE; // look at state byte-wise
        QabStatePLC AT QdwStatePLC : ARRAY [0..31] OF BOOL; // look at state bit-wise
            
      
        A8P   : ALARM_8P;
        N8P   : NOTIFY_8P;
        //---time stamp structure for alarm_t call
        STRUCT_TS : STRUCT     
            wFormat : WORD ; //time format
            aDT : ARRAY [1..8] OF DATE_AND_TIME;         //array date and time
        END_STRUCT ;
        
        // TAGS for Operation´
        OP_RESET : BOOL := FALSE;
        
        // TAGS for Edge detect
        L_RESET_OLD : BOOL := FALSE;
        AUT_OP_OLD : BOOL := FALSE;
        MAN_OP_OLD : BOOL := FALSE;
        QOPENING_OLD : BOOL := FALSE;
        QCLOSING_OLD : BOOL := FALSE;
        
        // TAGS for Simulation
        FB_SIM_OPEN  : BOOL := FALSE;
        FB_SIM_CLOSE : BOOL := TRUE;
        SIM_T    : REAL := 5.0;
        QCMD_SIM : BOOL := FALSE;
        
    END_VAR
    
    VAR_TEMP
    TOP_SI: STRUCT
          EV_CLASS  : BYTE;
          EV_NUM    : BYTE;
          PRIORITY  : BYTE;
          NUM       : BYTE;
          TYP2_3    : BYTE;
          TYP1      : BYTE;
          ZI1       : WORD;
          ZI2_3     : DWORD;
    END_STRUCT;
    
    START_UP_SI: STRUCT
          EV_CLASS  : BYTE;
          EV_NUM    : BYTE;
          PRIORITY  : BYTE;
          NUM       : BYTE;
          TYP2_3    : BYTE;
          TYP1      : BYTE;
          ZI1       : WORD;
          ZI2_3     : DWORD;
    END_STRUCT;
    iRet          : INT;
    
    END_VAR
    
    
    BEGIN
    
    // START UP =====================================================================
        iRet := SFC6 (TOP_SI:= TOP_SI, START_UP_SI:= START_UP_SI);
        IF (TOP_SI.NUM = 100 OR TOP_SI.NUM = 101) THEN
            
            OPabCmdPLC[9] := TRUE;  // Disable Feedback Monitoring
            OPabCmdPLC[19] := TRUE; // Activate Remote Control
            
            QCMD_OP   := FALSE;
            QCLOSE    := TRUE;
            QOPENING  := FALSE;
            QOPEN     := FALSE;
            QCLOSING  := FALSE;
            QwState := 0;
            
            iRet := 0;
        END_IF;
    // END STARTUP ==================================================================
    
    // Change lowbyte to highbyte for HMI command word ==================
        OPdwCmdHMI := OP_dwCmd;
        OPabyCmdPLC[0] := OPabyCmdHMI[3];
        OPabyCmdPLC[1] := OPabyCmdHMI[2];
        OPabyCmdPLC[2] := OPabyCmdHMI[1];
        OPabyCmdPLC[3] := OPabyCmdHMI[0]; 
    
    // ******************************************************************************
    // Begin: Operation functions ***************************************************
        
    // MANUAL / AUTOMATIC Operation =======================================
        IF (LIOP_SEL AND NOT L_AUT) OR (OPabCmdPLC[16] AND NOT LIOP_SEL) THEN 
            QMAN_AUT := FALSE;
        ELSIF (LIOP_SEL AND L_AUT) OR (OPabCmdPLC[17] AND NOT LIOP_SEL) THEN 
            QMAN_AUT := TRUE;
        END_IF;
        
    // LOCAL / REMOTE Operation =========================================
        IF (LIOP_SEL AND NOT L_REMOTE) OR (OPabCmdPLC[18] AND NOT LIOP_SEL) THEN
            QREMOTE := FALSE;
        ELSIF (LIOP_SEL AND L_REMOTE) OR (OPabCmdPLC[19] AND NOT LIOP_SEL) THEN
            QREMOTE := TRUE;
        END_IF;
        
    // SIMULATION ON / OFF ==============================================
        IF (LIOP_SEL AND NOT L_SIM) OR (OPabCmdPLC[20] AND NOT LIOP_SEL) THEN
            QSIM := FALSE;
        ELSIF (LIOP_SEL AND L_SIM) OR (OPabCmdPLC[21] AND NOT LIOP_SEL) THEN
            QSIM := TRUE;
            QCMD_OP := FALSE;
        END_IF;
        
    // RESET Operation ==================================================
        IF (LIOP_SEL AND L_RESET AND NOT L_RESET_OLD) OR (OPabCmdPLC[24] AND NOT LIOP_SEL) THEN
            OP_RESET := TRUE;
        ELSE
            OP_RESET := FALSE;
        END_IF;
        
    // MONITORING FEEDBACK ON / OFF =====================================
        IF (LIOP_SEL AND L_MON) OR (OPabCmdPLC[8] AND NOT LIOP_SEL) THEN
            QMON := TRUE;
        ELSIF (LIOP_SEL AND NOT L_MON) OR (OPabCmdPLC[9] AND NOT LIOP_SEL) THEN
            QMON := FALSE;
        END_IF;
        
    // OPEN / CLOSE Valve (AUTOMATIC)====================================
        IF (QMAN_AUT AND AUT_OP AND NOT AUT_OP_OLD AND NOT QSIM) THEN
            QCMD_OP := TRUE;
        ELSIF (QMAN_AUT AND NOT AUT_OP AND NOT QSIM) THEN
            QCMD_OP := FALSE;
        END_IF;
        
    // OPEN / CLOSE Valve (MANUAL)=======================================
        IF (NOT QMAN_AUT AND NOT QREMOTE AND MAN_OP AND NOT MAN_OP_OLD AND NOT QSIM) OR (OPabCmdPLC[1] AND NOT QMAN_AUT AND QREMOTE AND NOT QSIM)  THEN
            QCMD_OP := TRUE;
        ELSIF (NOT QMAN_AUT AND NOT QREMOTE AND NOT MAN_OP AND NOT QSIM) OR (OPabCmdPLC[0] AND NOT QMAN_AUT AND QREMOTE AND NOT QSIM) THEN
            QCMD_OP := FALSE;
        END_IF;
    
    // OPEN / CLOSE Valve (SIMULATION)===================================
        IF (QSIM AND NOT QREMOTE AND SIM_OP) OR (OPabCmdPLC[1] AND QREMOTE AND QSIM) THEN
            QCMD_SIM := TRUE;
        ELSIF (QSIM AND NOT QREMOTE AND NOT SIM_OP) OR (OPabCmdPLC[0] AND QREMOTE AND QSIM) THEN
            QCMD_SIM := FALSE;
        END_IF;
    // END: Operation functions *****************************************************
    // ******************************************************************************
    
    //=================================
    //            QwState
    //0 = Close
    //1 = Opening
    //2 = Open
    //3 = Closing
    //=================================
    
    //--------------------------
    //QwState = 0; CLOSE
    //--------------------------
        IF NOT QSIM THEN    // *** Process Mode ***
            IF 
                (NOT QCMD_OP AND QwState=3 AND NOT QMON_ERR AND FB_CLOSE) OR
                (NOT QCMD_OP AND QwState=3 AND NOT QMON)
            THEN
                QCLOSE    := TRUE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 0;
            END_IF;
        ELSE                // *** Simulation Mode ***
            IF 
                (NOT QCMD_SIM AND QwState=3 AND FB_SIM_CLOSE) OR
                (NOT QCMD_SIM AND QwState=3 AND NOT QMON)
            THEN
                QCLOSE    := TRUE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 0;
            END_IF;
        END_IF;
            
    //--------------------------
    //QwState = 1; OPENING
    //--------------------------
        IF NOT QSIM THEN    // *** Process Mode ***
            IF (QCMD_OP AND (QwState = 0 OR QwState = 3)) THEN 
                QCLOSE    := FALSE;
                QOPENING  := TRUE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 1;
            END_IF;
        ELSE                // *** Simulation Mode ***
            IF (QCMD_SIM AND (QwState = 0 OR QwState = 3)) THEN 
                QCLOSE    := FALSE;
                QOPENING  := TRUE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 1;
            END_IF;
        END_IF;
        
        
    //--------------------------
    //QwState = 2; OPEN
    //--------------------------
        IF NOT QSIM THEN        // *** Process Mode ***
            IF 
                (QCMD_OP AND QwState=1 AND NOT QMON_ERR AND FB_OPEN) OR
                (QCMD_OP AND QwState=1 AND NOT QMON)
            THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := TRUE;
                QCLOSING  := FALSE;
                QwState := 2;
            END_IF;
        ELSE                    // *** Simulation Mode ***
            IF  
                (QCMD_SIM AND QwState=1 AND FB_SIM_OPEN) OR
                (QCMD_SIM AND QwState=1 AND NOT QMON)
            THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := TRUE;
                QCLOSING  := FALSE;
                QwState := 2;
            END_IF;
        END_IF;
            
    //--------------------------
    //QwState = 3; CLOSING
    //--------------------------
        IF NOT QSIM THEN        // *** Process Mode ***
            IF (NOT QCMD_OP AND (QwState = 1 OR QwState = 2)) THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := TRUE;
                QwState := 3;
            END_IF;
        ELSE                    // *** Simulation Mode ***
            IF (NOT QCMD_SIM AND (QwState = 1 OR QwState = 2)) THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := TRUE;
                QwState := 3;
            END_IF;
        END_IF;
        
    // Feedback Monitoring =================================================
        IF QMON THEN
            IF (QOPENING AND NOT QOPENING_OLD) OR (QCLOSING AND NOT QCLOSING_OLD) THEN
                QMON_T := 0.0;
            END_IF;
            
            IF NOT QSIM THEN    // *** Process Mode ****
                IF (QOPENING OR QCLOSING) THEN
                    QMON_T := QMON_T + SAMPLE_T;
                    IF (QMON_T >= MON_T) THEN
                        QMON_ERR := TRUE;
                    END_IF;
                ELSE
                    QMON_T := 0.0;
                END_IF;
                IF (QOPEN AND (NOT FB_OPEN OR FB_CLOSE)) OR (QCLOSE AND (FB_OPEN OR NOT FB_CLOSE)) THEN
                    QMON_ERR := TRUE;
                END_IF;
            ELSE               // *** Simulation Mode ***
                IF (QOPENING) THEN
                    QMON_T := QMON_T + SAMPLE_T;
                    FB_SIM_CLOSE := FALSE;
                    IF (QMON_T >= SIM_T) THEN
                        FB_SIM_OPEN := TRUE;
                    END_IF;
                ELSIF (QCLOSING) THEN
                    QMON_T := QMON_T + SAMPLE_T;
                    FB_SIM_OPEN := FALSE;
                    IF (QMON_T >= SIM_T) THEN
                        FB_SIM_CLOSE := TRUE;
                    END_IF;
                ELSE
                    QMON_T := 0.0;
                END_IF;
            END_IF;
        END_IF;
    // END Monitoring ======================================================
        
    // Check Errors ========================================================
        QERR_EXT := ERR_EXTERN;
        IF LOCK AND (QOPENING OR QOPEN) THEN
            QLOCK := TRUE;
        END_IF;
        QERR := QERR_EXT OR QMON_ERR OR QLOCK;
        
    // RESET Errors ========================================================
        IF OP_RESET THEN
            QMON_ERR  := FALSE;
            QLOCK     := FALSE;
        END_IF;
    
    // If Error then Stop ==================================================        
        IF QERR THEN
            QCLOSE    := TRUE;
            QOPENING  := FALSE;
            QOPEN     := FALSE;
            QCLOSING  := FALSE;
            QCMD_OP   := FALSE;
            QCMD_SIM  := FALSE;
            QwState   := 0;
            QMON_T    := 0.0;
        END_IF;
       
    // Set State for HMI ===================================================
        QabStatePLC[0]  := QCLOSE;      // 1=Close
        QabStatePLC[1]  := QOPENING;    // 1=Opening
        QabStatePLC[2]  := QOPEN;       // 1=Open
        QabStatePLC[3]  := QCLOSING;    // 1=Closing
        QabStatePLC[4]  := 0;
        QabStatePLC[5]  := 0;
        QabStatePLC[6]  := 0;
        QabStatePLC[7]  := 0;   
        QabStatePLC[8]  := QMON;        // 1=Feedback Monitoring ON
        QabStatePLC[9]  := QMON_ERR;    // 1=Error Feedback Monitoring
        QabStatePLC[10] := 0;
        QabStatePLC[11] := 0;  
        QabStatePLC[12] := 0;
        QabStatePLC[13] := 0;
        QabStatePLC[14] := 0;
        QabStatePLC[15] := 0;
        QabStatePLC[16] := QMAN_AUT;    // 0=Manual 1=Automatic
        QabStatePLC[17] := QREMOTE;     // 0=Local 1=Remote
        QabStatePLC[18] := QSIM;        // 0=Process 1=Simulation
        QabStatePLC[19] := 0;
        QabStatePLC[20] := 0;
        QabStatePLC[21] := 0;
        QabStatePLC[22] := 0;
        QabStatePLC[23] := 0;
        QabStatePLC[24] := QERR;        // 1=Error
        QabStatePLC[25] := QERR_EXT;    // 1=External Error
        QabStatePLC[26] := QLOCK;       // 1=Block Locked
        QabStatePLC[27] := LOCK;        // 1=INTERLOCK
        QabStatePLC[28] := 0;  
        QabStatePLC[29] := 0;  
        QabStatePLC[30] := 0;
        QabStatePLC[31] := 0;
        
        QabyState[0] :=QabyStatePLC[3];
        QabyState[1] :=QabyStatePLC[2];
        QabyState[2] :=QabyStatePLC[1];
        QabyState[3] :=QabyStatePLC[0];
        
    // Alarm_8P ==============================================
        A8P(            
            EN_R := 1,
            SIG_1 :=QMON_ERR,   // Monitoring Error
            SIG_2 :=0,
            SIG_3 :=0,
            SIG_4 :=0,
            SIG_5 :=QLOCK,      // Interlock Error
            SIG_6 :=0,
            SIG_7 :=QERR_EXT,   // External Error
            SIG_8 :=QERR,       // General Error
            ID := w#16#eeee,
            EV_ID := MSG1_EVID,
            SEVERITY := w#16#40
        );
        MSG1_bDone := A8P.DONE;
        MSG1_bError := A8P.ERROR;
        MSG1_wState := A8P.STATUS;
        MSG1_wAck := A8P.ACK_STATE;
    
    // Notify_8P ==============================================
        N8P(            // NOTIFY AP
            SIG_1 :=QCLOSE,     // CLOSE
            SIG_2 :=QOPENING,   // OPENING
            SIG_3 :=QOPEN,      // OPEN
            SIG_4 :=QCLOSING,   // CLOSING
            SIG_5 :=LOCK,       // Interlock
            SIG_6 :=QREMOTE,    // Remote
            SIG_7 :=QMAN_AUT,   // Automatic
            SIG_8 :=QSIM,       // Simulation
            ID := w#16#eeee,
            EV_ID := MSG2_EVID,
            SEVERITY := w#16#40 
        );
        MSG2_bDone := N8P.DONE;
        MSG2_bError := N8P.ERROR;
        MSG2_wState := N8P.STATUS;
        
        // Set Tags for edge detect =====================================
        L_RESET_OLD := L_RESET;
        AUT_OP_OLD := AUT_OP;
        MAN_OP_OLD := MAN_OP;
        QOPENING_OLD := QOPENING;
        QCLOSING_OLD := QCLOSING;
        
        //reset commands ================================================
        OP_dwCmd := 16#0;
    END_FUNCTION_BLOCK
    Geändert von Draco Malfoy (06.04.2015 um 18:23 Uhr)

  2. #42
    Registriert seit
    03.07.2006
    Beiträge
    1.725
    Danke
    515
    Erhielt 303 Danke für 223 Beiträge

    Standard

    Wunderschön.... jetzt hab ich auch mal einen Baustein von BADBIT..... Wenn du mal einen hast wo BATMAN steht... der ist von mir das war der Comedy Blog

    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    Was zum Geier soll daran Quatsch sein ? Daß man Prozessautomation auch ohne APL aufbauen kann ? Und wie das geht!
    Code:
    FUNCTION_BLOCK BST_VALVE_400
    NAME:BSTVALVE
    FAMILY:BST
    AUTHOR:BADBIT
    //VERSION:'2.0'
    //FB 630
    
    // Typical-Attribute
    {
      S7_tasklist:='OB100,OB101';
      S7_m_c:='true';
      S7_blockview:='big'
    }
    
    // Parameterattribute
    // S7_visible       sichtbar/unsichtbar (default='true')
    // S7_m_c           WinCC - Tag         (default='false')
    // S7_dynamic       Testmodus           (default='false')
    VAR_INPUT
        LOCK        {S7_dynamic:='true'} : BOOL := FALSE; // Interlock
        ERR_EXTERN  {S7_dynamic:='true'} : BOOL := FALSE; // External Error
        LIOP_SEL    {S7_dynamic:='true'} : BOOL := FALSE; // 0=Operator 1=Linking
        L_AUT       {S7_dynamic:='true'} : BOOL := FALSE; // 0=Manual 1=Automatic
        L_REMOTE    {S7_dynamic:='true'} : BOOL := FALSE; // 0=Lokal 1=Remote
        L_SIM       {S7_dynamic:='true'} : BOOL := FALSE; // 0=Normal 1=Simulation
        L_RESET     {S7_dynamic:='true'} : BOOL := FALSE; // 1=Reset Error Peripherie
        AUT_OP      {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD OPEN Automatic
        MAN_OP      {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD OPEN Manual
        SIM_OP      {S7_dynamic:='true'} : BOOL := FALSE; // 1=CMD OPEN Simulation
        FB_OPEN     {S7_dynamic:='true'} : BOOL := FALSE; // Feedback VALVE open
        FB_CLOSE    {S7_dynamic:='true'} : BOOL := TRUE;  // Feedback VALVE close
        L_MON       {S7_dynamic:='true'} : BOOL := TRUE;  // 1=Monitoring Feedback OPEN
        MON_T       {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 10.0; // Monitoring Time
    
        SAMPLE_T    {S7_sampletime:='true'} : REAL := 0.0; // Sample Time
       
        // Message blocks
        MSG1_EVID { S7_visible  :='false';
                    S7_link     :='false';
                    S7_param    :='false';
                    S7_server   :='alarm_archiv';
                    S7_a_type   :='alarm_8p'}: DWORD :=0;
        MSG2_EVID { S7_visible  :='false';
                    S7_link     :='false';
                    S7_param    :='false';
                    S7_server   :='alarm_archiv';
                    S7_a_type   :='notify_8p'}: DWORD :=0;
    END_VAR
    
    VAR_IN_OUT
        OP_dwCmd    {S7_dynamic := 'true'; S7_m_c := 'true'} : DWORD :=0;   // control word wincc
    END_VAR
    
    VAR_OUTPUT
        QdwState    {S7_dynamic:='true'; S7_m_c:='true'}: DWORD:=0;     // status wincc
        QabyState AT QdwState : ARRAY [0..3] OF BYTE;                   // look at state byte-wise
    
        QwState     {S7_dynamic:='true'}: WORD:= 0; //0=close, 1=opening, 2=open, 3=closing
        
        QCLOSE     {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Closed
        QOPENING   {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Opening
        QOPEN      {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Open
        QCLOSING   {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Closing
        
        QCMD_OP    {S7_dynamic:='true'} : BOOL := FALSE;     // 0=Close 1=Open
    
        QMON        {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Monitoring Feedback
        QMON_ERR    {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Monitoring Error
        QMON_T      {S7_dynamic:='true'; S7_m_c := 'true'} : REAL := 0.0; // Current Monitoring Time Feedback
        
        QMAN_AUT   {S7_dynamic:='true'} : BOOL := FALSE;     // 0=Hand 1=Automatic
        QREMOTE    {S7_dynamic:='true'} : BOOL := FALSE;     // 0=Local 1=Remote
        QSIM       {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Simulaition is active
        QLOCK      {S7_dynamic:='true'} : BOOL := FALSE;     // 1=Lock is active
        QERR       {S7_dynamic:='true'} : BOOL := FALSE;     // 1=ERROR
        QERR_EXT   {S7_dynamic:='true'} : BOOL := FALSE;     // 1=External ERROR
    
        
        //Alarm
        MSG1_bDone  {S7_visible:='false'} : BOOL; // A8P
        MSG1_bError {S7_visible:='false'} : BOOL; // A8P
        MSG1_wState {S7_visible:='false'} : WORD; // A8P
        MSG1_wAck   {S7_visible:='false'} : WORD; // A8P
        MSG2_bDone  {S7_visible:='false'} : BOOL; // N8P
        MSG2_bError {S7_visible:='false'} : BOOL; // N8P
        MSG2_wState {S7_visible:='false'} : WORD; // N8P
    END_VAR
    
    VAR
        OPdwCmdHMI : DWORD := 16#0;                       // Operator Commands in HMI format
        OPabyCmdHMI AT OPdwCmdHMI : ARRAY [0..3] OF BYTE; // look at HMI command byte-wise
        OPdwCmdPLC : DWORD := 16#0;                       // Operator Commands in PLC format
        OPabyCmdPLC AT OPdwCmdPLC : ARRAY [0..3] OF BYTE; // look at plc command byte-wise
        OPabCmdPLC AT OPdwCmdPLC : ARRAY [0..31] OF BOOL; // look at plc command bit-wise
        
        QdwStatePLC : DWORD := 16#0;                        // State word in PLC format
        QabyStatePLC AT QdwStatePLC : ARRAY [0..3] OF BYTE; // look at state byte-wise
        QabStatePLC AT QdwStatePLC : ARRAY [0..31] OF BOOL; // look at state bit-wise
            
      
        A8P   : ALARM_8P;
        N8P   : NOTIFY_8P;
        //---time stamp structure for alarm_t call
        STRUCT_TS : STRUCT     
            wFormat : WORD ; //time format
            aDT : ARRAY [1..8] OF DATE_AND_TIME;         //array date and time
        END_STRUCT ;
        
        // TAGS for Operation´
        OP_RESET : BOOL := FALSE;
        
        // TAGS for Edge detect
        L_RESET_OLD : BOOL := FALSE;
        AUT_OP_OLD : BOOL := FALSE;
        MAN_OP_OLD : BOOL := FALSE;
        QOPENING_OLD : BOOL := FALSE;
        QCLOSING_OLD : BOOL := FALSE;
        
        // TAGS for Simulation
        FB_SIM_OPEN  : BOOL := FALSE;
        FB_SIM_CLOSE : BOOL := TRUE;
        SIM_T    : REAL := 5.0;
        QCMD_SIM : BOOL := FALSE;
        
    END_VAR
    
    VAR_TEMP
    TOP_SI: STRUCT
          EV_CLASS  : BYTE;
          EV_NUM    : BYTE;
          PRIORITY  : BYTE;
          NUM       : BYTE;
          TYP2_3    : BYTE;
          TYP1      : BYTE;
          ZI1       : WORD;
          ZI2_3     : DWORD;
    END_STRUCT;
    
    START_UP_SI: STRUCT
          EV_CLASS  : BYTE;
          EV_NUM    : BYTE;
          PRIORITY  : BYTE;
          NUM       : BYTE;
          TYP2_3    : BYTE;
          TYP1      : BYTE;
          ZI1       : WORD;
          ZI2_3     : DWORD;
    END_STRUCT;
    iRet          : INT;
    
    END_VAR
    
    
    BEGIN
    
    // START UP =====================================================================
        iRet := SFC6 (TOP_SI:= TOP_SI, START_UP_SI:= START_UP_SI);
        IF (TOP_SI.NUM = 100 OR TOP_SI.NUM = 101) THEN
            
            OPabCmdPLC[9] := TRUE;  // Disable Feedback Monitoring
            OPabCmdPLC[19] := TRUE; // Activate Remote Control
            
            QCMD_OP   := FALSE;
            QCLOSE    := TRUE;
            QOPENING  := FALSE;
            QOPEN     := FALSE;
            QCLOSING  := FALSE;
            QwState := 0;
            
            iRet := 0;
        END_IF;
    // END STARTUP ==================================================================
    
    // Change lowbyte to highbyte for HMI command word ==================
        OPdwCmdHMI := OP_dwCmd;
        OPabyCmdPLC[0] := OPabyCmdHMI[3];
        OPabyCmdPLC[1] := OPabyCmdHMI[2];
        OPabyCmdPLC[2] := OPabyCmdHMI[1];
        OPabyCmdPLC[3] := OPabyCmdHMI[0]; 
    
    // ******************************************************************************
    // Begin: Operation functions ***************************************************
        
    // MANUAL / AUTOMATIC Operation =======================================
        IF (LIOP_SEL AND NOT L_AUT) OR (OPabCmdPLC[16] AND NOT LIOP_SEL) THEN 
            QMAN_AUT := FALSE;
        ELSIF (LIOP_SEL AND L_AUT) OR (OPabCmdPLC[17] AND NOT LIOP_SEL) THEN 
            QMAN_AUT := TRUE;
        END_IF;
        
    // LOCAL / REMOTE Operation =========================================
        IF (LIOP_SEL AND NOT L_REMOTE) OR (OPabCmdPLC[18] AND NOT LIOP_SEL) THEN
            QREMOTE := FALSE;
        ELSIF (LIOP_SEL AND L_REMOTE) OR (OPabCmdPLC[19] AND NOT LIOP_SEL) THEN
            QREMOTE := TRUE;
        END_IF;
        
    // SIMULATION ON / OFF ==============================================
        IF (LIOP_SEL AND NOT L_SIM) OR (OPabCmdPLC[20] AND NOT LIOP_SEL) THEN
            QSIM := FALSE;
        ELSIF (LIOP_SEL AND L_SIM) OR (OPabCmdPLC[21] AND NOT LIOP_SEL) THEN
            QSIM := TRUE;
            QCMD_OP := FALSE;
        END_IF;
        
    // RESET Operation ==================================================
        IF (LIOP_SEL AND L_RESET AND NOT L_RESET_OLD) OR (OPabCmdPLC[24] AND NOT LIOP_SEL) THEN
            OP_RESET := TRUE;
        ELSE
            OP_RESET := FALSE;
        END_IF;
        
    // MONITORING FEEDBACK ON / OFF =====================================
        IF (LIOP_SEL AND L_MON) OR (OPabCmdPLC[8] AND NOT LIOP_SEL) THEN
            QMON := TRUE;
        ELSIF (LIOP_SEL AND NOT L_MON) OR (OPabCmdPLC[9] AND NOT LIOP_SEL) THEN
            QMON := FALSE;
        END_IF;
        
    // OPEN / CLOSE Valve (AUTOMATIC)====================================
        IF (QMAN_AUT AND AUT_OP AND NOT AUT_OP_OLD AND NOT QSIM) THEN
            QCMD_OP := TRUE;
        ELSIF (QMAN_AUT AND NOT AUT_OP AND NOT QSIM) THEN
            QCMD_OP := FALSE;
        END_IF;
        
    // OPEN / CLOSE Valve (MANUAL)=======================================
        IF (NOT QMAN_AUT AND NOT QREMOTE AND MAN_OP AND NOT MAN_OP_OLD AND NOT QSIM) OR (OPabCmdPLC[1] AND NOT QMAN_AUT AND QREMOTE AND NOT QSIM)  THEN
            QCMD_OP := TRUE;
        ELSIF (NOT QMAN_AUT AND NOT QREMOTE AND NOT MAN_OP AND NOT QSIM) OR (OPabCmdPLC[0] AND NOT QMAN_AUT AND QREMOTE AND NOT QSIM) THEN
            QCMD_OP := FALSE;
        END_IF;
    
    // OPEN / CLOSE Valve (SIMULATION)===================================
        IF (QSIM AND NOT QREMOTE AND SIM_OP) OR (OPabCmdPLC[1] AND QREMOTE AND QSIM) THEN
            QCMD_SIM := TRUE;
        ELSIF (QSIM AND NOT QREMOTE AND NOT SIM_OP) OR (OPabCmdPLC[0] AND QREMOTE AND QSIM) THEN
            QCMD_SIM := FALSE;
        END_IF;
    // END: Operation functions *****************************************************
    // ******************************************************************************
    
    //=================================
    //            QwState
    //0 = Close
    //1 = Opening
    //2 = Open
    //3 = Closing
    //=================================
    
    //--------------------------
    //QwState = 0; CLOSE
    //--------------------------
        IF NOT QSIM THEN    // *** Process Mode ***
            IF 
                (NOT QCMD_OP AND QwState=3 AND NOT QMON_ERR AND FB_CLOSE) OR
                (NOT QCMD_OP AND QwState=3 AND NOT QMON)
            THEN
                QCLOSE    := TRUE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 0;
            END_IF;
        ELSE                // *** Simulation Mode ***
            IF 
                (NOT QCMD_SIM AND QwState=3 AND FB_SIM_CLOSE) OR
                (NOT QCMD_SIM AND QwState=3 AND NOT QMON)
            THEN
                QCLOSE    := TRUE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 0;
            END_IF;
        END_IF;
            
    //--------------------------
    //QwState = 1; OPENING
    //--------------------------
        IF NOT QSIM THEN    // *** Process Mode ***
            IF (QCMD_OP AND (QwState = 0 OR QwState = 3)) THEN 
                QCLOSE    := FALSE;
                QOPENING  := TRUE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 1;
            END_IF;
        ELSE                // *** Simulation Mode ***
            IF (QCMD_SIM AND (QwState = 0 OR QwState = 3)) THEN 
                QCLOSE    := FALSE;
                QOPENING  := TRUE;
                QOPEN     := FALSE;
                QCLOSING  := FALSE;
                QwState := 1;
            END_IF;
        END_IF;
        
        
    //--------------------------
    //QwState = 2; OPEN
    //--------------------------
        IF NOT QSIM THEN        // *** Process Mode ***
            IF 
                (QCMD_OP AND QwState=1 AND NOT QMON_ERR AND FB_OPEN) OR
                (QCMD_OP AND QwState=1 AND NOT QMON)
            THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := TRUE;
                QCLOSING  := FALSE;
                QwState := 2;
            END_IF;
        ELSE                    // *** Simulation Mode ***
            IF  
                (QCMD_SIM AND QwState=1 AND FB_SIM_OPEN) OR
                (QCMD_SIM AND QwState=1 AND NOT QMON)
            THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := TRUE;
                QCLOSING  := FALSE;
                QwState := 2;
            END_IF;
        END_IF;
            
    //--------------------------
    //QwState = 3; CLOSING
    //--------------------------
        IF NOT QSIM THEN        // *** Process Mode ***
            IF (NOT QCMD_OP AND (QwState = 1 OR QwState = 2)) THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := TRUE;
                QwState := 3;
            END_IF;
        ELSE                    // *** Simulation Mode ***
            IF (NOT QCMD_SIM AND (QwState = 1 OR QwState = 2)) THEN
                QCLOSE    := FALSE;
                QOPENING  := FALSE;
                QOPEN     := FALSE;
                QCLOSING  := TRUE;
                QwState := 3;
            END_IF;
        END_IF;
        
    // Feedback Monitoring =================================================
        IF QMON THEN
            IF (QOPENING AND NOT QOPENING_OLD) OR (QCLOSING AND NOT QCLOSING_OLD) THEN
                QMON_T := 0.0;
            END_IF;
            
            IF NOT QSIM THEN    // *** Process Mode ****
                IF (QOPENING OR QCLOSING) THEN
                    QMON_T := QMON_T + SAMPLE_T;
                    IF (QMON_T >= MON_T) THEN
                        QMON_ERR := TRUE;
                    END_IF;
                ELSE
                    QMON_T := 0.0;
                END_IF;
                IF (QOPEN AND (NOT FB_OPEN OR FB_CLOSE)) OR (QCLOSE AND (FB_OPEN OR NOT FB_CLOSE)) THEN
                    QMON_ERR := TRUE;
                END_IF;
            ELSE               // *** Simulation Mode ***
                IF (QOPENING) THEN
                    QMON_T := QMON_T + SAMPLE_T;
                    FB_SIM_CLOSE := FALSE;
                    IF (QMON_T >= SIM_T) THEN
                        FB_SIM_OPEN := TRUE;
                    END_IF;
                ELSIF (QCLOSING) THEN
                    QMON_T := QMON_T + SAMPLE_T;
                    FB_SIM_OPEN := FALSE;
                    IF (QMON_T >= SIM_T) THEN
                        FB_SIM_CLOSE := TRUE;
                    END_IF;
                ELSE
                    QMON_T := 0.0;
                END_IF;
            END_IF;
        END_IF;
    // END Monitoring ======================================================
        
    // Check Errors ========================================================
        QERR_EXT := ERR_EXTERN;
        IF LOCK AND (QOPENING OR QOPEN) THEN
            QLOCK := TRUE;
        END_IF;
        QERR := QERR_EXT OR QMON_ERR OR QLOCK;
        
    // RESET Errors ========================================================
        IF OP_RESET THEN
            QMON_ERR  := FALSE;
            QLOCK     := FALSE;
        END_IF;
    
    // If Error then Stop ==================================================        
        IF QERR THEN
            QCLOSE    := TRUE;
            QOPENING  := FALSE;
            QOPEN     := FALSE;
            QCLOSING  := FALSE;
            QCMD_OP   := FALSE;
            QCMD_SIM  := FALSE;
            QwState   := 0;
            QMON_T    := 0.0;
        END_IF;
       
    // Set State for HMI ===================================================
        QabStatePLC[0]  := QCLOSE;      // 1=Close
        QabStatePLC[1]  := QOPENING;    // 1=Opening
        QabStatePLC[2]  := QOPEN;       // 1=Open
        QabStatePLC[3]  := QCLOSING;    // 1=Closing
        QabStatePLC[4]  := 0;
        QabStatePLC[5]  := 0;
        QabStatePLC[6]  := 0;
        QabStatePLC[7]  := 0;   
        QabStatePLC[8]  := QMON;        // 1=Feedback Monitoring ON
        QabStatePLC[9]  := QMON_ERR;    // 1=Error Feedback Monitoring
        QabStatePLC[10] := 0;
        QabStatePLC[11] := 0;  
        QabStatePLC[12] := 0;
        QabStatePLC[13] := 0;
        QabStatePLC[14] := 0;
        QabStatePLC[15] := 0;
        QabStatePLC[16] := QMAN_AUT;    // 0=Manual 1=Automatic
        QabStatePLC[17] := QREMOTE;     // 0=Local 1=Remote
        QabStatePLC[18] := QSIM;        // 0=Process 1=Simulation
        QabStatePLC[19] := 0;
        QabStatePLC[20] := 0;
        QabStatePLC[21] := 0;
        QabStatePLC[22] := 0;
        QabStatePLC[23] := 0;
        QabStatePLC[24] := QERR;        // 1=Error
        QabStatePLC[25] := QERR_EXT;    // 1=External Error
        QabStatePLC[26] := QLOCK;       // 1=Block Locked
        QabStatePLC[27] := LOCK;        // 1=INTERLOCK
        QabStatePLC[28] := 0;  
        QabStatePLC[29] := 0;  
        QabStatePLC[30] := 0;
        QabStatePLC[31] := 0;
        
        QabyState[0] :=QabyStatePLC[3];
        QabyState[1] :=QabyStatePLC[2];
        QabyState[2] :=QabyStatePLC[1];
        QabyState[3] :=QabyStatePLC[0];
        
    // Alarm_8P ==============================================
        A8P(            
            EN_R := 1,
            SIG_1 :=QMON_ERR,   // Monitoring Error
            SIG_2 :=0,
            SIG_3 :=0,
            SIG_4 :=0,
            SIG_5 :=QLOCK,      // Interlock Error
            SIG_6 :=0,
            SIG_7 :=QERR_EXT,   // External Error
            SIG_8 :=QERR,       // General Error
            ID := w#16#eeee,
            EV_ID := MSG1_EVID,
            SEVERITY := w#16#40
        );
        MSG1_bDone := A8P.DONE;
        MSG1_bError := A8P.ERROR;
        MSG1_wState := A8P.STATUS;
        MSG1_wAck := A8P.ACK_STATE;
    
    // Notify_8P ==============================================
        N8P(            // NOTIFY AP
            SIG_1 :=QCLOSE,     // CLOSE
            SIG_2 :=QOPENING,   // OPENING
            SIG_3 :=QOPEN,      // OPEN
            SIG_4 :=QCLOSING,   // CLOSING
            SIG_5 :=LOCK,       // Interlock
            SIG_6 :=QREMOTE,    // Remote
            SIG_7 :=QMAN_AUT,   // Automatic
            SIG_8 :=QSIM,       // Simulation
            ID := w#16#eeee,
            EV_ID := MSG2_EVID,
            SEVERITY := w#16#40 
        );
        MSG2_bDone := N8P.DONE;
        MSG2_bError := N8P.ERROR;
        MSG2_wState := N8P.STATUS;
        
        // Set Tags for edge detect =====================================
        L_RESET_OLD := L_RESET;
        AUT_OP_OLD := AUT_OP;
        MAN_OP_OLD := MAN_OP;
        QOPENING_OLD := QOPENING;
        QCLOSING_OLD := QCLOSING;
        
        //reset commands ================================================
        OP_dwCmd := 16#0;
    END_FUNCTION_BLOCK
    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    da gelten nämlich auch andere Standards. In der Prozessautomation werden alle Bausteine in SCL geschrieben, Verschaltung erfolgt im CFC / SFC und eigentlich benutzt man dafür auch die APL zusammen mit WinCC und PCS 7.
    Das hier habe ich gemeint ...... Wo stehen denn die Standards ???? Oder sollte ich in den letzten 25 Jahren was verpasst haben ????? In Verbindung mit PCS7 bin ich ja noch einer Meinung mit Dir aber was ist mit den 90% Prozessautomation von
    kleinen und mittleren Anlagen ??? Wo steht geschrieben das es in SCL, CFC geschrieben werden muß ????? Könnte ich mal eine Kopie der "Standards" haben !!!!! Danke

  3. #43
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Wo stehen denn die Standards ???? Oder sollte ich in den letzten 25 Jahren was verpasst haben ????? In Verbindung mit PCS7 bin ich ja noch einer Meinung mit Dir aber was ist mit den 90% Prozessautomation von
    kleinen und mittleren Anlagen ??? Wo steht geschrieben das es in SCL, CFC geschrieben werden muß ????? Könnte ich mal eine Kopie der "Standards" haben !!!!! Danke
    Es wird so empfohlen. Der Aufbau einer Prozessautomation-Anlage, sagen wir mal, eines Abwasserwerk, beginnt mit dem Verfahrensfließbild und geht weiter mit einem Messstellen- und Instrumentenfließbild. Dort werden sämtliche Anlagenbestandteile bzw. Betriebsmittel wie Stellventile, Reaktoren, Rührwerke etc. mit einem ziemlich kryptischen Zeichen-Buchstabensalat der EMSR-Technik nach EN 62424 -DIN 19227 (Beispielsweise wäre "FFIC" ein Durchfluß-Verhältnis-messinstrument mit Anzeige und selbtstätiger Regelung) und laufender Nummer versehen und erfasst.

    Weiter habe ich die Möglichkeit, entweder irgendwie völlig unstrukturiert vorzugehen, oder - den Empfehlungen von Siemens folgend - im CFC Plan meine Anlage quasi 1:1 nachzuzeichnen, indem ich den Betriebsmitteln entsprechende Bausteine zuordne und deren Instanzen mit meinen Codes nach EN 62424 (DIN 19277) benenne. Die kann ich dann sinnvoll verschalten und erhalte so ein übersichtliches Bild dessen, was in der Anlage passiert.

    So, ganz grob und vereinfacht geschildert, läuft die Projektierung einer kleinen Prozessanlage.

    Wenn ich jetzt also einen FV 9 Stellventil als Einlauf an einem Reaktor habe, dann gibt es im CFC Plan dazu einen entsprechenden Baustein "VALVE", dessen Instanz den Namen "FV 9" trägt, wobei mein CFC Plan den Namen der Teilanlage (bsplsw. "Reaktor-Vorkessel") trägt, und in der technischen Hierarchie an der entsprechenden Stelle abgelegt wird. Wenn jetzt also mein FV 9 ein ein Problem hat, dann wird die Fehlermeldung: "Reaktor-Vorkessel / FV 9 / Text der Fehlermeldung" automatisch erzeugt.

    So kenne ich das nur, und erachte das als die sinnvollste Variante eine Prozessanlage aufzubauen. Alles andere ist m.E. Murks.
    Geändert von Draco Malfoy (06.04.2015 um 19:18 Uhr)

  4. #44
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.337
    Danke
    386
    Erhielt 218 Danke für 173 Beiträge

    Standard

    Hallo Draco,

    Bei PCS7 kenn ich der APL Bibliothek nur von der PCS7 Kurs.
    Ich kenn aber kein einziges Projekt bei uns (Turbinenleittechnik) was mit der APL umgesetzt ist. In der Regel Kundenbibliothek oder eigene Bibliothek.
    Ich kenn auch keine Anlage die rein nur mit PCS7 gemacht ist. Mann hat immer mischbetrieb.

    Sonnst ist bei uns in der Anlagen FUP und AWL gang und geben und sehr seltsam die SCL. Auch im Wasserdampfkreis und sauber nach KKS (oder Kunden Tagsystem) ausgearbeitet.


    Bram
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

  5. #45
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Ich kenn aber kein einziges Projekt bei uns (Turbinenleittechnik) was mit der APL umgesetzt ist. In der Regel Kundenbibliothek oder eigene Bibliothek.
    Wie gesagt, ich habe ja oben geschrieben, daß dem Kunden die Auswahl offen steht, entweder die APL (die halt von dem Resourcenverbrauch schon ziemlich fett und hässlich ist, möchte ich meinen) anzuwenden, oder eben eine proprietäre Bibliothek zu entwickeln. Ich würde auch nur in äußersten Fällen zu der APL greifen, weil man einige Funktionen davon in der Regel nicht braucht, oder im Gegenteil, man braucht was komplett eigenes.

    Grundsätzlich gibt es aber Empfehlungen von Siemens, wie prozesstechnische Anlagen aufgebaut werden sollen, und es gibt auch den PCS7 Standard, den Siemens definiert hat. Es steht natürlich jedem offen, sich daran zu halten, oder es nicht zu tun.
    Geändert von Draco Malfoy (06.04.2015 um 19:30 Uhr)

  6. #46
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Ich wusste doch gleich, das TIA für Prozesstechnik vollkommen ungeeignet ist... so ohne CFC kann das ja nichts werden.

    Langsam wirds echt affig...
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  7. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    UniMog (06.04.2015)

  8. #47
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Ich wusste doch gleich, das TIA für Prozesstechnik vollkommen ungeeignet ist... so ohne CFC kann das ja nichts werden.
    Langsam wirds echt affig...
    Affig ? Soso, sachkundige Meinung also. Dann mach mir mal das hier ohne CFC und ohne Faceplates und ohne automatische Bildergenerierung !!
    P.S: ... und davon dann noch 40 Seiten oder so !!
    Verfahrenstechnik.jpg

  9. #48
    Registriert seit
    03.07.2006
    Beiträge
    1.725
    Danke
    515
    Erhielt 303 Danke für 223 Beiträge

    Standard

    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    Affig ? Soso, sachkundige Meinung also. Dann mach mir mal das hier ohne CFC und ohne Faceplates und ohne automatische Bildergenerierung !!
    P.S: ... und davon dann noch 40 Seiten oder so !!
    Verfahrenstechnik.jpg
    Genau das mache ich Dir ohne CFC und ohne automatische Bildergenerierung .... auch 80 Seiten wenn es einer bezahlt....... Das ist mein Job..... wo soll hier ein Problem sein ????

  10. Folgende 4 Benutzer sagen Danke zu UniMog für den nützlichen Beitrag:

    de vliegende hollander (06.04.2015),der_iwan (07.04.2015),MSB (06.04.2015),norustnotrust (06.04.2015)

  11. #49
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.337
    Danke
    386
    Erhielt 218 Danke für 173 Beiträge

    Standard

    Zitat Zitat von UniMog Beitrag anzeigen
    Genau das mache ich Dir ohne CFC und ohne automatische Bildergenerierung .... auch 80 Seiten wenn es einer bezahlt....... Das ist mein Job..... wo soll hier ein Problem sein ????



    Auch mein tagtägliches Brot.. und sogar in TIA

    Bram
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

  12. Folgende 3 Benutzer sagen Danke zu de vliegende hollander für den nützlichen Beitrag:

    MSB (06.04.2015),norustnotrust (06.04.2015),UniMog (06.04.2015)

  13. #50
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    Affig ? Soso, sachkundige Meinung also. Dann mach mir mal das hier ohne CFC und ohne Faceplates und ohne automatische Bildergenerierung !!
    P.S: ... und davon dann noch 40 Seiten oder so !!
    Verfahrenstechnik.jpg
    Interessiert mich doch gar nicht, du verwechselst hier nur gerade ein paar Sachen.
    Eine große Menge Prozesstechnikanlagen hat noch nie auch nur eine einzige Zeile SCL gesehen, geschweige denn CFC noch halb bis vollautomatische Bildgenerierung.
    Und die Anlagen laufen seit Jahrzehnten ganz wunderbar.

    Und auch dein Bildchen, wenn man mal von ein paar Details absieht fällt wahrscheinlich auf 1-2 Schrittketten die auf ein paar Regler/Ventile wirken zusammen.
    Der Rest sind ein paar Dinger die dynamisch Werte anzeigen oder dynamisch ihre Farbe wechseln, kein Grund gleich die große Keule auszupacken.
    Natürlich kann man das ganze auch bis ins kleinste Detail struckturieren und paramtrierbar machen ... ganz wie man will.
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

Ähnliche Themen

  1. 3 Jobwechsel in 3 Jahren
    Von Krumnix im Forum Stammtisch
    Antworten: 15
    Letzter Beitrag: 07.08.2012, 18:46
  2. Neuer IBHNet Treiber inkl. neuer Firmware für den IBH Link S7++ verfügbar
    Von IBHsoftec GmbH im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 23.12.2011, 13:23
  3. Suche MES Firma
    Von mnuesser im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 06.10.2009, 15:20
  4. Welches Gehalt bei Jobwechsel mit Berufserfahrung?
    Von KingPin im Forum Stammtisch
    Antworten: 30
    Letzter Beitrag: 02.12.2007, 20:03

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •