标题: MOVIFIT-SC的PROFIBUS控制程序(写的很经典) [打印本页]

作者: 51黑tt    时间: 2016-3-6 14:17
标题: MOVIFIT-SC的PROFIBUS控制程序(写的很经典)
IN

OUT

状态字1


控制字1



---------------------------------------中文-------------------------------------
注意:兼容两个或三个过程数据字

PI1: 状态字 1
PI2: 状态字 2
Bit5   : 错误/警告 ="1"
Bit8-15: 错误位
错误码:
07 - 中间电路电压高
08 - 无监测错误
90 - 马达-变频器不匹配
17-24, 37 - CPU 错误
25, 94 - EEPROM错误
01 - 输出过程过电流
11 - 输出过程温度过高
84 - 马达温度过高
     马达-变频器不匹配
89 - 温度保护开关
     马达-变频器不匹配
06 - 相位错误

PO1: 控制字

--------------------------------------English-----------------------------------
note: compatible with 2 process data words (1PO/2PI)

PI1: Status word 1 (drive 1)
PI2: Status word 2 (drive 2)
Bit5   : Fault/Warning ="1"
Bit8-15: Fault number
Fault code:
07 - INTERMEDIATE CIRCUIT TENSION TO HIGH
08 - FAULT N-MONITORING
90 - ALLOCATION MOTOR-INVERTER WRONG
17-24, 37 - CPU FAULT
25, 94 - EEPROM-FAULT
01 - OUTPUT STAGE OVERCURRENT
11 - OUTPUT STAGE OVERTEMPERATURE
84 - OVERTEMPERATURE MOTOR
     ALLOCATION MOTOR-INVERTER WRONG
89 - OVERTEMPERATURE BRAKE
     ALLOCATION MOTOR-INVERTER WRONG
06 - NET-PHASEFAILURE

PO1: CONTROL WORD
    网段:
LAR1  P##_PI1_StatWord1           // copy status words into local variables
      L     #iPI_1
      T     LW [AR1,P#0.0]

      LAR1  P##_PI2_StatWord2
      L     #iPI_2
      T     LW [AR1,P#0.0]

      L     W#16#0                      // zeroes temporary variables
      LAR1  P##_PO1_CtrlWord
      T     LW [AR1,P#0.0]
//;
      A     #iEnableM1                  // check preconditions to enable drive
      AN    #_PI1_StatWord1.FaultWarn
      =     #_PreconOK_M1

      A     #iEnableM2                  // check preconditions to enable drive
      AN    #_PI2_StatWord2.FaultWarn
      =     #_PreconOK_M2
//;
//;
      A     #_PreconOK_M1
      A     #iStartM1
      =     #_PO1_CtrlWord.EnableM1     // enable drive 1

      A     #iReverseM1
      =     #_PO1_CtrlWord.ReverseM1    // enable drive 1 "CCW"

      A     #_PreconOK_M2
      A     #iStartM2
      =     #_PO1_CtrlWord.EnableM2     // enable drive 2
//;
//;
      A     #iReset
      =     #_PO1_CtrlWord.Reset
//;
//;
      A     #iBrakeM1
      A     #_PreconOK_M1
      =     #_PO1_CtrlWord.BrakeRelM1

      A     #iBrakeM2
      A     #_PreconOK_M2
      =     #_PO1_CtrlWord.BrakeRelM2
//;
//;
      A     #_PI1_StatWord1.DriveEn
      A     #_PI1_StatWord1.DriveRdy
      AN    #_PI1_StatWord1.FaultWarn
      =     #oDrvEnM1                   // drive enable indicator

      A     #_PI2_StatWord2.DriveEn
      A     #_PI2_StatWord2.DriveRdy
      AN    #_PI2_StatWord2.FaultWarn
      =     #oDrvEnM2                   // drive enable indicator

      L     #_PI1_StatWord1.Status
      L     0
      ==I   
      A     #iEnableM1
      AN    #_PI1_StatWord1.DriveRdy
      =     #_24V_Operation             // 24V operation (maintanence switch off)

      A     #_PI1_StatWord1.FaultWarn   // drive fault indicator
      O     #_24V_Operation             // 24V operation (maintanence switch off)
      =     #oFaultM1

      A     #_PI2_StatWord2.FaultWarn   // drive fault indicator
      O     #_24V_Operation             // 24V operation (maintanence switch off)
      =     #oFaultM2

      A     #oFaultM1
      JCN   NFL1
      L     #_PI1_StatWord1.Status
      JU    SFL1
NFL1: L     0
SFL1: T     #oFaultNoM1

      A     #oFaultM2
      JCN   NFL2
      L     #_PI2_StatWord2.Status
      JU    SFL2
NFL2: L     0
SFL2: T     #oFaultNoM2
//;
//;
      LAR1  P##_PO1_CtrlWord            // copy local variables into function outputs
      L     LW [AR1,P#0.0]
      T     #oPO_1

      SET   
      SAVE  
//;










欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1