汇编语言实现PID运算Word下载.docx

上传人:b****1 文档编号:13391460 上传时间:2022-10-10 格式:DOCX 页数:8 大小:16.42KB
下载 相关 举报
汇编语言实现PID运算Word下载.docx_第1页
第1页 / 共8页
汇编语言实现PID运算Word下载.docx_第2页
第2页 / 共8页
汇编语言实现PID运算Word下载.docx_第3页
第3页 / 共8页
汇编语言实现PID运算Word下载.docx_第4页
第4页 / 共8页
汇编语言实现PID运算Word下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

汇编语言实现PID运算Word下载.docx

《汇编语言实现PID运算Word下载.docx》由会员分享,可在线阅读,更多相关《汇编语言实现PID运算Word下载.docx(8页珍藏版)》请在冰豆网上搜索。

汇编语言实现PID运算Word下载.docx

SHIFTTIME2DB?

//存放商和余数需要向右移位的次数(此值大小为除数小数位数)

QUOTIENTDW?

//存放商(包含后四位的小数)

REMAINDERDW?

//存放余数

DIV1DOTDW?

//小数部分移位后的值作为被除数,暂存值QUOTIENTDOTDW?

//存放小数部分相除的商,暂存值

REMAINDERDOTDW?

//存放小数部分相除的余数,暂存值

ERROR2DB'

DIV2=0,ERROR!

'

0AH,'

$'

//除0错误SQUARE_TIMEDW?

//开平方迭代次数

SQUARE1DW?

//需要进行开方运算的变量

SHIFTTIME3DB0//开方运算右移次数,为被开方数小数位数值的一半

SQUARE2DW?

//开方运算的值

DISPLAYWORDDW?

//用于显示的字,做测试用

//取绝对值存储区

ABSNUMDW?

//被转换的数

ABSVALDW?

//数转换完成后的数

//2.PID参数数据区

PVDW?

//被控量,可以提前给定一个量

SVDW0010H//设定值,需要给定

UNDW?

//控制量

UNOVDW?

//若UN值溢出,高字部分放在UN2中

EN1DW?

//前一控制周期(n-1)时刻偏差量

EN2DW?

//后一控制周期n时刻偏差量

ENPRODD?

//存放比例项

ENINT1DW?

//累积偏差量

ENINTDD?

//存放积分项

ENDIFFDD?

//用于微分项

ENSUMDD?

//存放三项的和

//

(1)PID1理想微分PID控制开环阶跃响应

KP1DW00A0H//比例系数

TI1DW0020H//积分时间常数

TD1DW0020H//微分时间常数

KD1DW0H//微分系数

TC1DW0008H//控制周期

//

(2)PID2实际微分PID控制开环阶跃响应

KP2DW0010H//比例系数

TI2DW0020H//积分时间常数

TD2DW0020H//微分时间常数

KD2DW0020H//微分系数KP和KD的乘积不超过8000H

TC2DW0008H//控制周期

UD0DD?

//微分项前一状态值Ud(n-1)

UD1DD?

//存放微分项后一状态值Ud(n)

UDDD?

//存放暂时的值

//(3)PID3闭环系统PID控制开环阶跃

SV1DW0100H//闭环串级系统的设定值

KPDW?

//比例系数

TIDW?

//积分时间常数

TDDW?

//微分时间常数

KDDW?

//微分系数KP和KD的乘积不超过8000H

TC3DW0008H//控制周期

INTSEPDB?

//积分分离是否开启,为1则开,为0则关,默认为0

INTSEPVALDW?

//积分分离值

//主调节器的PID参数

//一阶系统PID的参数

KP3DW0070H//比例系数

TI3DW0050H//积分时间常数

TD3DW0001H//微分时间常数

KD3DW0001H//微分系数KP和KD的乘积不超过8000H

UN1DW?

//主控制器的输出

EN11DW?

//主调节器存储上一时刻误差

UD11DW?

//存放上一时刻微分输出

//副调节器的PID参数

KP4DW0050H//比例系数

TI4DW0050H//积分时间常数

TD4DW0000H//微分时间常数

KD4DW0050H//微分系数KP和KD的乘积不超过8000H

UN2DW?

//副控制器的输出

EN21DW?

////副调节器存储上一时刻误差

UD21DW?

//3.被控对象数据存储区

KGDW?

//控制对象的增益

TGDW?

//控制对象的时间常数

//

(1)一阶惯性环节

K1DW0010H//增益,按照KP的小数格式,最后四位为小数位

T1DW0020H//惯性时间常数,最后四位为小数

PV2DW?

//一阶系统的输出

TCDW0008H//控制周期

//

(2)二阶惯性环节,与一阶一起构成二阶系统,K1,T1,K2,T2四个系数

K2DW0010H//增益,按照KP的小数格式,最后四位为小数位

T2DW0020H//惯性时间常数,最后四位为小数

PV1DW?

//二阶系统的输出

PV3DW?

//二阶系统中两个一阶系统之间的输出值

DATASENDS

//----------------------------------代码段---------------------------------

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS//初始化

MOVDS,AX

//PID1理想微分开环阶跃响应

MOVCX,200//PID计算次数

MOVPV,0000H//开环阶跃效应,第一周期输入为0,故PV设置为SV的值

CALLPIDINT

LOOP1:

//MOVBX,WORDPTRENPRO+2

//MOVDISPLAYWORD,BX

//CALLDISPLAYS

//MOVBX,WORDPTRENPRO

//MOVAX,WORDPTRENINT+2

//MOVDISPLAYWORD,AX

//MOVAX,WORDPTRENINT

//MOVBX,WORDPTRENDIFF+2

//MOVBX,WORDPTRENDIFF

//MOVINTSEP,0//开启积分分离

//MOVINTSEPVAL,0008H

CALLPIDG1

MOVAX,PV2

MOVDISPLAYWORD,AX

CALLDISPLAYS//显示被控量PV的值

//CALLPIDG1

//MOVAX,PV2

MOVDL,0AH

MOVAH,02H

INT21H

//CALLPID2

//MOVPV,0H//从第二个周期开始PV值设为0,用于阶跃响应

DECCX

JNZLOOP1

//用于测试乘法部分

//MOVMUL1,1000H

//MOVMUL2,0030H

//MOVSHIFTTIME1,4

//CALLMULTIPLICATION

//MOVAX,WORDPTRPRODUCT

//MOVBX,WORDPTRPRODUCT+2

//用于测试除法部分

//MOVDIV1,0078H//为被除数和除数赋值

//MOVDIV2,0050H

//MOVSHIFTTIME2,4

//CALLDIVISION

//MOVAX,TC1//调用乘法,获得Td除以Tc乘以Kp

//MOVDIV1,AX

//MOVAX,TI1

//MOVDIV2,AX

//MOVSHIFTTIME2,4//左移4位,按照Td的小数格式形成结果

//MOVAX,QUOTIENT

//MOVDISPLAYWORD,AX//查看商的值

//MOVAX,REMAINDER

//MOVDISPLAYWORD,AX//用于测试,查看余数的值

//MOVAX,TC1//调用除法和乘法,获得Tc除以Ti乘以Kp

//MOVAX,QUOTIENT//左移4位,按照Tc的小数格式形成结果

//MOVMUL2,AX

//MOVMUL1,AX

//MOVAX,KP1

//测试开平方部分

//MOVSQUARE_TIME,10//迭代次数为100次

//MOVSQUARE1,14H//被开放数为19

//CALLSQUARE

//MOVAX,SQUARE2

//MOVDISPLAYWORD,AX

//测试数值转换部分:

//MOVAX,8011H

//MOVABSNUM,AX

//CALLABSOLUTE

//MOVAX,ABSVAL

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1