华科转速测量和工作台综合测控实验
8份华中科技大学检测技术实验报告

编者寄语内含8篇华中科技大学检测技术实验报告,基本涵盖各个实验。
其中最后一篇含有书上的各种设计性实验,可供大家参考。
华科的孩子,没事偷着乐吧。
电气学科大类《信号与控制综合实验》实验报告(基本实验一:检测技术基本实验)姓名学号专业班号指导教师日期实验成绩评阅人实验二十二差动变压器的标定一、实验目的通过实验学习差动变压测试系统的组成和标定方法。
二、实验原理差动变压器由衔铁、初级线圈、次级线圈和线圈骨架等组成。
初级线圈作为差动变压器激励用,相当于变压器的原边;次级线圈由两个结构尺寸和参数相同的相同线圈反相串接而成,相当于变压器的副边。
差动变压器是开磁路,工作是建立在互感基础上。
由于零残电压的存在会造成差动变压器零点附近的不灵敏区,电压经过放大器会使放大器末级趋向饱和,影响电路正常关系,因此必须采用适当的方法进行补偿。
零残电压中主要包含两种波形成份:1、基波分量:这是由于差动变压器两个次级绕组因材料或工艺差异造成等效电路参数(M、L、R)不同,线圈中的铜损电阻及导磁材料的铁损,线圈中线间电容的存在,都使得激励电流与所产生的磁通不同相。
2、高次谐波:主要是由导磁材料磁化曲线非线性引起,由于磁滞损耗和铁磁饱和的影响,使激励电流与磁通波形不一致,产生了非正弦波(主要是三次谐波)磁通,从而在二次绕组中感应处非正弦波的电动势。
减少零残电压的办法有:1、从设计和工艺制作上尽量保证线路和磁路的对程;2、采用相敏检波电路;3、选用补偿电路。
相敏检波器工作原理:相敏检波电路如图所示,图○1为输入信号端,○2为交流参考电压输入端,○3为输出端。
○4为直流参考电压输入端。
⑤、⑥为整形电路将正弦信号转换成的方波信号,使相敏检波器中的电子开关正常工作。
当○2、○4端输入控制电压信号时,通过差动放大器的作用使D和J处于开关状态,从而把○1端输入的正弦信号转换成半波整流信号。
相敏检波器原理图三、实验所需部件差动变压器、音频振荡器、电桥、差动放大器、移相器、相敏检波器、低通滤波器、电压表、示波器、测微仪四、实验步骤(一)了解相敏检波器工作原理1.调节音频振荡器输出频率为5KHZ,输出幅值2V,将音频振荡器00端接相敏检波器的输入端①,相敏检波器的输出端③与低通滤波器的输入端连接,低通滤波器的输出端接数字电压表2V。
(数控加工)华中数控综合试验台实验指导书精编

(数控加工)华中数控综合试验台实验指导书创新和选作实验二数控系统的连接和调试实验方案设计2学时,实验方案实施2学时。
壹、实验设计参考目标1.熟悉数控系统综合实验台各个组成部件的接口。
2.能读懂电气原理图,通过电气原理图能独立的进行数控系统各部件之间的互连。
3.掌握数控系统的调试及运行方法。
二、实验设计参考原理利用数控系统综合实验台,设计壹套数控系统,其中包括数控装置,变频器和三相异步电机构成的主轴驱动系统,交流伺服和交流伺服电机构成的进给伺服驱动系统,步进电机驱动器和步进电机构成的进给伺服驱动系统。
该数控系统可实现主轴驱动系统的速度控制,进给伺服驱动系统的开环、半闭环控制。
数控系统各组成部分电气原理图见图2-1~图2-11。
1.电源部分2.继电器和输入输出开关量3.数控装置和手摇和光栅尺的连接5.数控装置和步进驱动器连接6.数控装置和交流伺服连接7.数控系统刀架电机的连接三、实验设备、仪器、工具或材料1.数控系统综合实验台壹套2.专用连接线壹套3.万用表壹个4.工具壹套四、实验主要内容设计(壹)数控系统连接内容1.电源回路连接1)根据图2-1连接数控系统电源回路,接完线后仔细复查,确保接线正确。
2)断开所有空开,接入三相AC380V电源,用万用表测量QF1进线端是否有380V电压。
3)合上QF1,测量TC1的初级线圈、次级线圈和QF2的进线端电压,测量整流电路输出端的电压应为+35V左右。
4)合上QF2,测量QF2输出端和TC2初级线圈、次级线圈电压。
5)合上QF4,这时开关电源VC1的指示灯亮,测量开关电源VC1的输出电压应为+24V。
6)断开所有的空开,断开380V电源。
2.数控系统继电器和输入输出开关量连接内容1)根据图2-2、2-3连接数控系统的继电器和接触器。
2)根据图2-4连接数控系统的输入开关接口。
3)根据图2-5连接数控系统的输出开关接口。
3.数控装置和手摇连接内容1)根据图2-6连接数控装置和手摇。
光电转速传感器的转速测量实验

光电转速传感器的转速测量实验一、实验原理光电转速传感器是一种基于光电效应的传感器,它通过检测旋转物体上的标记或孔洞来测量转速。
当旋转物体上的标记经过传感器的光路时,会遮挡或透过光线,从而使传感器输出的电信号发生变化。
通过对这些电信号的处理和分析,可以计算出旋转物体的转速。
光电转速传感器通常由光源、光学透镜、光电探测器和信号处理电路等部分组成。
光源发出的光线经过光学透镜聚焦后照射到旋转物体上,当旋转物体上的标记经过光路时,光电探测器接收到的光强会发生变化,产生相应的电信号。
信号处理电路对这些电信号进行放大、滤波和整形等处理,最终输出与转速成正比的脉冲信号。
二、实验设备1、光电转速传感器:选择合适的光电转速传感器,其性能参数如测量范围、精度、响应时间等应满足实验要求。
2、旋转平台:用于安装被测旋转物体,并提供稳定的旋转运动。
3、信号调理器:用于对传感器输出的电信号进行调理和放大,以便后续的数据采集和处理。
4、数据采集卡:将调理后的电信号转换为数字信号,并传输到计算机进行处理和分析。
5、计算机:安装有相关的数据采集和分析软件,用于控制实验过程、采集数据以及进行数据处理和分析。
三、实验步骤1、安装和连接设备将光电转速传感器安装在合适的位置,使其光路能够对准旋转物体上的标记。
将传感器的输出端连接到信号调理器的输入端,将信号调理器的输出端连接到数据采集卡的输入端。
将数据采集卡插入计算机的 PCI 插槽,并安装相应的驱动程序和软件。
2、调整传感器位置和光路调整传感器的位置和角度,使光路能够准确地照射到旋转物体上的标记,并确保光电探测器能够接收到足够强度的光信号。
使用遮光板或其他工具,检查光路的遮挡情况,确保光路畅通无阻。
3、设置实验参数在计算机上打开数据采集软件,设置采样频率、通道选择、触发方式等参数。
根据旋转物体的转速范围和测量精度要求,合理设置采样频率,以保证能够采集到足够数量的有效数据。
4、启动旋转平台打开旋转平台的电源,调整转速到预定值。
电机转速测量设计实验

电机转速测量设计实验
孙桂荣;班莹;刘鸣
【期刊名称】《实验室科学》
【年(卷),期】2005(000)004
【摘要】在测控电路实验中,对小电机转速的测量,可以用简单的光电转换方式来实现.它涉及到光电转换、整形、倍频、计数、译码、显示,以及计数、显示之间的时序关系的控制等多种电路,本文是结合学生设计型实验,给出局部的设计原理及电路.【总页数】4页(P50-53)
【作者】孙桂荣;班莹;刘鸣
【作者单位】天津大学精仪学院传感技术与测控电学实验室,300072;天津大学精仪学院传感技术与测控电学实验室,300072;天津大学精仪学院传感技术与测控电学实验室,300072
【正文语种】中文
【中图分类】TM3
【相关文献】
1.基于DSP的电机转速测量实验 [J], 姚若河;吴为敬;朱建培
2.直流电机转速测量实验的改进 [J], 吕治忠
3.新法直流电机转速测量仪的设计——基于2017年全国大学生电子设计竞赛作品[J], 邓云;李显圣;卢善勇;;;
4.基于STM32单片机的电机转速测量仪设计 [J], 史萍;张瑾
5.自动化单片机系统中的电机转速测量电路设计 [J], 陈见辉;张海霞
因版权原因,仅展示原文概要,查看原文内容请购买。
【实验报告】华科《自动控制理论》实验报告模版

【实验报告】华科《自动控制理论》实验报告模版声明:华科《自动控制理论》实验报告模版,仅做参考学习之用。
电气学科大类xxxx 级《信号与控制综合实验》课程实验报告(基本实验:自动控制理论基本实验)姓名学号专业班号同组者学号专业班号指导教师日期2011.12.26实验成绩评阅人实验评分表基本实验实验编号名称/内容(此列由学生自己填写)实验分值评分11、二阶系统的模拟与动态性能研究1012、二阶系统的稳态性能研究10设计性实验实验名称/内容实验分值评分14、线性控制系统的设计与校正2016、控制系统极点的任意配置20创新性实验实验名称/内容实验分值评分32、典型环节和控制系统频率特性的测量及基于Matlab的分析15教师评价意见总分目录实验报告正文 (1)实验十一二阶系统的模拟与动态性能研究 (4)实验十二二阶系统的稳态性能研究 (13)实验十四线性控制系统的设计与校正 (27)实验十六控制系统极点的任意配置 (32)实验三十二典型环节和控制系统频率特性的测量及基于Matlab的分析.. 42 实验心得与自我评价 (50)参考文献 (51)实验十一二阶系统的模拟与动态性能研究一、任务与目标1、掌握典型二阶系统动态性能指标的测试方法。
2、通过实验和理论分析计算比较,研究二阶系统的参数对其动态性能的影响。
二、总体方案设计典型二阶系统的方框图如图11-1:图11-1.典型二阶振荡环节的方框图其闭环传递函数为:22222)(1)()(nn ns s ks Ts K s G s G s ωξωωφ++=++=+=式中TK KTn ==ωξ;21ζ为系统的阻尼比,n ω为系统的无阻尼自然频率。
对于不同的系统,ζ和所包含的内容也是不同的。
调节系统的开环增益K ,或时间常数T 可使系统的阻尼比分别为:1,1,1<=>ξξξ三种。
实验中能观测对应于这三种情况下的系统阶跃响应曲线是完全不同的。
二阶系统可用图11-2所示的模拟电路图来模拟:图11-2,.二阶系统模拟电路图实验中为了计算方便起见,将运放A3处的20K 电阻换成了10K 的电阻,A4中也只保留了R2。
华科电机实验报告

华科电机实验报告实验报告:华科电机实验实验目的:测试华科电机的性能指标,包括功率、效率和转速。
实验原理:华科电机是一种直流无刷电机,可以通过改变电源电压来控制电机的转速和输出功率。
电机的效率可以通过输出功率和输入功率的比值来计算。
实验步骤:1. 将华科电机连接到电源,并将电源电压调至适当的值。
2. 使用转速计测量电机的转速。
3. 使用功率计测量电机的输入功率。
4. 使用电能计测量电机的输出功率。
5. 根据测量结果计算电机的效率。
实验结果:根据实验步骤所述,我们进行了测量和计算,得到了以下结果:- 电机转速:1000 rpm- 输入功率:2 W- 输出功率:1.8 W根据上述数据,我们可以计算出电机的效率:效率= 输出功率/ 输入功率= 1.8 W / 2 W ≈0.9 或90%实验讨论:根据上述结果,我们可以得出结论:华科电机在测试条件下的效率为90%左右,这是一个比较高的效率值。
这说明华科电机具有良好的性能,能够有效地转换输入的电能为机械能。
不过需要注意的是,实验结果可能会受到一些因素的影响,比如电源电压的稳定性和测量仪器的误差等。
为了获得更加准确的结果,我们可以进行多次实验并取平均值。
此外,根据实验结果还可以进一步探讨华科电机的性能优化方法。
通过改变电源电压和负载等参数,我们可以对电机进行调节,以达到最佳的效率和转速。
比如,可以通过增加电源电压来提高电机的转速,但过高的电压可能导致电机的温度过高,进而影响电机的寿命。
因此,在实际应用中需要综合考虑各种因素来进行优化调节。
结论:本次实验测试了华科电机的性能指标,包括功率、效率和转速。
通过测量和计算,得出了华科电机在测试条件下的效率约为90%。
实验结果表明华科电机具有良好的性能,可以有效地转换输入的电能为机械能。
此外,还可以通过调节电源电压和负载等参数来进一步优化电机的性能。
总体而言,本次实验取得了比较满意的结果,并对我们深入了解华科电机的特性和性能有一定帮助。
转速测量设计实验报告(3篇)
第1篇一、实验目的1. 了解转速测量的基本原理和方法。
2. 掌握转速测量仪器的使用方法。
3. 通过实验验证转速测量原理的正确性。
4. 熟悉转速测量系统的设计过程。
二、实验原理转速测量是指测量旋转物体的旋转速度,通常以每分钟转数(r/min)表示。
转速测量方法主要有以下几种:1. 机械式测量:通过齿轮、皮带等传动装置将旋转物体的转速转化为线性运动,进而测量转速。
2. 电磁式测量:利用电磁感应原理,将旋转物体的转速转化为电信号,再通过测量电信号频率来计算转速。
3. 光电式测量:利用光电传感器检测旋转物体的边缘或标记,通过测量光电信号的频率来计算转速。
本实验采用光电式测量方法,通过光电传感器检测旋转物体的边缘或标记,测量光电信号的频率,从而计算转速。
三、实验设备1. 光电传感器:用于检测旋转物体的边缘或标记。
2. 旋转物体:作为转速测量的对象。
3. 数据采集卡:用于采集光电传感器的信号。
4. 计算机:用于处理数据,计算转速。
5. 转速测量系统软件:用于显示转速数据、绘制转速曲线等。
四、实验步骤1. 连接实验设备:将光电传感器安装在旋转物体上,确保传感器能够准确检测到旋转物体的边缘或标记。
将数据采集卡与计算机连接,并将光电传感器的信号线连接到数据采集卡的输入端口。
2. 设置实验参数:打开转速测量系统软件,设置实验参数,如采样频率、转速范围等。
3. 进行实验:启动旋转物体,启动数据采集卡,记录光电传感器的信号。
4. 数据处理:将采集到的信号数据导入转速测量系统软件,计算转速。
5. 分析结果:根据实验数据,分析转速测量原理的正确性,评估转速测量系统的性能。
五、实验结果与分析1. 实验结果:通过实验,成功测量了旋转物体的转速,转速数据与实际转速基本一致。
2. 结果分析:(1)实验结果表明,光电式转速测量方法能够准确测量旋转物体的转速。
(2)转速测量系统的性能取决于光电传感器的精度、数据采集卡的采样频率以及数据处理算法。
转速测量设计实验报告
转速测量设计实验报告1. 实验目的本实验旨在设计并实现一种测量转速的方法,并验证其准确性和稳定性。
2. 实验原理2.1 传感器原理转速测量一般需要通过传感器来实现。
常见的转速传感器有光电传感器、霍尔传感器和接触式触发器等。
本实验采用光电传感器作为转速测量的感知器件。
光电传感器通过发射红外光束,并根据反射光的变化来测量目标物体的运动速度。
2.2 转速计算方法根据光电传感器感知到的目标物体的运动情况,我们可以计算出目标物体的转速。
转速的计算方法如下:速度= \frac {2\pi r}{T}其中,速度为目标物体的线速度,r为目标物体的半径,T为目标物体绕轴旋转一周所需的时间。
3. 实验设计本实验的设计思路是在目标物体上固定一块白色圆片,并将光电传感器放在圆片的旁边。
光电传感器产生的红外光束会照射到圆片上,并由圆片反射回光电传感器。
当目标物体旋转时,圆片运动会导致光电传感器感受到反射光的变化。
我们通过记录光电传感器输出的电信号的变化来计算目标物体的转速。
实验所需材料如下:- 光电传感器- 白色圆片- 电路连接线- 示波器(或数字多用表)实验步骤如下:1. 将光电传感器固定在实验平台上,使其能够与目标物体保持一定的距离。
2. 将白色圆片固定在目标物体上,并使其与光电传感器处于同一平面。
3. 连接光电传感器的输出端和示波器(或数字多用表)。
4. 打开示波器(或数字多用表)并设置合适的测量范围。
5. 启动目标物体的旋转,记录光电传感器输出的电信号的变化。
6. 根据记录到的数据,计算目标物体的转速。
4. 实验结果与分析在实验中,我们通过示波器记录了光电传感器输出的电信号的变化,并根据这些数据计算了目标物体的转速。
实验结果显示,我们所设计的转速测量方法具有较高的准确性和稳定性。
在实际使用中,我们可以根据实验结果进行进一步优化和改进。
例如,可以根据目标物体的特性选择合适的感知器件,调整光电传感器和目标物体之间的距离,以及对于输出信号的处理等等。
华中数控综合试验台实验指导书
华中数控综合试验台实验指导书华中数控综合试验台实验指导书随着计算机技术的不断进步和应用,数控机床已经成为现代制造业生产加工的重要工具,涵盖了机械、电气、软件以及自动化等众多领域的知识。
为了提高学生的实践能力,培养数控机床操作和编程技术人才,华中科技大学实验室建造了数控综合试验台,并编写了《华中数控综合试验台实验指导书》。
华中数控综合试验台实验指导书是华中科技大学人文与传媒学院出版的指导书。
本书主要介绍了华中数控综合试验台的操作及编程方法,对于提高学生的操作技能起到了重要的作用。
下面我们简要介绍一下该指导书的内容:第一章绪论第一章主要介绍了数控综合试验台实验的意义、目的、基本要求、实验过程、注意事项和评分标准等内容。
针对实验的目的和要求,指导书提出学生应该以掌握数控机床基本操作、了解加工工艺和程序编写技术、掌握机床保养和维护技术等方面为主要目标。
第二章单行程序加工实验第二章主要介绍了数控机床的单行程序加工实验操作流程、加工参数以及程序编写方法等。
指导书要求学生根据数控机床的型号和加工要求,编写单行程序,完成预编程数控加工。
第三章自动换刀程序加工实验第三章主要介绍了数控机床的自动换刀程序加工实验操作流程、加工参数以及程序编写方法等。
指导书要求学生掌握数控机床的自动换刀技术,了解数控机床刀具的选用、更换和调整等技术,完成自动换刀加工实验。
第四章面铣、钻孔程序加工实验第四章主要介绍了数控机床的面铣和钻孔程序加工实验操作流程、加工参数以及程序编写方法等。
指导书要求学生掌握数控机床铣削和钻削技术,了解数控机床的铣孔、镗孔和插孔等技术,完成面铣、钻孔程序加工实验。
第五章手动编程实验第五章主要介绍了手动编程实验操作流程、实验要求以及编程方法等。
指导书要求学生使用加工技术、工艺图和典型工件相结合的方法,手动编写程序并完成加工,体验手动编程的程序工艺过程。
第六章系统管理实验第六章主要介绍了数控系统的管理操作流程、密码设置和数据传输等。
华中科技大学_测控技术与系统实验报告
2013-2014学年度第二学期测控技术与系统实验报告——电压校准、热电阻测温院系:自动化学院专业班级:测控1102班指导老师:黄为实验成绩:实验一电压测量基本实验一、实验目的熟悉CKXT-I 的系统开发方法;熟悉Keil C 软件开发环境;熟悉CKXT-I型综合实验仪的电压测量的基本功能。
二、基本原理利用综合实验仪的模拟通道可实现高精度的电压测量。
综合实验仪采用的100ksps12位分辨率的逐次逼近寄存器型ADC,这种类型的A/D 转换器由一个比较器和DA 转换器通过逐次比较逻辑构成,从MSB 开始,顺序地对每一位将输入电压与置DA 转换器输出进行比较,经n 次比较而输出数字值。
其电路规模属于中等。
其优点是速度较高、功耗低。
综合实验仪的部芯片C8051F005 包括一个逐次逼近寄存器型AD。
其基本模拟输入转换通道的结构如图 1.1 所示。
模拟通道包括多路模拟开关(AMUX),可编程增益放大器(PGA),12位逐次逼近型A/D 转换器等。
图1.1 ADC 接口三、实验容及设备实验容:取一直流电压(如CSY-3000 应变电桥实验模块的输出),接入CKXT-I 实验仪的主模拟输入通道,编程实现该直流电压的测量,获得测量数据并进行分析。
实验设备:CSY-3000 实验仪;CKXT-I 型综合实验仪;信号源;万用表。
四、实验步骤1、在CSY-3000 实验仪上找出电压输出接口,用导线分别将其接入CKXT-I 型综合实验仪的电压采集端口AD0 和AGND 端口。
2、在本次试验中,为了获得较高精度,采用电压采集输入端口AD0采集模拟电压信号。
3、在CSY-3000 实验仪上找出电压表测量输入接口,将CSY-3000 实验仪上测得的电压值作为参考标准电压,将CKXT-I 型综合实验仪作为待标定的电压。
分压网络与接线图说明:1、CKXT-I 型综合实验仪按要求接线,其中AD0端口用于采集模拟电压信号。
2、分压网络a端接CSY-3000实验仪上2V标准输出电压,所有接地端接到一起。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
转速测量及工作台实验班级:人员:实验项目:工作台实验、转速测量实验时间:2012年6月目录1、工作台实验1.1实验目的--------------------------------------------------------------------------- 3 1.2实验原理--------------------------------------------------------------------------- 3 1.3实验代码解析--------------------------------------------------------------------- 5 1.4实验结果展示及分析------------------------------------------------------------14 1.5实验小结及感想------------------------------------------------------------------152、转子实验台——转速测量实验2.1 实验目的----------------------------------------------------------------------------16 2.2 实验原理----------------------------------------------------------------------------16 2.3 实验内容及设计过程-------------------------------------------------------------16 2.4 实验代码解析----------------------------------------------------------------------20 2.5 实验结果展示及分析-------------------------------------------------------------28 2.6 实验小结及感想-------------------------------------------------------------------311.1实验目的实验平台对软件的要求,需要安装Matlab7.0.4 version和Microsoft Visual c++6.0 。
MATLAB是目前在国际上被广泛接受和使用的科学与工程计算软件。
虽然Cleve Moler教授开发它的初衷是为了更简单、更快捷地解决矩阵运算,但MATLAB现在的发展已经使其成为一种集数值运算、符号运算、数据可视化、图形界面设计、程序设计、仿真等多种功能于一体的集成软件。
通过用matlab对实验工作台进行快进、工进、快退的控制,学习matlab在控制方面的知识。
学习matlab种simulink函数的运用。
2.2 实验原理运用到的主要simulink模块的介绍。
驱动电机运动的运动指令代码都是在VC下面编写的,实验之前已经有了用VC做了一些s-function并生成*.dll文件(使用s-function example模板编写好c 文件之后再用mex将其编译成dll文件),包括InitOpenIPpos.dll,GetCurPos.dll,SetPara.dll ,下面依次对部分s-function作出简要说明。
InitOpenIPpos.dll初始化运动控制卡,其功能主要是使伺服上电并且设定电机的一些参数,如:运动模式(速度,位置,模式等),最大速度值,最大加速度值等等。
以上这些都已经在InitOpenIP.c文件里面设定好了,可以打开这个文件查看。
比如,我们根据实际情况设定电机的运动模式为位置模式(zl_set_prfl_ pos (0))。
GetCurPos.dll读取当前轴的位置。
如果某个simulink模块调用了GetCurPos.dll文件后,在设置参数时需要注意,parameters项填写“1”是代表当前读取的是1号轴即电机轴的位置,如果填写的是“3”则是代表立摆的转动轴,此时读出的是倒立摆的摆角位移。
SetPara.dll设置各种不同运动模式时的运动参数。
(1)仅实现手动的快进及快退功能。
要实现快进、工进、快退功能,首先可以从较简单的功能实现开始,因此我们选取了最先实现快进、快退功能来开始试验,下图是实现该功能的原理图:手动切换开关可实现工作台的快进、快退。
(2)实现快进、工进及手动的快退功能。
执行程序后,工作台开始自动快进,到达预定位置后减速工进,随后手动换开关Manual Switch,实现快退。
(3)实现自动地快进、工进和快退。
执行程序后,工作台开始自动快进,到达预定位置后减速工进,工进一段时间后达到预定位置,switch自动换向,实现快退。
1.3实验代码解析(1)s-function setpara代码#define S_FUNCTION_NAME SetPara#define S_FUNCTION_LEVEL 2/*定义函数*/#include "simstruc.h"#include "ZLPCIDrv.h"#include "ZLPCI400d.h"#include "PendX.h"/*添加头文件*/#pragma comment(lib, "ZLPCIDrv.lib")#pragma comment(lib, "ZLPCI400d.lib")#pragma warning( disable: 4761 )#pragma warning( disable: 4244 )/*预定义的标识符,指定注释的类型,指定库函数*///--------------------------------------------------------------------------/*====================** S-function methods **====================*/#define ERR_INVALID_PARAM_1 \"Invalid axis number. The first parameter must be \n an unsigned integer number between 1 and 4."#define ERR_INVALID_PARAM_2 \"Invalid number of input ports. The second parameter must be \n an unsigned integer number between 2 and 5."#define AXIS_NUM (ssGetSFcnParam(S, 0))#define NUM_INPUTS (ssGetSFcnParam(S, 1))/*定义输入值*/#define MDL_CHECK_PARAMETERSstatic void mdlCheckParameters(SimStruct *S){uint8_T axis_num;int_T inputs;axis_num = (uint8_T) *(mxGetPr(AXIS_NUM));if( axis_num < 1 || axis_num > 4 ) {ssSetErrorStatus(S, ERR_INV ALID_PARAM_1);return;}/*AXIS_NUMD 的有效范围*/inputs = (int_T) (*(mxGetPr(NUM_INPUTS)));if( inputs < 2 || inputs > 5 ) {ssSetErrorStatus(S, ERR_INV ALID_PARAM_2);return;}/* NUM_INPUTS 的有效范围*/}/* Function: mdlInitializeSizes =============================================== */static void mdlInitializeSizes(SimStruct *S){int i;int_T inputs;ssSetNumSFcnParams(S, 2);if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) {mdlCheckParameters(S);if (ssGetErrorStatus(S) != NULL) {return;}} else {return; /* Simulink will report a parameter mismatch error */}inputs = (int_T) (*(mxGetPr(NUM_INPUTS)));if (!ssSetNumInputPorts(S, inputs)) return;for(i=0; i<inputs; i++) {ssSetInputPortWidth(S, i, 1);ssSetInputPortDirectFeedThrough(S, i, 1);}if (!ssSetNumOutputPorts(S, 1)) return;ssSetOutputPortWidth(S, 0, 1);ssSetNumSampleTimes(S, 1);/* Take care when specifying exception free code - see sfuntmpl_doc.c */ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);}/* Function: mdlInitializeSampleTimes ========================================= * Abstract: Specifiy that we inherit our sample time from the driving block.*/static void mdlInitializeSampleTimes(SimStruct *S){ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);ssSetOffsetTime(S, 0, 0.0);}// Function: mdlOutputs =======================================================static void mdlOutputs(SimStruct *S, int_T tid){InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);real_T *y = ssGetOutputPortRealSignal(S,0);unsigned short axis_status, inputs;unsigned short axis_num;/* set the current axis number as defined by S_function first parameter */axis_num = (uint8_T) *(mxGetPr(AXIS_NUM));inputs = (uint8_T) (*(mxGetPr(NUM_INPUTS)));if(inputs >= 2){zl_set_vel(*uPtrs[0],axis_num-1);zl_set_acc(*uPtrs[1],axis_num-1);}if(inputs >= 3){zl_set_pos((long)*uPtrs[2],axis_num-1);}if(inputs >= 4){zl_set_max_acc(*uPtrs[3],axis_num-1);}if(inputs >= 5){return;}//update card parameterszl_update(axis_num-1);zl_get_status(&axis_status,axis_num-1);//axis_status = 16 & axis_status;//*y = (axis_status ? 1 : 0);*y=axis_status&127;}/* Function: mdlTerminate =====================================================* Abstract:* No termination needed, but we are required to have this routine.*/static void mdlTerminate(SimStruct *S){}#ifdef MA TLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */#include "simulink.c" /* MEX-file interface mechanism */#include "cg_sfun.h" /* Code generation registration function */#endif(2) s-function GetCurPos代码#define S_FUNCTION_NAME GetCurPos#define S_FUNCTION_LEVEL 2/*定义函数*/#include "simstruc.h"#include "ZLPCIDrv.h"#include "ZLPCI400d.h"#include "PendX.h"/*添加头文件*/#pragma comment(lib, "ZLPCIDrv.lib")#pragma comment(lib, "ZLPCI400d.lib")#pragma warning( disable: 4761 )#pragma warning( disable: 4244 )/*预定义的标识符,指定注释的类型,指定库函数*///--------------------------------------------------------------------------#define ERR_INVALID_PARAM \"Invalid axis number. The parameter must be \n an unsigned integer number between 1 and 4."/* total number of block parameters */enum {PARAM = 0, NUM_PARAMS};#define AXIS_NUM (ssGetSFcnParam(S, 0))#define MDL_CHECK_PARAMETERSstatic void mdlCheckParameters(SimStruct *S){uint8_T axis_num;axis_num = (uint8_T) *(mxGetPr(AXIS_NUM));if( axis_num < 1 || axis_num > 4 ) {ssSetErrorStatus(S, ERR_INV ALID_PARAM);return;}/* Function: mdlInitializeSizes =============================================== */static void mdlInitializeSizes(SimStruct *S){ssSetNumSFcnParams(S, 1);if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) {mdlCheckParameters(S);if (ssGetErrorStatus(S) != NULL) {return;}} else {return; /* Simulink will report a parameter mismatch error */}if (!ssSetNumInputPorts(S, 0)) return;if (!ssSetNumOutputPorts(S,1)) return;ssSetOutputPortWidth(S, 0, 1);ssSetNumSampleTimes(S, 1);/* Take care when specifying exception free code - see sfuntmpl_doc.c */ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);}/* Function: mdlInitializeSampleTimes ========================================= * Abstract: Specifiy that we inherit our sample time from the driving block.*/static void mdlInitializeSampleTimes(SimStruct *S){ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME);ssSetOffsetTime(S, 0, 0.0);}// Function: mdlOutputs =======================================================static void mdlOutputs(SimStruct *S, int_T tid){real_T *y = ssGetOutputPortRealSignal(S,0);uint8_T axis_num;long data;/* set the current axis number as defined by S_function first parameter */axis_num = (uint8_T) *(mxGetPr(AXIS_NUM));/* get position of axis that is defined by S-func parameter */zl_get_actl_pos(&data,axis_num-1);*y = data;}/* Function: mdlTerminate =====================================================* Abstract:* No termination needed, but we are required to have this routine.*/static void mdlTerminate(SimStruct *S){}#ifdef MA TLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */#include "simulink.c" /* MEX-file interface mechanism */#else#include "cg_sfun.h" /* Code generation registration function */#endifs-fuction函数InitOpenIPpos#define S_FUNCTION_NAME InitOpenIPpos#define S_FUNCTION_LEVEL 2/*定义函数*#include "simstruc.h"#include "ZLPCIDrv.h"#include "ZLPCI400d.h"#include "PendX.h"/*添加头文件*/#pragma comment(lib, "ZLPCIDrv.lib")#pragma comment(lib, "ZLPCI400d.lib")#pragma warning( disable: 4761 )#pragma warning( disable: 4244 )/*预定义的标识符,指定注释的类型,指定库函数*//* Function: mdlInitializeSizes =============================================== */static void mdlInitializeSizes(SimStruct *S){ssSetNumSFcnParams(S, 0);if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {return; /* Parameter mismatch will be reported by Simulink */}if (!ssSetNumInputPorts(S, 1)) return;ssSetInputPortWidth(S, 0, 1);ssSetInputPortDirectFeedThrough(S, 0, 1);if (!ssSetNumOutputPorts(S,0)) return;ssSetNumSampleTimes(S, 1);/* Take care when specifying exception free code - see sfuntmpl_doc.c */ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);}/* Function: mdlInitializeSampleTimes ========================================= * Abstract: Specifiy that we inherit our sample time from the driving block.*/static void mdlInitializeSampleTimes(SimStruct *S){ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);ssSetOffsetTime(S, 0, 0.0);}#define MDL_START /* Change to #undef to remove function */#if defined(MDL_START)/* Function: mdlStart =======================================================* Abstract:* This function is called once at start of model execution. If you* have states that should be initialized once, this is the place* to do it. */static void mdlStart(SimStruct *S){InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);//performing all necessary initializationsZLLoadDriver();zl_board_reset();Sleep(200);zl_fifo_reset();Sleep(200);zl_set_smpl_time(400);zl_set_kp(0.1,0);zl_set_ki(0.0,0);zl_set_kd(0.0,0);zl_set_kvff(0,0);zl_pid_update(1);zl_set_prfl_pos(0);zl_set_max_acc(7500000,0);zl_set_max_vel(500000,0);zl_set_pos_lm(900000000,0);zl_set_neg_lm(-900000000,0);zl_set_pos_err_lm(32767,0);zl_set_vel(0, 0);zl_set_acc (5000000, 0);zl_update(0);zl_axis_on(0);zl_motor_enable(1);}#endif /* MDL_START */// Function: mdlOuts =======================================================static void mdlOutputs(SimStruct *S, int_T tid)}/* Function: mdlTerminate =====================================================* Abstract:* No termination needed, but we are required to have this routine.*/static void mdlTerminate(SimStruct *S){zl_motor_enable(0);zl_axis_off(0);ZLUnloadDriver();}#ifdef MA TLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */#include "simulink.c" /* MEX-file interface mechanism */#else#include "cg_sfun.h" /* Code generation registration function */#endif1.4实验结果展示及分析快进速度100000,工进速度30000,switch的切换由完成,切换为位移300000(如下图1、2)图1 图2由工进到快退由有图switch2及控制,(如下图1、2)当位移大于400000时由工进切换为快退,快退速度为200000,方向由下图3控制图1 图2 图3因此总体控制流程图为:1.5实验小结及感想通过工作台控制实验是一项比较综合的控制实验,包括快进,工进,快退的控制,通过实验了解了matlab的基本用法和simulink函数的用法,学到了知识。