1、工业系统驱动与控制综合设计题题目:在某工业系统中,需要一个由计算机精确控制的施力装置,用来对某系统进行力加载试验,请设计一个能够精确控制输出力为180公斤的工业控制系统。请结合本门课所学知识,设计上述控制系统。附录:传感器型号为XYL-1,指标如下:量程:0200kg 工作电压为10V,输出为 020mV 传感器是线性的电压/力转换器:输入 010V,输出0200kg,满足线性关系。具体要求:画出系统组成框图,并注明各个环节的输入和输出信号的形式;(30分)简单描述系统的工作原理或过程;(15)列出系统及调试所用的仪器设备和主要器件;(10)画出软件流程框图;(15)改写CONTOL_D.C程
2、序,实现控制;(将本课程所用采集卡的位数改为 10位,选用13路AD采集通道,2路DA控制输出通道) 。 (30)【注意事项】将作业完成在A4纸上,手写或者打印均可,请装订后上交,封面写明学院、班级、学号、姓名,作业名称;请各班学委收齐于结课后两周内交给各任课教师; 请勿相互抄袭,否则计0分。期末作业工业系统驱动与控制设计题一、系统总体框图bbKD de/dtKI KP eD/A 电压/力转换器XYL-1ery-u aa采集卡实际输出F放大器A/D工控机偏差信号 e 数字量 期望量 r 数字量 被控量 F 模拟量控制信号 u 数字量 反馈信号 y 数字量 输出信号 aa 模拟量 中间信号 bb
3、 模拟量 二、工作原理和工作过程1) 要利用到电压/力转换器将 9V 的电压转换为 180kg 的力,令期望量 r 的为(E64) H,即可最终得到 180kg 的力。在转换过程中可以采用闭环 PID 控制方式,先由期望量与实际的反馈信号相减的到偏差信号,偏差信号经工控机计算处理后得到控制信号。在合适的 PID参数下,由控制信号可以快速输出 180kg 的力。2) 工控机部分,主要进行 PID 控制,令期望量 r 为 9V 对应的数字量(E64) H,与即时的反馈信号 y 相减得到偏差信号 e,对 e 进行比例运算,积分运算和微分运算并相加得到控制信号 u。该部分所以信号均为数字量。在实际运行
4、中, PID 控制中的三个系数需要不断进行调试才可以得到很快的转换速度。3) 采集卡部分,进行数模转换和模数转换。在工控机部分中,均使用数字量信号;在其他电路中,使用模拟量信号。采集卡部分对两个部分进行互相转换。4) 其他电路为传感器和电压/力转换部分。传感器部分对力进行实时测量,首先通过传感器将 0200kg 转换为 020mV 范围的电压,再通过放大器将 020mV 放大至 010V 之间。电压/力转换部分,将 010V 的电压值转换为 0200kg 的力。三、主要器件和仪器设备示波器 端子板 放大器采集控制卡 直流稳压电源 电压/力转换器工业控制计算机 传感器 XYL-1 四、软件流程框
5、图开始结束计算各变量初值初始化图形方式,绘坐标系检测反馈信号 y(k)计算偏差 e(k)=r-y(k)计算控制信号 u(k)u(k)=KPe(k)+KIe(n) Ts+ KD(e(k)-e(k-1)/Ts计算绝对偏差积分 IAE显示 IAE绘 u(k),e(k),y(k),r 波形延时值 Ts, k=k+1写数据文件A/D输出控制信号 u(k)kp,ki,kd 赋值工业系统NY五、程序重点和修改程序的部分介绍在/* */里边和相关范围,改成了厚黑色主要改变在 control 函数,可是要求参数 180 公斤在 parameter 函数#include #include #include #in
6、clude #include #include #include #include #include #define BASE_ADDRESS 0x220int sum=0; /*定义全局变量并初始化 sum */int r400,y400,yy400;e400,c400,u400;float ext_in1010,w1010,meane10,sigmae10,meanc10,sigmac10;满足结束条件?D/Adouble net,temp,tempee,tempe10,tempc10;int iad,ida;int w_mark,con_mark,flex,curve;int t,sam
7、ple_time,amplitude,init_v;int i,j=1,n,rate_mark;float tf,fai,fre,umin=-2047,umax=2047;float Ke=1.,eta,eta_min,eta_max,atek,Eng;float eta_R,iae;long int randseed=568731L;char *string;char w_filename30;void graph_r(int *t,int *r, int *y, int *e, int *c,int *u)int xmax, ymax, xmin, ymin;float dx, dy, u
8、_max, r_max;int i, j;int xx, yy;int gdrive, gmode;char str30;*c=*c;*t=*t;detectgraph(if (gdrive8) lbyte=Outputdata /*低八位中最后两位不用,则精度为 10 位*/outportb(2*(channel-1)+BASE_ADDRESS+4,lbyte);outportb(2*(channel-1)+BASE_ADDRESS+5,hbyte);return;/* FUNCTION AD(channel,gain,trigger_moder) TYPE int*AD Gain is c
9、an be selected in 0,1,2,4,8;InputData=OInputData/Gain;*/int AD(channel)unsigned short int channel;unsigned short int DRDY;int hbyte,lbyte;outportb(BASE_ADDRESS+10,channel);outportb(BASE_ADDRESS+9,0);outportb(BASE_ADDRESS+11,1);DRDY=1;outportb(BASE_ADDRESS+12,1);while(DRDY!=0)DRDY=inportb(BASE_ADDRES
10、S+5)hbyte=inportb(BASE_ADDRESS+5) lbyte=inportb(BASE_ADDRESS+4)return(hbyte4095)ui=4095; /*限制最大控制电压*/If(ui0)ui=0; /*限制最小控制电压 */ida=ui;DA(2,ida); /*用 2 路 DA 通道*/* show the time */itoa(i,string,10);gotoxy(20,20);cputs(string);void parameter(void)DA(2,0);iae=0;n=400;i=0;iad=0;e0=0;amplitude=9; /*目标为 180kg 时,电压设为 9V*/amplitude=amplitude*4095/10.0;for (i=0; in+1; i+)ri= amplitude;main()int k,m,kkp;FILE *fpp;DA(2,0); delay(1000);clrscr();parameter();sample_time=10;for(i=0;in;i+)control();delay(sample_time);DA(2,0); create_datafile();graph_r(r,r,y,e,c,u);getch();delay(100);closegraph();return;