欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    积分分离PID控制算法程序.docx

    • 资源ID:335664       资源大小:39.81KB        全文页数:25页
    • 资源格式: DOCX        下载积分:7金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要7金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    积分分离PID控制算法程序.docx

    积分分离PlD控制算法程序2022-01-0515:23;*P10,积分分离PID控制算法程序*;T、TD、TI>KP挨次从30H,33H,36H,39H开始。;A,B,C,A',的值挨次存在BLOCKl,BL0CK2,BL0CK3BL0CK4的地址里;这里B'与C值相同;这里R(k)给的是定值ORG0000HEEQU20H;一阈值GKEQU23H;G(k)GKlEQU26H;G(k-l)FKEQU29H;F(k)FKlEQU2CH;F(k-l)BLOCKlEQU50H;ABL0CK2EQU53H;BBL0CK3EQU56H;CBL0CK4EQU5AH;A'UKEQU5DH;存放结果BUFFEQU43H;暂存区BUFFlEQU46HBUFF2EQU49HBUFFROEQU4CHRECEQU63H;采样次数RKEQU66H;R(k)CKEQU69H;采样数据始址EKEQU6CH;存放偏差值E(k)的始址EKlEQU70H;存放E(kT)的始址TEST:MOVRK,#01H;常数Rk1.25的BCD码浮点数MOVRK+1,#12HMOVRK+2,#50H;MOVE,#7EH;设定一阈值0.001的BCD码浮点数;MOVE+l,ttlOH;MOVE+2,#00HMOVE,#00H;阈值为0.3MOVE+l,#30HMOVE+2,#00HMOV3CH,#0111;常数1的BCD码浮点数MOV3DH,#10HMOV3EH,#00HMOV40H,#01H;常数2的BCD码浮点数MOV41H,#20HMOV42H,#00HMOV30H,#01H;T2.34的BCD码浮点数MOV31H,#23HMOV32H,#40HMOV33H,#01H;Td3.54的BCD码浮点数MOV34H,#35HMOV35H,#40HMOV36H,#01H;Ti1.12的BCD码浮点数MOV37H,#11HMOV38H,#20HMOV39H,#01H;Kp1.25的BCD码浮点数MOV3AH,#12HMOV3BH,#50HMOVRO,#E;将其转换成二进制浮点操作数LCALLBTOFMOVRO,#RKLCALLBTOFMOVRO,#3CHLCALLBTOFMOVRO,#40HLCALLBTOFMOVRO,#39HLCALLBTOFMOVRO,#36HLCALLBTOF;将其转换成二进制浮点操作数MOVR0,tt33H;指向BCD码浮点操作数TdLCALLBTOF;将其转换成二进制浮点操作数MOVRO,#30H;指向BCD码浮点操作数TLCALLBTOF;将其转换成二进制浮点操作数MOVRl,#BUFFRO;保存30H中的值即T值LCALLFMOVROMOVRl,#36H;计算A值(1+T/Ti+Td/T).KpLCALLFDIVMOVRl,#3CH;常数1LCALLFADDMOVR0,#33H;保存33H中的值MOVRl,#BUFFLCALLFMOVROMOVRl,#BUFFROLCALLFDIVMOVRl,#30H;30H里存的是T/Ti+1LCALLFADDMOVR1,#39HLCALLFMULMOVRl,#BLOCK1;将结果保存在BI,OCK1中LCALLFMOVROMOVRl,#BUFFRO;30H恢复原值MOVR0,#30HLCALLFMOVMOVRl,#BuFF;33H恢复原值MOVR0,#33HLCALLFMOVMOVR0,#40H;计算B的值Kp.(1+2.Td/T)MOVR1,#33HLCALLFMULMOVRl,#30HLCALLFDIVMOVRl,tt3CHLCALLFADDMOVR1,#39HLCALLFMULMOVRI,#BLoCK2;保存B值到BLOCK2中LCALLFMOVROMOVRO,#39H;计算C的值Kp.Td/TMOVR1,#33HLCALLFMULMOVRl,#30HLCALLFDIVMOVRl,#BLoCK3;保存C值到BL0CK3中LCALLFMOVROMOVR0,#33H;计算A',保存33H中的值MOVRl,#BUFFROLCALLFMOVROMOVRl,#30HLCALLFDIVMOVR1,#3CHLCALLFADDMOVRl,#39HLCALLFMULMOVRI,#BLoCK4;保存A'值到BL0CK4中LCALLFMOVROMOVRl,#BUFFRO;恢复33H中的值LCALLFMOVMOVR0,#EKl;将EKI,FKl,GKl设初值0LCALLFCLRMOVR0,卵KlLCALLFCLRMOVR0,#GKlLCLLFCLRMOVREC,#04H;设置采样次数LOOP:MOVCK,#O1H;采样数据暂时给了一个定值MOVCK+1,1OHMOVCK+2,#00HMOVRO,#CKLCALLBTOFMOVRO,#RK;保存R(k)中的值MOVRl,SBUFFROLCALLFMOVROMOVRI,#CKLCALLFSUB;计算R(k)-C(k)的值送给E(k)MOVR1,#EKLCALLFMOVROMOVRI,#BUFFROLCALLFMOV;恢复R(K)的值,释放、BUFFROMOVR0,#BUFFRO;EK存到BUFFROMOVRI,#EKLCALLFMOVLCALLFABS;求EK的绝对值MOVRI,#E;判断EK的绝对值与E的大小LCALLFCMPJCPID;EK<=E时转PID控制程序否则PD程序CJNEA,#00H,PDLJMPPIDPD:MOVR0,#BLoCK4MOVRl,#BUFFRO;保存A'的值LCALLFMOVROMOVRl,#EKLCALLFMULMOVRl,#FKlLCALLFSUBMOVR1,#UK;结果存在UK中LCALLFMOVROMOVRl,#BUFFRo;恢复A,LCALLFMOVMOVR0,#BLoCK3;计算B'.E(k)这里B'值与C值同MOVRl,#BUFFRO;保存B,LCALLFMOVROMOVR1,#EKLCALLFMULMOVR1,#FK;BEK存到FK中LCALLFMOVROMOVRI,#BUFFRO;恢复B,LCALLFMOVLJMPOUTPID:MOVRO,#BLOCKI;计算A.E(k)+G(K-I)MOVRl,#BUFFRO;保存ALCALLFMOVROMOVRI,#EKLCALLFMULMOVRI,#GKlLCALLFADDMOVRl,ttUK;计算结果存入UK中LCALLFMOVROMOVRI,#BUFFRO;恢复A值LCALLFMOVMOVRO,#BLOCK2;计算U(k)-B.E(k)+C.E(k-1)MOVRI,#BUFFRO;保存B到BUFFROLCALLFMOVROMOVRI,#EKLCALLFMULMOVRl,#BuFF;B.E(k)保存到BUFFLCALLFMOVROMOVRO,#UKMOVRI,#BUFF1;UK保存到BUFFlLCALLFMOVROMOVRI,#BUFFLCALLFSUBMOVRI,#BUFF;U(k)-BE(k)保存到BUFFLCALLFMOVROMOVRO,#BLOCK3;计算C.E(k-l)MOVRl,#BUFF2;保存C到BUFF2LCALLFMOVROMOVRI,#EKILCALLFMULMOVRI,#BUFFLCALLFADDMOVRI,#GK;U(k)-BE(k)+CE(kT)保存到GKLCALLFMOVROMOVRl,#BUFF2;恢复C值释放BUFF2LCALLFMOVMoVR0,#UK;恢复UK值释放BUFFlMOVRI,#BUFFlLCALLFMOVMOVRO,#BLOCK2;恢复BMOVRI,#BUFFROLCALLFMOVOUT:MOVRO,#GKl;G(k)>G(k-l)MOVRI,#GKLCALLFMOVMOVRO,#FKl;F(k)>F(K-1)MOVRI,#FKLCALLFMOVMOVRO,#EKl;E(K)>E(K-1)MOVRl,#EKLCALLFMOVMOVRO,#UK;UK转换成BCD码浮点数输出LCALLFTOBLCALLDELAY;等待采样时刻DJNZREC,NEXTlSJMP$NEXTl:LJMPLOOPDELAY:MOVR7,#02HDELAYl:MOVR6,#OFFHDELY2:DJNZR6,DELY2DJNZR7,DELAYlRET;(1)标号:FSDT功能:浮点数格式化;入口条件:待格式化浮点操作数在R0中。;出口信息:己格式化浮点操作数仍在R0中。;影响资源:PSW、A、R2、R3、R4、位IFH堆栈需求:6字节FSDT:LCALLMVRO;将待格式化操作数传送到第一工作区中LCALLRLN;通过左规完成格式化LJMPMOVO;将已格式化浮点操作数传回到R0中;(2)标号:FADD功能:浮点数加法;入口条件:被加数在R0中,加数在R1中。;出口信息、:OV=O时,和仍在R0中,OV=I时,溢出。;影响资源:PSW、A、B、R2R7、位1EH、IFH堆栈需求:6字节FADD:CLRFO;设立加法标志SJMPAS;计算代数和(3)标号:FSUB功能:浮点数减法;入口条件:被减数在R0中,减数在R1中。;出口信息:OV=O时,差仍在R0中,OV=I时,溢出。;影响资源:PSW、A、B、R2R7、位1EH、IFH堆栈需求:6字节FSUB:SETBFO;设立减法标志AS:LCALLMVR1;计算代数和。先将R1传送到第二工作区MOVC,FO;用加减标志来校正第二操作数的有效符号CLRA;*?应加的一条语句RRCAXRLA,RlMOVC,ACC.7ASN:MOV1EH,C;将第二操作数的有效符号存入位IEH中XRLA,©R0;与第一操作数的符号比较RLCAMOVF0,C;保存比较结果LCALLMVRO;将以0传送到第一工作区中LCALLASl;在工作寄存器中完成代数运算MOVO:INCRO;将结果传回到R0中的子程序入口INCROMOVA,R4;传回尾数的低字节MOVR0,ADECROMOVA,R3;传回尾数的高字节MOVR0,ADECROMOVA,R2;取结果的阶码MOVC,IFH;取结果的数符MOVACC.7,C;拼入阶码中MOVR0,ACLRACC.7;不考虑数符CLROV;清除溢出标志CJNEA,#3FH,MVOl;阶码是否上溢?*应为#40HSETBOV;设立溢出标志MVOl:MOVA,Ro;取出带数符的阶码RETMVRO:MOVA,©R0;将出0传送到第一工作区中的子程序MOVC,ACC.7;将数符保存在位IFH中MOV1FH,CMOVC,ACC.6;将阶码扩充为8bit补码MOVACC.7,CMOVR2,A;存放在R2中INCROMOVA,R0;将尾数高字节存放在R3中MOVR3,A

    注意事项

    本文(积分分离PID控制算法程序.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开