计算机控制——PID编程实现


    实验 DDC单回路PID控制实验指导书
    实验目
    通实验掌握DDC单回路PID控制程序编制调试方法
    二 实验容
    1. 控制系统图示

    G(S) K1 (1+T1S)2
    D(Z)采数字PID控制规律T采样周期
    2. 象动态特性实验
    (1) G(S)离散化写出输入输出差分方程
    (必考虑零阶保持器)
    (2) C语言编制程序
    (3) 取三采样周期绘制输入U1阶跃定值时输出响应曲线印
    3. 单回路PID控制实验
    (1) 根述动态特性曲线采工程整定方法整定PID参数
    (2) 采具积分分离数字PID算法进行三实验:
    a 积分分离阀值β
    b β适中
    c β
    (3)CC++语言编制程序
    (4) 3种情况绘制r(t)1时y(t)u(t)阶跃响应曲线印
    (5) 分改变KpTiTd观察调节品质影响
    三 实验步骤
    1象动态特性实验
    (1)差分方程见附录:
    (2)编制程序:
    #includeiostreamh
    #includefstreamh
    void main()
    {
    fstream outfile(data1xlsiosout)
    int ij
    int t
    for(j0j<3j++)
    {
    cout<<输入采样周期
    cin>>t
    double u[100]
    double y[100]
    for(i0i<100i++)
    {
    u[i]10
    y[i]00
    }
    for(i2(i2)*t<100i++)
    {
    y[i]u[i](10+1000tt+200t)(1000tt)*y[i2](10+1000tt+200t)+(2000tt+200t)*y[i1](10+1000tt+200t)
    }
    for(i1(i1)*t<100i++)
    cout< for(i2(i2)*t<100i++)
    {
    outfile<<(i2)*t<<'\t'
    }
    outfile<<'\n'
    for(i1(i1)*t<100i++)
    {
    outfile< }
    outfile<<'\n'
    }
    outfileclose()

    }

    (3)输出结果:
    周期T1:
    0 000826446 00232908 00437812 0068618 00968417 0127631 0160287 0194215 0228913 0263963 0299012 0333772 0368005 040152 0434164 0465819 0496395 0525827 0554069 0581095 0606893 0631462 0654813 0676964 069794 0717773 0736495 0754146 0770766 0786395 0801078 0814856 0827773 0839872 0851194 0861781 0871673 0880908 0889525 089756 0905047 0912019 0918508 0924544 0930157 0935372 0940217 0944715 0948889 0952761 0956351 0959679 0962763 0965619 0968264 0970712 0972977 0975072 097701 0978802 0980457 0981987 09834 0984705 098591 0987023 0988049 0988996 098987 0990676 0991419 0992104 0992735 0993317 0993853 0994347 0994802 0995221 0995606 0995961 0996288 0996589 0996866 099712 0997355 099757 0997768 099795 0998118 0998272 0998413 0998543 0998663 0998773 0998874 0998967 0999052 099913 0990937
    周期T2: 0 00277778 00740741 0131944 0196245 0263224 0330204 0395323 0457341 0515483 0569318 0618667 066353 0704031 0740378 0772831 0801678 0827219 0849756 086958 0886969 0902185 0915468 0927041 0937104 094584 0953411 0959962 0965624 0970511 0974724 0978351 0981472 0984154 0986456 0988431 0990124 0991574 0992815 0993877 0994784 0995559 099622 0996784 0997266 0997676 0998025 0998323 0998576 0998791
    周期T3: 0 00532544 0135184 0229719 0326677 0419907 0505964 0583196 0651091 0709847 0760066 0802559 0838217 0867932 0892549 0912837 0929483 0943089 095417 0963168 0970453 0976338 098108 0984893 0987954 0990407 0992369 0993937 0995187 0996183 0996976 0997606 0998106 0998503
    阶跃曲线图:
    周期T分123
    2单回路PID控制实验
    (1)工程整定程序:
    #includeiostreamh
    void main()
    {
    int ik
    double tk1
    double mnxlcpfd
    double j0
    cout<<输入采样周期
    cin>>t
    double u[100]
    double e[100]
    double y[100]
    for(i0i<100i++)
    {
    u[i]10

    y[i]00
    }
    for(i2i<100i++)
    {
    y[i]u[i](10+1000tt+200t)(1000tt)*y[i2](10+1000tt+200t)+(2000tt+200t)*y[i1](10+1000tt+200t)
    }
    for(i1i<100i++)
    {
    if(j<(y[i+1]y[i]))
    {
    jy[i+1]y[i]
    ki
    k1(k1)*t
    }
    }
    m(y[k]+y[k+1])20
    n(20*k1+t)20
    x(y[k+1]y[k])t
    lnmx
    c(10m)x+nl
    cout<<值k1取值应输出值:< cout<<斜率< cout<<延迟<<(l+t20)<<'\n'<<时间常数< cout<<延迟时间常数<<((l+t20)c)< if(((l+t20)c)>02)
    {
    p038*(((l+t20)c)+088)(((l+t20)c)015)
    f081*c+019*(l+t20)
    d025*c
    }
    else
    {
    p12*c(l+t20)
    f2*(l+t20)
    d05*(l+t20)
    }
    cout<<整定参数:< cout< cout< cout<}
    (2)输出结果:
    Kp115323 Ti593767 Td148442
    注:整定参数采样周期T1时候结果简化处理采该参数作PID调节器参数
    3具积分分离控制系统
    (1)差分方程见附录:
    (2)编制程序:
    #includeiostreamh
    #includemathh
    #includefstreamh
    void main()
    {
    fstream outfile(data1xlsiosout)
    int iki1
    double tk1
    double mnxlcpfd
    double sxaabbccdd1dd2eeff
    double j00
    cout<<输入采样周期
    cin>>t
    double u[100]
    double e[100]
    double y[100]
    double u1[100]
    double y1[100]
    double r[100]
    for(i0i<100i++)
    {
    u[i]10
    y[i]00
    }
    for(i2i<100i++)
    {
    y[i]u[i](10+1000tt+200t)(1000tt)*y[i2](10+1000tt+200t)+(2000tt+200t)*y[i1](10+1000tt+200t)
    }
    for(i1i<100i++)
    {
    if(j<(y[i+1]y[i]))
    {
    jy[i+1]y[i]
    ki
    k1(k1)*t
    }
    }
    m(y[k]+y[k+1])20
    n(20*k1+t)20
    x(y[k+1]y[k])t
    lnmx
    c(10m)x+nl
    cout<<值k1取值应输出值:< cout<<斜率< cout<<延迟<<(l+t20)<<'\n'<<时间常数< cout<<延迟时间常数<<((l+t20)c)< if(((l+t20)c)>02)
    {
    p038*(((l+t20)c)+088)(((l+t20)c)015)
    f081*c+019*(l+t20)
    d025*c
    }
    else
    {
    p12*c(l+t20)
    f2*(l+t20)
    d05*(l+t20)
    }
    cout<<整定参数:< cout< cout< cout< PID整定程序
    定值阶跃程序
    aa(10+100t)*(10+100t)
    bb200*(10+100t)t
    cc1000tt
    dd1(10+tf+dt)
    dd2(10+dt)
    ee(10+20*dt)
    ffdt
    cout<<相关参数
    cout< for(i10i1<3i1++)
    {
    cout<<输入积分限
    cin>>sx
    for(i0i<100i++)
    {
    r[i]10
    e[i]00
    u1[i]00
    y1[i]00
    }
    u1[1]p*aa*dd1*r[1](aa+p*dd1)
    y1[1]00
    e[1]10
    if(sx {
    u1[2]u1[1]*(aa+bb+p*ee)(aa+p*dd2)+p(aa+p*dd2)*(aa*dd2*r[2](bb*dd2+aa*ee)*r[1])
    }
    else
    {
    u1[2]u1[1]*(aa+bb+p*ee)(aa+p*dd1)+p(aa+p*dd1)*(aa*dd1*r[2](bb*dd1+aa*ee)*r[1])
    }
    y1[2]u1[2](10+1000tt+200t)
    e[2]r[2]y1[2]
    if(sx {
    u1[3]u1[2]*(aa+bb+p*ee)(aa+p*dd2)(bb+cc+p*ff)(aa+p*dd2)*u1[1]+p(aa+p*dd2)*(aa*dd2*r[3](bb*dd2+aa*ee)*r[2]+(dd2*cc+bb*ee+aa*ff)*r[1])
    }
    else
    {
    u1[3]u1[2]*(aa+bb+p*ee)(aa+p*dd1)(bb+cc+p*ff)(aa+p*dd1)*u1[1]+p(aa+p*dd1)*(aa*dd1*r[3](bb*dd1+aa*ee)*r[2]+(dd1*cc+bb*ee+aa*ff)*r[1])
    }
    y1[3]u1[3](10+1000tt+200t)(1000tt)*y[1](10+1000tt+200t)+(2000tt+200t)*y[2](10+1000tt+200t)
    e[3]r[3]y1[3]
    if(sx {
    u1[4]u1[3]*(aa+bb+p*ee)(aa+p*dd2)(bb+cc+p*ff)(aa+p*dd2)*u1[2]+(cc)(aa+p*dd2)*u1[1]+p(aa+p*dd2)*(aa*dd2*r[4](bb*dd2+aa*ee)*r[3]+(dd2*cc+bb*ee+aa*ff)*r[2](cc*ee+bb*ff)*r[1])
    }
    else
    {
    u1[4]u1[3]*(aa+bb+p*ee)(aa+p*dd1)(bb+cc+p*ff)(aa+p*dd1)*u1[2]+(cc)(aa+p*dd1)*u1[1]+p(aa+p*dd1)*(aa*dd1*r[4](bb*dd1+aa*ee)*r[3]+(dd1*cc+bb*ee+aa*ff)*r[2](cc*ee+bb*ff)*r[1])
    }
    y1[4]u1[4](10+1000tt+200t)(1000tt)*y[2](10+1000tt+200t)+(2000tt+200t)*y[3](10+1000tt+200t)
    e[4]r[4]y1[4]
    if(sx {
    u1[5]u1[4]*(aa+bb+p*ee)(aa+p*dd2)(bb+cc+p*ff)(aa+p*dd2)*u1[3]+(cc)(aa+p*dd2)*u1[2]+p(aa+p*dd2)*(aa*dd2*r[5](bb*dd2+aa*ee)*r[4]+(dd2*cc+bb*ee+aa*ff)*r[3](cc*ee+bb*ff)*r[2]+ff*cc*r[1])
    }
    else
    {
    u1[5]u1[4]*(aa+bb+p*ee)(aa+p*dd1)(bb+cc+p*ff)(aa+p*dd1)*u1[3]+(cc)(aa+p*dd1)*u1[2]+p(aa+p*dd1)*(aa*dd1*r[5](bb*dd1+aa*ee)*r[4]+(dd1*cc+bb*ee+aa*ff)*r[3](cc*ee+bb*ff)*r[2]+ff*cc*r[1])
    }
    y1[5]u1[5](10+1000tt+200t)(1000tt)*y[3](10+1000tt+200t)+(2000tt+200t)*y[4](10+1000tt+200t)
    for(i6i<100i++)
    {
    if(sx {
    u1[i]u1[i1]*(aa+bb+p*ee)(aa+p*dd2)(bb+cc+p*ff)(aa+p*dd2)*u1[i2]+(cc)(aa+p*dd2)*u1[i3]+p(aa+p*dd2)*(aa*dd2*r[i](bb*dd2+aa*ee)*r[i1]+(dd2*cc+bb*ee+aa*ff)*r[i2](cc*ee+bb*ff)*r[i3]+ff*cc*r[i4])
    }
    else
    {
    u1[i]u1[i1]*(aa+bb+p*ee)(aa+p*dd1)(bb+cc+p*ff)(aa+p*dd1)*u1[i2]+(cc)(aa+p*dd1)*u1[i3]+p(aa+p*dd1)*(aa*dd1*r[i](bb*dd1+aa*ee)*r[i1]+(dd1*cc+bb*ee+aa*ff)*r[i2](cc*ee+bb*ff)*r[i3]+ff*cc*r[i4])
    }
    y1[i]u1[i](10+1000tt+200t)(1000tt)*y[i2](10+1000tt+200t)+(2000tt+200t)*y[i1](10+1000tt+200t)
    e[i]r[i]y1[i]
    }
    cout< for(i1i<100i++)
    {
    cout< }
    cout< for(i1i<100i++)
    {
    cout< }
    for(i1i<99i++)
    {
    outfile<<(i1)*t<<'\t'
    }
    outfile< for(i1i<99i++)
    {
    outfile< }
    outfile< for(i1i<99i++)
    {
    outfile< }
    outfile< }
    outfileclose()
    }
    (3)输出结果:
    积分限较时:
    U(t)阶跃数:
    244192 715003 778128 888198 102042 114284 124845 1334 139896 144474 147386 148941 149459 149241 148549 147598 146554 145536 144619 143848 143238 142786 142479 142294 142206 14219 14053 136271 129086 119133 106904 93101 785126 639212 500304 37415 264943 17523 105978 0567597 0260096 0113266 00978047 0182037 0334471 0525867 0730763 0928452 110343 124538 134887 141261 143878 143203 139868 134586 128081 12103 114023 107534 101911 0973701 0940112 0918292 0907367 0905858 0911911 0923503 0938622 095541 0972268 0987918 100143 101223 102004 102489 102699 102674 102462 102115 101686 101221 100761 100339 0999785 0996925 0994871 099361 0993076 099316 0993731 0994651 099578 0996993 0998186 0999273 10002 100092
    Y(t)阶跃数:
    0 00590912 00793344 0108921 0144686 0183027 0222545 026227 0301567 0340049 0377505 0413839 0449027 048308 0516023 0547882 0578674 0608408 0637082 0664687 0691209 0716634 0740949 0764147 0786225 0807189 0825649 0840851 0852565 0860958 0866481 0869756 0871478 0872336 0872954 0873851 0875412 087789 0881402 0885952 0891445 0897718 0904563 0911748 0919044 0926238 0933147 0939625 0945569 0950917 0955644 0959761 0963306 0966333 0968914 0971122 0973033 0974715 0976231 0977633 0978959 098024 0981492 0982725 098394 0985132 0986295 0987417 0988489 0989502 0990447 0991319 0992116 0992836 0993483 0994059 099457 0995023 0995424 0995781 0996101 0996389 0996652 0996894 0997119 0997329 0997528 0997715 0997893 0998061 099822 0998369 0998509 0998638 0998758 0998868 0998968 0999059



    积分限适中时:
    U(t)阶跃数:
    244192 715003 778128 888198 102042 114284 124845 1334 139896 144474 147386 148941 147672 142898 134565 123083 109172 93717 776455 618356 470436 33861 226929 137576 0710003 0261792 000934006 00771805 00321806 0108506 0310302 0541977 0777111 099493 118059 132501 142425 147879 14925 147165 142396 135768 128088 120089 112384 105451 0996192 0950756 0918787 0899794 0892458 0894891 0904882 0920123 0938395 0957713 0976416 0993231 100728 101807 102545 102955 103072 102944 10263 102189 101679 10115 100644 100194 0998209 0995367 0993441 0992388 0992108 0992467 0993308 0994474 0995813 0997192 0998502 0999661 100061 100133 100181 100206 100211 100199 100175 100144 100108 100071 100037 100007 099982 0999636 0999516 0999455
    Y(t)阶跃数:
    0 00590912 00793344 0108921 0144686 0183027 0222545 026227 0301567 0340049 0377505 0413839 044755 0477838 0504466 0527621 054778 0565583 0581732 0596908 061171 0626613 0641952 0657918 0674567 0691839 0709585 0727593 0745616 0763398 0780695 0797292 0813014 0827731 0841364 085388 0865287 087563 0884979 0893423 0901064 0908003 091434 0920168 0925568 0930607 0935341 093981 0944043 0948061 0951872 0955483 0958893 0962103 096511 0967914 0970517 0972921 0975133 0977159 0979012 0980701 0982241 0983644 0984923 0986091 0987162 0988144 098905 0989886 0990661 0991381 099205 0992672 0993252 0993791 0994292 0994756 0995186 0995583 0995949 0996285 0996594 0996877 0997135 0997372 0997587 0997785 0997965 099813 0998281 0998419 0998547 0998664 0998771 0998871 0998963 0999047


    积分限较时:
    U(t)阶跃数:
    244192 579003 422453 273086 140502 0311285 0516072 106929 136234 142551 129994 103238 0670674 0259986 015994 0556627 0905789 119147 140554 154674 161938 163192 159553 15227 142609 131756 120746 110418 101393 0940705 0886467 0851387 0834199 0832578 0843526 0863724 0889843 0918784 0947864 0974927 0998397 101728 10311 103988 104397 104402 104084 10353 102829 102061 101296 100589 0999811 0994962 0991453 0989273 0988315 0988405 0989325 0990843 0992727 0994765 0996779 0998624 10002 100145 100234 100288 10031 100305 100279 100237 100187 100133 10008 100032 0999907 0999588 0999363 0999229 0999179 0999199 0999273 0999386 0999521 0999665 0999804 0999929 100003 100012 100017 100021 100022 100021 100019 100016 100012 100008
    Y(t)阶跃数:
    0 00478515 00499398 00580858 00719652 00911499 0115102 0143185 0174691 0208868 0244955 0282216 0319965 0357592 0394577 04305 0465041 0497978 0529178 0558588 0586214 0612115 0636384 0659133 0680485 0700565 0719487 0737356 0754261 0770276 0785457 079985 0813486 0826389 0838578 0850068 086087 0871001 0880477 0889318 0897547 0905189 0912276 0918837 0924908 0930521 093571 0940509 0944948 0949059 0952868 09564 0959678 0962721 0965549 0968175 0970615 0972881 0974984 0976934 0978741 0980414 098196 0983389 0984707 0985922 0987042 0988073 0989022 0989895 0990699 0991439 0992119 0992746 0993324 0993856 0994346 0994798 0995215 09956 0995955 0996282 0996583 0996861 0997116 0997352 0997568 0997768 0997951 0998119 0998273 0998415 0998545 0998665 0998774 0998875 0998968 0999052


    四 实验分析
    1 离散化系统稳定性前优越周期选取适保证系统稳定性
    2 采样周期T越越接系统真实工作情况控制精度越高时数出T越输出阶跃曲线升越快
    3 工程整定PID参数具较控制效果
    4 选取采样周期样整定PID参数样
    5 积分限选取较会出现稳态偏差积分限选取会出现超调积分限选取适中时达理想控制求
    6 文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于Django的编程学习辅助系统的设计与实现

    基于Django的编程学习辅助系统的设计与实现Design and Implementation of Programming Learning Assistant System Based ...

    11个月前   
    397    0

    自维创新项目-数据库编程实现简单网管

    2018年下半年,我县为教育局组建了智慧教育网络,该网络涉及到教育局及各学校共计118个节点,为了向用户提供更好的人性化服务,我们希望在节点出现障碍时能够及时发现、快速处理,因此,迫切需要一个网...

    4年前   
    914    0

    线性系统的PID控制

    线性系统的PID控制摘要在工业生产控制中,PID控制是最基本控制方式。由于其原理简单,适应性强等优点,在电子计算机高速发展的今天,仍具有相当广泛的应用。本文就PID控制的各个环节的功能作了一些...

    1年前   
    374    0

    PID控制模糊控制模糊PID控制器

    摘 要 交流伺服电机现广泛应用于机械结构的驱动部件和各种数控机床。PID控制是伺服系统中使用最多的控制模式之一。尽管传统的PID控制系统构造简单、运转稳定,但交流伺服电机存在非线性的、强耦合...

    8个月前   
    233    0

    linux编程SHELL编程实验报告

    Linux编程课程设计报告题 目: Linux Shell编程 专 业 学 号 姓 名 ...

    1年前   
    609    0

    计算机控制复习题

    1.      填空题: 1. 通过应用计算机监控技术,可以稳定和优化生产工艺,提高产品质量,还可以降低劳动者的生产强度,并且提高管理水平。1 2. 一般的,一个计算机监控系统可以由计算机...

    11年前   
    11066    0

    基于PID的温度控制系统设计论文

     (20XX届) 毕业设计 题  目:   基于PID的温度控制系统设计  学  院:             专  业:     电气工程及其自动...

    5年前   
    1999    0

    模拟人工阅卷的C语言编程题自动评阅系统的设计与实现

    模拟人工阅卷的C语言编程题自动评阅系统的设计与实现 夏 涛1,彭 巍1 1(北京化工大学 信息科学与技术学院 自动化系,北京 100029) 摘  要:   传统的C语言在线考试系统对...

    13年前   
    13176    0

    linux与windows 编程区别

    linux windows 编程的区别 如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix...

    7年前   
    2605    0

    编程 汇编题目

    一、选择题1. 已知指令CALL DWORD PTR [BX]执行前(SP)=108H, 则该指令执行后SP的内容为 ( )。A. 100H B. 104H C. 0...

    4年前   
    702    0

    软件编程实习总结

    软件编程实习总结  实习时间:3月1日―――5月9日  实习地点:广州xx大学生实训基地  实训目标:  1.通过系统性的实训,熟练掌握java se、java ee知识体系,具备java开发...

    9年前   
    521    0

    Scratch趣味编程

    Scratch趣味编程随着社会信息化程度的不断提高,掌握运用计算机 解决问题的能力显得越来越重要,计算机程序设计是培 养学生运用计算机解决问题能力的重要途径,也是培养 学生计算思维与创新能力的...

    2年前   
    706    1

    编程人员的质量感言

    质  量  感  言   质量是社会生活中最常见的概念,是企业永恒的主题,关系到企业的生存与发展。做为加工中心的一名编程人员,深知这个岗位的重要性,图纸一但输入错误会对公司造成很大的损失,...

    12年前   
    12714    0

    网络编程实习报告

    网络编程实习报告  [实习目的]   通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,并为自己能顺利与社会环境接轨做准备。[实习任务]Linux下网络服务器开发(基于C语言);本文总...

    9年前   
    522    0

    CMM实用编程技术

    CMM实用编程技术   1. 若图面各视图上均有尺寸需编程测量时,最好在每个视图上标示出坐标系,以利于判断工件在机台所处的位置   2. 在建立工件坐标系时,若无特别说明,工件坐标系应...

    9年前   
    7731    0

    《Java趣味编程100例》

    第1章 变幻多姿的图表图表简洁直观,在各种场合得到广泛应用,给人以很强的视觉冲击,经常让人难以忘怀。我们的程序中如果能够灵活地应用图表,一定能给我们的程序增色不少。本章将带你进入变换多姿的图...

    2年前   
    815    0

    数控编程说课

    《数控加工技术》既是数控技术专业基于工作过程系统化设计的专业核心课程,又是数控工艺员,数控程序员,数控机床操作工职业资格考试的必修课程.下面我从课程设置,教学内容,教学设计,教学组织与实施,特色...

    6年前   
    14071    0

    数控编程实习报告

    数控编程实习报告  随着制造业的发展,机床是制造业的主要生产设备其发展也是日新月异。社会的进步,人们对各类产品的要求也越来越高,像汽车这样大批量的产品,也要求个性化。因此不能采用传统化的刚性生...

    10年前   
    584    0

    SimplIQ编程笔记

    编程软件手册SimplIQ驱动描述 SimplIQ驱动器是复杂的、面向网络的、单轴数字驱动器,特色:1. 先进的控制算法,包括高阶过滤器和增益调度2. 一个复杂的参考生成算法, 其中包括绝对...

    3年前   
    627    0

    编程模拟练习

    模拟练习 一、选择题  1、传输用的基带信号主要要求: A、原始消息代码必须编成适合于传输用的码型;  B、电波形应适合于基带系统的传输。 C、设备简单可靠。 D、A和B答案...

    10年前   
    7827    0

    文档贡献者

    文***享

    贡献于2020-12-08

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档