您的位置:控制工程论坛网论坛 » PLC与PAC » 速度控制——共同理解后半部分

hbpygr

hbpygr   |   当前状态:离线

总积分:125  2025年可用积分:0

注册时间: 2008-10-16

最后登录时间: 2012-10-15

空间 发短消息加为好友

速度控制——共同理解后半部分

hbpygr  发表于 2008/10/22 19:25:09      861 查看 3 回复  [上一主题]  [下一主题]

手机阅读

      L     L#16
      L     MW   906
      *I   
      LAR1 
      L     MW [AR1,P#92.0]
      T     #Order_Sew                  //各道次压下辊缝给定值
      L     7000
      >=I  
      JCB   M001
      L     #Order_Sew
      L     3000
      <=I  
      JCB   M001
      L     #Order_Sew                  //限幅:7000>=x>=3000
M001: T     #Order_Sew
      ITD  
      L     L#5                         //给定值*10(扩大10倍)/2      (计算单边辊缝值)
      *D   
      T     #PreSewWidth                //单边预设的辊缝目标值,精确至0.01mm
 A     #Start_Pluse                //此信号为上升沿信号,压下系统启动,以下为初始化过程
      O     M      0.1                  //****
      JNB   M002
      L     #RWidth                     //现时刻操作侧(或传动侧)辊缝实际值  //       ***       //从此行开始至第24行用来判断辊缝给定值是否需要补偿。
      L     #PreSewWidth                //下时刻预设的单边辊缝目标值                                                                                                                                                                                                                                 
      -D   
      T     MD  3100                    //差值(第一次检查本道次将要走的行程值,但作用并不是用来形成位置闭环,而是判断辊缝给定值是否需要补偿的素材)
      L     L#0
            =     #CLY_SewAD                  //如果pauseD1<0,即差值为负,则为放开状态(辊缝增加)  //     ***    //主要作用不是判断动作状态,而是判断数值的正负//
      SET                               //本行使能
      A     #CLY_SewAD                  //此变量主要作用是判断数值符号的正负。检查状态,差值为正(压下状态)则跳转m003,差值为负(放开状态)则数值符号反向,注意与变量Sew_ADD(增加补偿量后)的区别
      JNB   M003                        //压下状态怎么办?当然是跳转M003,即:压下状态时,差值不用取反。 (第一次判断放开与压下状态的区别)
      L     MD  3100
      NEGD                              //对长整数(32位)求补码(二进制补码指令相当于原码乘以"-1") 
      T     MD  3100                    //如果为负则符号反向
M003: L     MD  3100
      L     L#300
      <=D  
      =     #CLY_SewOK                  //如果差值<=300(3mm),说明实际值与目标值相差不大,这时发出辊缝不用补偿的信号(不论是放开状态还是压下状态)
      L     L#0
      T     #Repair                     //差值正常时,补偿值为0
      SET                               //使能
      AN    #CLY_SewOK                  //检查RLO,如果差值不用补偿的信号为0则继续执行补偿值计算
      JNB   M002                        //如果有差值不做补偿的信号则跳转M002不再进行补偿计算
      L     MD  3100
      DTR  
      L     1.000000e+002
      /R   
      T     MD  3104                    //缩小100倍,也可以理解为规格化为mm
      L     1.000000e+001
      >R   
      JNB   M015                        //检查差值是否大于10mm,如大于10mm则限制为10mm (一般情况下都是大于10mm的),不大于10mm则跳转到M015
      T     MD  3104                    //最大为10mm
      JU    M017
M015: L     MD  3104                    //补偿值的计算
      T     MD  3104
M017: L     MD  3104
      SQR                               //计算浮点数(32位)的平方  
      L     1.000000e+001
      /R   
      T     MD  3104                    //差值(5      L     #DNRepair                   //L#22,用补偿值*下降时(向内侧压下)的补偿系数22,得出补偿量
      DTR  
      L     MD  3104
      *R   
      RND                               //取整 
      T     #Repair                     //向内压下时的补偿量
      SET                               //使能
      A     #CLY_SewAD                  //检查过程是否为放开过程(此项判断将压下过程与放开过程的补偿量区别开,如果为压下过程则跳转M002,如果为放开过程则向下执行)
      JNB   M002
      L     #UPRepair                   // L#-10,用补偿值*上升时(向两侧放开)的补偿系数。得出补偿量
      DTR  
      L     MD  3104
      *R   
      RND                               //取整  
      T     #Repair                     //放开状态时的补偿量
M002: L     #PreSewWidth                //以上为初始化过程,主要作用有两个:检查此过程为放开还是压下,并在此基础上确定补偿量
      L     #Repair                     //补偿值
      +D   
      T     #PreSewWidth                //加入补偿量的单边辊缝预设值
      L     #RWidth                     //当前辊逢值
      L     #PreSewWidth                //现时刻的辊缝实际值-本道次开始时的给定值
      -D   
      T     #Width_ERR                  //单边实际值与给定值的偏差量,需注意的是,这不是道次结束时最终产生的偏差,而是一个动态的、由给定向目标变化的正常过程
      L     L#0
            =     #Pre_GT_R                   //现时刻为放开状态,即时判断
 A     #Sew_ADD                    // //换道次时判定此次动作过程为增加状态(放开状态)*辊逢加信号(放开)
      AN    #Pre_GT_R                   //现时刻不是放开状态
      A(   
      L     #Width_ERR                  //单边实际值与给定植(含补偿量)的偏差量
      L     #UP_Over_S                  //抬起(放开)时辊缝门槛值,操作侧为0。传动侧为-5
      >=D                               //当判定此过程为放开时,实际上实际值(当前)应小于给定值(下一道次),则此值为负,正常时都应小于-5
      )    
      JNB   M004                        //三个条件都会导致跳转,但情况又各不相同。 1、道次初始时为压下状态则跳转。2、即时判断现时刻为放开状态则跳转。3、
      L     #Min_Spd                    //最小速度
      T     #Y_Speed                    //速度给定,指出了放开状态结尾时(已即时判断出现时刻不再是放开状态)的速度给定
      SET  
      R     #Sew_ADD                    //将放开状态信号取消
M004: SET  
      A     #Sew_ADD                    //虽然发生了跳转,但不能说明具体原因,因此需要再次判断是不是由于为压下状态引起的跳转,因此需重新判断是否为放开状态
      JNB   M005                        //压下状态跳转到M005
      L     #Width_ERR                  //放开状态时正常的速度给定计算过程
      L     #UP_Over_S
      -D   
      T     #Width_ERR                  //对偏差值进行处理
M005: L     #Width_ERR
      L     L#0
            JNB   M006                        //压下过程是大于0的,跳转M006
      L     #Width_ERR
      L     L#-1
      *D   
      T     #Width_ERR                  //取绝对值
M006: NOP   0                           //ABS
 A     #Start_Pluse                //辊缝计算开始
      JNB   M007
      A     #Pre_GT_R                   //检查现时刻是否为放开状态
      S     #Sew_ADD                    //确认此次换道次动作为放开过程并置位
      SET  
      AN    #Sew_ADD
      JNB   M007                        //如果是放开过程则跳转M007
      L     #Width_ERR                  //处理后的差值数
      L     #StabRUNL                   //刚性系数
      -D   
      L     #GotoRUNL                   //?不太清楚,怀疑为间隙,10分之1的螺距,或者为了给减速留一定的S
      -D   
      DTR                               //s
      L     #Acceler                    //a, 怀疑为2a
      *R   
      T     MD  3104
      L     0.000000e+000
            JNB   M008
      T     MD  3104                    //Vt平方一定要大于0
M008: L     MD  3104
      SQRT                              //开方,计算出Vt
      L     4.028357e+005
      *R   
      L     #Vmax
      /R   
      T     #Vn                         //Vn=R*602931.2/vmax,转化为转速
      L     #Vn
      L     1.064960e+004               //速度最大值限幅,8192的1.3倍
      >R   
      JCB   M009
      L     #Vn
      L     #NminR                      //速度最小值限幅(转速)
            JCB   M009
      L     #Vn                         //从0开始的加速过程
M009: T     #Vn
      L     #Vmax
      *R   
      L     1.638400e+004
      /R   
      SQR  
      T     MD  3104
      L     #Vmin
      SQR  
      T     MD  3108
      L     MD  3104
      L     MD  3108
      -R   
      L     1.209055e+003
      /R   
      L     #Acceler
      /R   
      TRUNC
      L     #GotoRUNL
      +D   
      T     #L3
      L     L#0
            JNB   M010
      T     #L3
      L     0.000000e+000
      T     #Vn
M010: L     #Vn
      TRUNC
      T     #Y_Speed
M007: NOP   0
  A     #Start_Pluse
      A     #Sew_ADD
      JNB   M011
      L     #Width_ERR
      L     #StabRUNL
      -D   
      L     #UP_Over_S
      +D   
      L     #GotoRUNL
      -D   
      DTR  
      L     #Acceler
      *R   
      T     MD  3104
      L     0.000000e+000
            JNB   M012
      T     MD  3104
M012: L     MD  3104
      SQRT 
      L     4.028357e+005
      *R   
      L     #Vmax
      /R   
      T     #Vn
      L     #Vn
      L     1.064960e+004               // 8.192000e+003;
      >R   
      JCB   M013
      L     #Vn
      L     #NminR
            JCB   M013
      L     #Vn
M013: T     #Vn
      L     #Vmax
      *R   
      L     1.638400e+004
      /R   
      SQR  
      T     MD  3104
      L     #Vmin
      SQR  
      T     MD  3108
      L     MD  3104
      L     MD  3108
      -R   
      L     1.209055e+003
      /R   
      L     #Acceler
      /R   
      TRUNC
      L     #GotoRUNL
      +D   
      T     #L3
      L     L#0
            JNB   M014
      T     #L3
      L     0.000000e+000
      T     #Vn
M014: L     #Vn
      L     -1.000000e+000
      *R   
      TRUNC
      T     #Y_Speed
M011: NOP   0
1楼 0 0 回复
  • 218hty

    218hty   |   当前状态:在线

    总积分:9071  2025年可用积分:0

    注册时间: 2006-08-18

    最后登录时间: 2019-06-25

    空间 发短消息加为好友

    218hty   发表于 2008/10/21 18:04:53

    2楼 回复本楼

    引用 218hty 2008/10/21 18:04:53 发表于2楼的内容

  • 飘香

    飘香   |   当前状态:离线

    总积分:429  2025年可用积分:0

    注册时间: 2008-09-24

    最后登录时间: 2009-03-11

    空间 发短消息加为好友

    飘香   发表于 2008/10/21 18:29:22

    3楼 回复本楼

    引用 飘香 2008/10/21 18:29:22 发表于3楼的内容

  • bubli

    bubli   |   当前状态:在线

    总积分:817  2025年可用积分:0

    注册时间: 2008-06-22

    最后登录时间: 2015-05-25

    空间 发短消息加为好友

    bubli   发表于 2008/10/22 19:25:09

    程序很大啊,看了注解,也没有理解好
    4楼 回复本楼

    引用 bubli 2008/10/22 19:25:09 发表于4楼的内容

总共 , 当前 /