PLC项目代码说明

PLC项目代码说明

程序主流程分为6个部分,1.通讯部分;2.故障判断部分;3.故障类型判断部分;4.状态判断部分;5.故障处理部分;6.操作部分。

1.通讯部分

PLC作为主站,变频器作为1#付站,采RS485的MODBUS通讯协议。以下是通讯程序代码

(*datamod*)
"EventPV1 ", 01, $01, "LocalPV1 ", 0000, 0005
"EventPV2 ", 02, $01, "LocalPV2 ", 0000, 0003
"EventPV3 ", 03, $01, "LocalPV3 ", 0000, 0005
"EventPV4 ", 04, $01, "LocalPV4 ", 0000, 0005

初始化部分
PROGRAM _INIT
(* Insert code here *)
S1:=0;
S2:=1;
EventPV1:=1;
EventPV2:=1;
EventPV3 := 1;
EventPV4 := 1;
LocalPV1[0] := 0;
LocalPV1[1]:=0;
LocalPV1[2] := 0;
LocalPV1[3] := 0;
LocalPV1[4] := 0;
LocalPV1[5] := 0;

LocalPV2[0] := 0;
LocalPV2[1] := 0;
LocalPV2[2] := 0;
LocalPV2[3] := 0;
LocalPV2[4] := 0;

LocalPV3[0] := 0;
LocalPV3[1] := 0;
LocalPV3[2] := 0;
LocalPV3[3] := 0;
LocalPV3[4] := 0;
LocalPV3[5] := 0;

LocalPV4[0] := 0;
LocalPV4[1] := 0;
LocalPV4[2] := 0;
LocalPV4[3] := 0;
LocalPV4[4] := 0;


MBMOpen_xx.enable:=1;
MBMOpen_xx.pDevice:=ADR('IF6.ST4.IF1');
MBMOpen_xx.pMode:=ADR('/PHY=RS485 /PA=E /DB=8 /SB=1 /BD=19200');
MBMOpen_xx.pConfig:=ADR('datamod');
MBMOpen_xx.timeout:=2000;
MBMOpen_xx.ascii:=0;
MBMOpen_xx();    

END_PROGRAM

循环部分
PROGRAM _CYCLIC
(* Insert code here *)
(*EventPV1:=1;
EventPV2:=1;*)
EventPV1 := 1;
EventPV3 := 1;

IF(S1=0)THEN
    MBMaster_xx.enable:=1;
    MBMaster_xx.ident:=MBMOpen_xx.ident;
    MBMaster_xx();
ELSE
    MBMCmd_xx.enable:=1;
    MBMCmd_xx.ident:=MBMOpen_xx.ident;
    MBMCmd_xx.mfc:=1;
    MBMCmd_xx.node:=1;
    MBMCmd_xx.data:=ADR(LocalPV1);
    (*name*)
    MBMCmd_xx.offset:=0;
    MBMCmd_xx.len:=4;
    MBMCmd_xx();
END_IF
IF(S2=0)THEN
    MBMClose_xx.enable:=1;
    MBMClose_xx.ident:=MBMOpen_xx.ident;
    MBMClose_xx();
END_IF
END_PROGRAM

2.故障判断部分

故障判断部分分为四个部分,分别为转速判断,温度判断,压力判断和风机故障判断。写成一个Action,在主程序中调用。

ACTION ErrorConfirm:
    (***************转速判断*************)
    IF iSpeedActual < iMinPowerSpeed THEN
        nPowerUnitWarnWord1.10 := TRUE;
    ELSE
        nPowerUnitWarnWord1.10 := FALSE;
    END_IF
    IF iSpeedActual > iMaxPowerSpeed THEN
        nPowerUnitWarnWord1.11 := TRUE;
    ELSE
        nPowerUnitWarnWord1.11 := FALSE;
    END_IF
    IF iSpeedActual < iMinStartBackupGenSpeed THEN
        (*低于轴发启动速度报警,待补充*)
    ELSE
    END_IF
    IF iSpeedActual > iMaxStartBackupGenSpeed THEN
        (*高于启动轴发转速报警,待补充*)
    ELSE
    END_IF
    (**************IGBT冷却水系统越限报警**********)
    IF iCoolingWaterInTemp > iCoolingWaterInHighTemp THEN
        nSystemWarnWord3.15 := 1;
    ELSE
        nSystemWarnWord3.15 := 0;
    END_IF
    IF iCoolingWaterOutTemp >iCoolingWaterOutHighTemp THEN
        nSystemWarnWord4.0 := TRUE;
    ELSE
        nSystemWarnWord4.0 := FALSE;
    END_IF
    IF iCoolingWaterOutTemp > iCoolingWaterOutHHighTemp THEN
        nSystemWarnWord4.1 := TRUE;
    ELSE
        nSystemWarnWord4.1 := FALSE;
    END_IF
    IF iCoolingWaterInPressureActual < iCoolingWaterInLowPressure THEN
        nSystemWarnWord4.2 := TRUE;
    ELSE
        nSystemWarnWord4.2 := FALSE;
    END_IF
    IF iCoolingWaterInPressureActual < iCoolingWaterInLLowPressure THEN
        nSystemWarnWord4.3 := TRUE;
    ELSE
        nSystemWarnWord4.3 := FALSE;
    END_IF
    IF iCoolingWaterInPressureActual > iCoolingWaterInHignPressure THEN
        nSystemWarnWord4.4 := TRUE;
    ELSE
        nSystemWarnWord4.4 := FALSE;
    END_IF 

    IF 
        (iCoolingWaterInPressureActual - iCoolingWaterOutPressureActual)<iCoolingWaterLowPressureDiff THEN
        nSystemWarnWord4.5 := TRUE;
    ELSE
        nSystemWarnWord4.5 := TRUE;
    END_IF

    IF 
        (iCoolingWaterInPressureActual - iCoolingWaterOutPressureActual)<iCoolingWaterLLowPressureDiff THEN

        nSystemWarnWord4.6 := TRUE;
    ELSE
        nSystemWarnWord4.6 := TRUE;
    END_IF

    IF 
        (iCoolingWaterInPressureActual - iCoolingWaterOutPressureActual)>iCoolingWaterHighPressureDiff THEN

        nSystemWarnWord4.7 := TRUE;
    ELSE
        nSystemWarnWord4.7 := TRUE;
    END_IF
    (******************发电电流能力计算,待补充*****************)

    (******************控制柜风机故障**************************)
    IF bControlCabinetFanRun = FALSE AND bStatusRun = TRUE THEN
        timer7.IN := 1;
        timer7.PT := T#3s;
        timer7();
        IF timer7.Q THEN 
            nSystemWarnWord3.13 := TRUE;
        END_IF
    END_IF
    (*****************1#轴发风机故障**************************)
    IF bGeneratorFan1Run = FALSE AND bStatusRun = TRUE THEN
        timer8.IN := TRUE;
        timer8.PT := T#2s;
        timer8();
        IF timer8.Q = 1 THEN
            (*xa241F := true;*)(*缺,待补充*)
        ELSE
        END_IF
    END_IF

     (*****************2#轴发风机故障**************************)
    IF bGeneratorFan2Run = FALSE AND bStatusRun = TRUE THEN
            timer8.IN := TRUE;
            timer8.PT := T#2s;
            timer8();
        IF timer8.Q = 1 THEN
                (*xa242F := true;*)(*缺, 待补充*)
        ELSE
            END_IF
        END_IF
END_ACTION

3.故障类型判断

整个系统共计63个报警点,分为A,B,C,D,E五类。其中A类25个,B类5个,C类3个,D类1个,E类29个。
63个报警点归为7个word变量,分别为nPowerUnitWarnWord1,nPowerUnitWarnWord2,nPowerUnitWarnWord3,nSystemWarnWord1,nSystemWarnWord2,nSystemWarnWord3,nSystemWarnWord4.定义参见文档。5类报警写成5个函数和1个功能块如下,功能块内调用函数,在主函数中调用该功能块即可。

3.1.A类故障确认F_AtypeErrorConfirm
FUNCTION F_AtypeErrorConfirm
    (*IN1的输入为nPowerUnitWarnWord1*)
    IN1_bit7  := F_GetBitX(IN1,7);
    IN1_bit10 := F_GetBitX(IN1,7);
    IN1_bit11 := F_GetBitX(IN1,7);
    IN1_bit13 := F_GetBitX(IN1,7);

    (*IN2的输入为nPowerUnitWarnWord2*)  
    IN2_bit1  := F_GetBitX(IN2,1);
    IN2_bit3  := F_GetBitX(IN2,3);
    IN2_bit5  := F_GetBitX(IN2,5);
    IN2_bit6  := F_GetBitX(IN2,6);
    IN2_bit7  := F_GetBitX(IN2,7);
    IN2_bit8  := F_GetBitX(IN2,8);
    IN2_bit9  := F_GetBitX(IN2,9);
    IN2_bit10 := F_GetBitX(IN2,10);
    IN2_bit11 := F_GetBitX(IN2,11);

    (*IN3的输入为nPowerUnitWarnWord3*)
    IN3_bit1  := F_GetBitX(IN3,1);
    IN3_bit3  := F_GetBitX(IN3,1);
    IN3_bit5  := F_GetBitX(IN3,1);
    IN3_bit6  := F_GetBitX(IN3,1);
    IN3_bit7  := F_GetBitX(IN3,1);
    IN3_bit8  := F_GetBitX(IN3,1);
    IN3_bit9  := F_GetBitX(IN3,1);

    (*IN4的输入为nSystemWarnWord1*)
    IN4_bit1  := F_GetBitX(IN4,1);
    IN4_bit3  := F_GetBitX(IN4,3);
    IN4_bit5  := F_GetBitX(IN4,5);
    IN4_bit7  := F_GetBitX(IN4,7);

    (*IN5的输入为nSystemWarnWord2*)
    IN5_bit4  := F_GetBitX(IN5,4);
    IN5_bit6  := F_GetBitX(IN5,6);
    IN5_bit8  := F_GetBitX(IN5,8);


    IF  IN1_bit7 OR IN1_bit10 OR    IN1_bit11 OR IN1_bit13

        OR IN2_bit1  OR IN2_bit3  OR IN2_bit5  
        OR IN2_bit6  OR IN2_bit7  OR IN2_bit8 
        OR IN2_bit9  OR IN2_bit10 OR IN2_bit11

        OR IN3_bit1 OR IN3_bit3 OR IN3_bit5
        OR IN3_bit6 OR IN3_bit7 OR IN3_bit8 
        OR IN3_bit9 

        OR IN4_bit1 OR IN4_bit3 OR IN4_bit5 
        OR IN4_bit7 

        OR IN5_bit4 OR IN5_bit6 OR IN5_bit8 
        THEN
        F_AtypeErrorConfirm := 1;
    ELSE
        F_AtypeErrorConfirm := 0;
    END_IF
END_FUNCTION
3.2.B类故障确认F_BtypeErrorConfirm
FUNCTION F_BtypeErrorConfirm
    IN1_bit13 := F_GetBitX(IN1,13);
    IN2_bit1  := F_GetBitX(IN2,1);
    IN2_bit6  := F_GetBitX(IN2,6);

    IF IN1_bit13 OR IN2_bit1 OR IN2_bit6     (*缺xA241F,xA242F*)
        THEN
        F_BtypeErrorConfirm := 1;
    ELSE
        F_BtypeErrorConfirm := 0;
    END_IF
END_FUNCTION
3.3.C类故障确认F_CtypeErrorConfirm
FUNCTION F_CtypeErrorConfirm

        IN1_bit1 := F_GetBitX(IN1,1);
        IN1_bit2 := F_GetBitX(IN1,2);
        IN2_bit3 := F_GetBitX(IN2,3);

        IF IN1_bit1 OR IN1_bit2 OR IN2_bit3 
            THEN
            F_CtypeErrorConfirm := 1;
        ELSE
            F_CtypeErrorConfirm := 0;
        END_IF  
END_FUNCTION
3.4.D类故障确认F_DtypeErrorConfirm
FUNCTION F_DtypeErrorConfirm
    IN1_bit0 := F_GetBitX(IN1,0);    (*D类报警仅有一个xC201B,未定义,待定*)

    IF IN1_bit0
        THEN
        F_DtypeErrorConfirm := 1;
    ELSE
        F_DtypeErrorConfirm := 0;
    END_IF

END_FUNCTION
3.5.E类故障确认F_EtypeErrorConfirm
FUNCTION F_EtypeErrorConfirm
    (*IN1的输入为nSystemWarnWord1*)
    IN1_bit0  := F_GetBitX(IN1,0);    
    IN1_bit2  := F_GetBitX(IN1,2);    
    IN1_bit4  := F_GetBitX(IN1,4);   
    IN1_bit6  := F_GetBitX(IN1,6);
    IN1_bit8  := F_GetBitX(IN1,8);
    IN1_bit9  := F_GetBitX(IN1,9);
    IN1_bit10 := F_GetBitX(IN1,10);
    IN1_bit12 := F_GetBitX(IN1,12);
    IN1_bit13 := F_GetBitX(IN1,13);

    (*IN2的输入为nSystemWarnWord2*)
    IN2_bit0  := F_GetBitX(IN2,0);
    IN2_bit3  := F_GetBitX(IN2,3);
    IN2_bit5  := F_GetBitX(IN2,5);
    IN2_bit7  := F_GetBitX(IN2,7);

    (*IN3的输入为nSystemWarnWord3*)
    IN3_bit3   := F_GetBitX(IN3,3);
    IN3_bit5   := F_GetBitX(IN3,5);
    IN3_bit7   := F_GetBitX(IN3,7);
    IN3_bit14  := F_GetBitX(IN3,14);
    IN3_bit15  := F_GetBitX(IN3,15);

    (*IN4的输入为nSystemWarnWord4*)
    IN4_bit0   := F_GetBitX(IN4,0);
    IN4_bit2   := F_GetBitX(IN4,2);
    IN4_bit4   := F_GetBitX(IN4,4);
    IN4_bit5   := F_GetBitX(IN4,5);
    IN4_bit7   := F_GetBitX(IN4,7);
    IN4_bit8   := F_GetBitX(IN4,8);

    (*IN5的输入为nPowerUintWarnWord1*)
    IN5_bit12  := F_GetBitX(IN5,12);
    IN5_bit14  := F_GetBitX(IN5,14);

    IF  IN1_bit0  OR IN1_bit2  OR IN1_bit4  OR
        IN1_bit6  OR IN1_bit8  OR IN1_bit9  OR
        IN1_bit10 OR IN1_bit12 OR IN1_bit13 OR

        IN2_bit0  OR IN2_bit3  OR IN2_bit5  OR
        IN2_bit7  OR 

        IN3_bit3  OR IN3_bit5  OR IN3_bit7  OR
        IN3_bit14 OR IN3_bit15 OR

        IN4_bit0  OR IN4_bit2 OR IN4_bit4 OR
        IN4_bit5  OR IN4_bit7 OR IN4_bit8 OR

        IN5_bit12 OR IN5_bit14 
        THEN
        F_EtypeErrorConfirm := 1;
    ELSE
        F_EtypeErrorConfirm := 0;
    END_IF
END_FUNCTION
3.6.故障类型判断FB_Error
FUNCTION_BLOCK FB_Error
    IF
        F_AtypeErrorConfirm(IN1,IN2,IN3,IN4,IN5) = 1                        (*A类故障判断*)
        THEN
        OUT1 := A;
        OUT2 := TRUE;
    ELSIF
        F_BtypeErrorConfirm(IN6,IN7) = 1                        (*B类故障判断*)
        THEN
        OUT1 := B;
        OUT2 := TRUE;
    ELSIF
        F_CtypeErrorConfirm(IN4,IN5) = 1                    (*C类故障判断*)
        THEN
        OUT1 := C;
    ELSIF
        F_DtypeErrorConfirm(IN5) = 1                        (*D类故障判断*)
        THEN
        OUT1 := D;
    ELSIF
        F_EtypeErrorConfirm(IN5,IN5,IN6,IN7,IN1) = 1        (*E类故障判断*)
        THEN
        OUT1 := E;
    END_IF  
END_FUNCTION_BLOCK

4.状态判断

状态判断部分写成一个功能块如下,在主程序中调用即可。
FB_StateJudge

FUNCTION_BLOCK FB_StateJudge
    IF IN_nPowerUnitStatusWord = Stopped_Status
        THEN
        OUT_bStatusRun := FALSE;
    ELSIF OUT_bStatusRun = 1    (*xS072为BOOL类型,不能取值为2*)   
        THEN
        OUT_bStatusRun := TRUE;
    END_IF


    IF IN_bStatusRun = FALSE AND IN_bStatusFault = FALSE AND IN_bMainSwitchStatus = FALSE AND IN_iSpeedActual >= IN_iGenStartSpeed
        THEN
        OUT_bStatusReady := TRUE;
    ELSE
        OUT_bStatusReady := FALSE;
    END_IF

    IF IN_bMainSwitchStatus = TRUE 
        THEN
        IF IN_bEngine1SwitchStatus OR IN_bEngine2SwitchStatus OR IN_bEngine3SwitchStatus 
            THEN
            IN_eParallelStatus := ShaftGenOnOnly;
        ELSE
            IN_eParallelStatus := ShaftGenAndDieselGenOn;
        END_IF
    ELSE
        IN_eParallelStatus := ShaftGenOff;
    END_IF      
END_FUNCTION_BLOCK

5.故障处理

故障处理部分主要包括停轴发和启动备用发电机两个流程,分别写成两个Action,在主程序中调用。

5.1.停轴发StopAxis
ACTION StopAxis: 

CASE Step OF        
         0:         
            IF eErrorType=A THEN    (*command = eErrorType*)
                Step := 5;
            END_IF

         5:
            IF bMainSwitchStatus = TRUE THEN  (*xs601  bMainSwitchStatus*)
                Step := 10;
            ELSE
                Step := 30;
            END_IF                                  
    (*  CASE SubStep OF 0: *)
         10:
            timer1.IN := 1;
            timer1.PT := T#3000ms;
            timer1();
            IF timer1.Q =1 THEN
                Step := 20;
            END_IF

         20:
            timer2.IN := 1;
            timer2.PT := T#500ms;
            timer2();
            IF timer2.Q =1 THEN 
                Step := 30;
            ELSE 
                Step := 255;
            END_IF
            (*AxisStop.Input.Funs.ton1.IN := AxisStop.Input.Par.signal1;    

                AxisStop.Input.Funs.ton1.PT := AxisStop.Input.Par.time1;
                AxisStop.Input.Funs.ton1(); 
                    IF AxisStop.Input.Funs.ton1.Q = 1 THEN
                    Step := 20;
                    END_IF

                CASE 20:
                    AxisStop.Input.Funs.ton2.IN := AxisStop.Input.Par.signal2;
                    AxisStop.Input.Funs.ton2.PT := AxisStop.Input.Par.time2;    
                    AxisStop.Input.Funs.ton2();
                    IF AxisStop.Input.Funs.ton2.Q = TRUE
                    Step := 30;
                    ELSE    
                    Step := 255;
                    END_IF*)

     30:
        bCmdStartPowerUnit := FALSE;            
        IF nPowerUnitStausWord = FALSE THEN

                    Step := 0;
                    bMainSwitchStatus := 0;
        ELSE
        nSystemWarnWord1.10 := TRUE;
        nSystemWarnWord1.11 := TRUE;
        END_IF

     255:
        xA113F := TRUE;
        Step := 30;
END_CASE
END_ACTION
5.2.起动备用发电机流程StartBackupGen
ACTION StartBackupGen:
    CASE step1 OF
         0:

            IF eParallelStatus = ShaftGenOnOnly THEN 

                step1 := 10;
            END_IF

        10:
                bCmdStartBackupGen := TRUE;
                timer3.IN := TRUE;
                timer3.PT := T#3000ms;
                timer3();
                IF timer3.Q = TRUE 
                THEN
                bCmdStartBackupGen := FALSE;
                timer3.IN:= FALSE;
                step1:= 20;
                END_IF

        20:
                timer4.IN := TRUE;              
                timer4.PT := T#45000ms;
                timer4();
            IF timer4.Q = FALSE THEN

                    IF bEngine1SwitchStatus= TRUE 
                        OR bEngine2SwitchStatus=TRUE 
                        OR  bEngine3SwitchStatus =TRUE 
                    THEN
                step1 := 0;
                ELSE
                nSystemWarnWord1.12 := TRUE;
                END_IF
                END_IF
END_CASE
END_ACTION

6.操作

操作部分主要包括停轴发,启动,增频,降频,复位和紧急停车几个操作,分别写成6个Action,在主程序中调用,停轴发部分上面已经讲过,下面是其他5个操作。

6.1启动
ACTION Start:
    bCmdStartPowerUnit := 1;
    timer5.IN := TRUE;
    timer5.PT := INT_TO_TIME (iMainSwicthDelayTime);
    IF timer5.Q =TRUE THEN

        IF nPowerUnitStatusWord = 2
            THEN
            ; 
        ELSE

        bStartFailed := TRUE;
        bFaultLatch := TRUE;
        bCmdStartPowerUnit := FALSE;

        END_IF
        END_IF
END_ACTION
6.2增频
ACTION addFreq:
    IF iNoLoadFreqSetpoint < iNoloadMaxFreq
        THEN
        timer6.IN := TRUE;
        timer6.PT := T#1000ms;
        timer6();
        IF timer6.Q = TRUE
            THEN
            iNoLoadFreqSetpoint := iNoLoadFreqSetpoint + iFreqChangeRate;
            timer6.IN := FALSE;
        END_IF

        ELSE
        ;
        END_IF
END_ACTION
6.3减频
ACTION decFreq: 
    IF iNoLoadFreqSetpoint > iNoloadMinFreq

        THEN
        timer6.IN := TRUE;
        timer6.PT := T#1000ms;
        timer6();
        IF timer6.Q = TRUE
            THEN
            iNoLoadFreqSetpoint := iNoLoadFreqSetpoint - iFreqChangeRate;
            timer6.IN := FALSE;
        ELSE
            ;
        END_IF
    END_IF
END_ACTION
6.4复位
ACTION Reset:
    bFaultLatch := FALSE;(*bFaultLatch xS073*)
    bStartFailed := FALSE;
    bStopFailed := FALSE;
    nSystemWarnWord1.12 := FALSE;
    bCmdResetPowerCabinet := TRUE;
END_ACTION
6.5紧急停车
ACTION EmergencyStop:
    bCmdStartPowerUnit := FALSE;
    bFaultLatch := TRUE;
    nSystemWarnWord1.11 := TRUE;
    bCmdMainSwitch := TRUE;
END_ACTION

7.主程序代码

PROGRAM _CYCLIC
    (* Insert code here *)
(*  F_AtypeErrorConfirm();
    F_BtypeErrorConfirm();
    F_CtypeErrorConfirm();
    F_DtypeErrorConfirm();
    F_EtypeErrorConfirm();  *)
    (*故障判断*)
    ErrorConfirm;

(*****************************故障类型判断*************************)
    fbError.IN1 := nPowerUnitWarnWord1;
    fbError.IN2 := nPowerUnitWarnWord1;
    fbError.IN3 := nPowerUnitWarnWord1;

    fbError.IN4 := nSystemWarnWord1;
    fbError.IN5 := nSystemWarnWord2;
    fbError.IN6 := nSystemWarnWord3;  
    fbError.IN7 := nSystemWarnWord4;

    fbError();
    eErrorType := fbError.OUT1;
    bFaultLatch := fbError.OUT2;
    IF eErrorType <> 0     
        THEN
        bStatusFault := TRUE;
    ELSE
        ;
    END_IF
    (***************************状态判断*******************************)
    fbStatusJudge.IN_bEngine1SwitchStatus := bEngine1SwitchStatus;
    fbStatusJudge.IN_bEngine2SwitchStatus := bEngine2SwitchStatus;
    fbStatusJudge.IN_bEngine3SwitchStatus := bEngine3SwitchStatus;
    fbStatusJudge.IN_bMainSwitchStatus := bMainSwitchStatus;
    fbStatusJudge.IN_bStatusFault := bStatusFault;
    fbStatusJudge.IN_bStatusRun := bStatusRun;
    fbStatusJudge.IN_eParallelStatus := eParallelStatus;
    fbStatusJudge.IN_iGenStartSpeed := iGenStartSpeed;
    fbStatusJudge.IN_iSpeedActual := iSpeedActual;
    fbStatusJudge.IN_nPowerUnitStatusWord := nPowerUnitStatusWord;

    fbStatusJudge();    
    bStatusReady := fbStatusJudge.OUT_bStatusReady;
    bStatusRun := fbStatusJudge.OUT_bStatusRun;
    (*************************故障处理********************************)
    CASE test OF

        1:

            StopAxis;                  
        2:
            IF eParallelStatus = ShaftGenOnOnly
                THEN
                StartBackupGen;
            ELSE
                StopAxis;                   
            END_IF 
        3:
            IF eParallelStatus = ShaftGenOnOnly
                THEN
                StartBackupGen;
            ELSE;
            END_IF
        4:
            StartBackupGen ;
        ELSE
            ;
    END_CASE;

    (***********************起动************************************)
    IF
        bStart=TRUE AND bStatusReady =TRUE AND bStop = FALSE
        THEN
        Start;
    END_IF
    (***********************停止************************************)
    IF bStop = TRUE AND bStatusRun = TRUE 
        THEN 
        StopAxis;
    END_IF
    (**********************增频或降频*******************************)
    IF bFreq_Add
        THEN
        addFreq;
    END_IF
    IF bFreq_Dec
        THEN
        decFreq;
    END_IF
    (**********************复位*************************************)
    IF bReset
        THEN
        Reset;
    END_IF 
    (**********************紧急停车*********************************)
    IF bEmergencyStop
        THEN
        EmergencyStop;
    END_IF
END_PROGRAM
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PLC 200项目实例下载是指可以下载PLC 200项目的实例案例。PLC 200是一种常用的工业自动化设备,它可以用来控制和监控工业过程中的各种机械和设备。通过下载PLC 200项目的实例案例,我们可以获得一些已经完成并成功运行的项目示例,有助于我们在实际应用中更好地理解和掌握PLC 200的工作原理和功能。 PLC 200项目实例下载的好处有以下几点: 1. 学习和参考:通过下载PLC 200项目的实例案例,我们可以学习和参考项目开发过程中的思路和方法,了解如何从零开始设计和实施一个PLC 200项目。 2. 提高技能:通过实例案例的学习,我们可以提高自己的技能水平,掌握PLC 200的编程和调试技巧,增强解决实际问题的能力。 3. 节省时间和资源:通过下载PLC 200项目实例,我们可以避免从头开始开发项目的时间和资源浪费,可以直接在实例的基础上进行修改和优化,提高开发效率。 4. 推广和应用:通过实例案例的学习,我们可以将所学到的知识和技能应用到实际工作中,推广PLC 200的应用,为工业自动化领域的发展做出贡献。 总之,PLC 200项目实例下载是一个能够帮助我们学习和应用PLC 200的实际案例,提高技能水平和开发效率的重要途径。 ### 回答2: PLC 200项目实例是指PLC(可编程逻辑控制器)项目中的一个实例,它是PLC编程和应用的一个具体案例,用于展示PLC在现实工程中的应用和功能。 PLC 200是指一个特定型号的PLC设备,它具有一定的输入和输出接口,可用于对机器和设备的控制和监视。通过编写PLC 200项目实例的程序,可以实现自动化控制、逻辑判断以及数据采集等功能。 下载PLC 200项目实例有助于学习和理解PLC编程的基本原理和应用方法。通过阅读和分析已有的PLC 200项目实例,可以了解PLC在不同场景中的应用,掌握如何使用PLC软件进行编程和调试。 对于初学者来说,下载PLC 200项目实例可以提供实际案例作为参考,帮助他们更好地理解PLC编程的概念和实践操作。对于有经验的PLC工程师来说,下载PLC 200项目实例可以作为技术文献进行研究,进一步提高自己在PLC编程领域的水平。 PLC 200项目实例通常可以从PLC设备的官方网站或相关论坛上下载。下载后,可以根据实例中的说明文档和程序代码进行学习和实践。同时,也可以根据自己的实际需求进行修改和扩展,以适应自己的工程项目。 总之,PLC 200项目实例的下载为学习和应用PLC编程提供了一个有价值的参考资源,可以帮助我们更好地掌握该技术并应用于实际工程中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值