




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、晋城职业技术学院晋城职业技术学院 Graduation Design设计项目:姓 名: 专 业: 班 级: 11机制二 学 号: 指导教师: 职 称: 完成时间: 年 月 年 月年 月 日毕业设计(创作)作品简介(电子照片)作者基本信息姓 名:性 别:男出生日期:政治面貌:团员民 族:汉籍 贯:山西手 机:E-mail:QQ:实习单位及岗位:班级:同组人作 品 图 片 (作品名称)指导教师行业指导教师作 品 介 绍机械与电子工程系毕业设计开题报告书 专业 学生姓名班级学号设计项目基于PLC的直流电机调速系统设计设计准备情况思路和方法拟重点解决的问题计划进度参考文献毕业设计(论文)修改说明指导教
2、师意见行业指导教师: 单位: 职称: 联系电话: 年 月 日 校内指导教师: 职称: 年 月 日 目录 TOC o 1-3 f u 摘 要 PAGEREF _Toc364259963 h 0ABSTRACT PAGEREF _Toc364259964 h 0第 一 章 引 言 PAGEREF _Toc364259965 h 11.1 选题背景及论文主要内容 PAGEREF _Toc364259966 h 11.1.1 选题背景 PAGEREF _Toc364259967 h 1第 二 章 现代PLC控制技术 PAGEREF _Toc364259968 h 32.1 PLC的组成和分类 PAGE
3、REF _Toc364259969 h 32.2 PLC的工作原理 PAGEREF _Toc364259970 h 32.3 PLC电机控制系统设计的基本内容和步骤 PAGEREF _Toc364259971 h 42.3.1 PLC的硬件设计的一般步骤 PAGEREF _Toc364259972 h 52.3.2 PLC软件设计的一般步骤 PAGEREF _Toc364259973 h 62.3.3 设计中用到的模块 PAGEREF _Toc364259974 h 6第三章 基于PLC的直流电机调速系统设计 PAGEREF _Toc364259975 h 93.1 设计任务 PAGEREF
4、_Toc364259976 h 93.2 脉宽调制系统特有部分设计 PAGEREF _Toc364259977 h 93.3 PLC硬件设计 PAGEREF _Toc364259978 h 103.4 PLC 软件设计 PAGEREF _Toc364259979 h 12参考文献(主要及公开发表的文献) PAGEREF _Toc364259980 h 14致谢 PAGEREF _Toc364259981 h 16个人简况及联系方式 PAGEREF _Toc364259982 h 17摘 要 设计选用日本三菱公司FX2N-16MT基本单元和FX2N-4AD,FX2N-2DA 模拟量输/输出扩展模
5、块,并利用其功能指令设计的直流脉宽双闭环调速系统,实现了调速过程速度快、精度高,控制系统的参数便于调试和高工作可靠性,通过给定的调速系统硬件配置和梯形图,经模拟调试输出信号验证了各项指标均满足调速系统的要求。关键词:PLC;调速系统;应用ABSTRACT The double closed-loop DC PWM speed system of direct motor uses the FX2N-16MT basic unit of Japanese Mitsubishi company and FX2N-4ADs, FX2N-2DA emulation input/ output expa
6、nding mold , making use of its function instruction. It realizes fast adjust mend of the speed course , high precision, which make it easy to debug control procedure and work reliable, which is a development direction in the industrial control. Hardware disposition and ladder chart are given in this
7、 text. It can be adjusted by emulation and various index signs of output signal all satisfy the requirements of the adjust system.Key words:PLC;Adjusting Speed System;Applicat第 一 章 引 言1.1 选题背景及论文主要内容1.1.1 选题背景在调研中发现,目前山西省各大煤矿的矿井提升机系统的调速方案大多采用继电器接触器控制的转子串电阻调速。该方案耗能大,占地面积大,已不能适应现代矿业发展的需要。因此有必要对其调速方案进行
8、改造。在广泛考察现行的变频调速方案后,本文提升机系统控制单元采用目前工控适用的可编程控制器来控制,具有编程简单和控制可靠性高的优点;电力拖动系统中,选用先进的变频传动装置,运用先进的矢量控制技术,优化了调速系统的性能,这一控制方法目前仍为现代交流调速的重要研究方向之一。采用先进的工业计算机、现场总线和工业自动化技术,按照结构标准化、产品系列化、性能现代化、体积小型化的原则,研制生产适合矿井提升机电控设备是进行技术改造和新建矿井设备选型的理想选择。使用上位机监控系统,采用组态模式,实现良好的人一机对话;实时监控提升机的运行状态,上位机动态模拟显示及故障闭锁;可进行故障报警、数据查询、报表打印;记
9、录提升钩数以及每班、每日、每月、每年的提升量累计;故障声光指示、记忆及部分传感器上位机的紧急处理。为保证提升设备无事故,在提升设备有可能出现故障的各个重要环节上,设置双回路系统,并在系统的各个环节上设有各种检测、控制、自诊断以及记录和保护装置(如负载、速度、加减速、产量、运行时间等记录)。适用、经济、高效、可靠是本文提升机系统设计的追求目标。鉴于以上原因,本文对直流拖动控制系统进行研究,并对系统进行改造和升级。从直流调速系统的动态性能来讲,具有一定得意义。1.3.2 论文的主要内容本文是设计一个基于PLC的控制电路为电流、转速双闭环、主电路为双极性可逆H形直流脉宽调速的可逆直流调速系统。采用专
10、用集成驱动电路,本设计选用汤姆森公司的UAA4002型产品。对直流电机调速系统进行了研究和设计,具体做了以下的工作:1.对双闭环控制的PWM直流调速系统进行了理论研究。2.对现代PLC控制技术进行了研究。3.采用visio 软件对相关电路进行设计、绘制。对调速系统的PLC控制部分进行设计。第 二 章 现代PLC控制技术2.1 PLC的组成和分类 从结构上分,PLC分为固定式和组合式(模块式)两种。固定式PLC包括CPU板、I/0板、显示面板、内存块、电源等,这些元素组合成一个不可拆卸的整体。模块式PLC包括CPU模块、I/O模块、内存、电源模块、地板或机架,这些模块可以按照一定规则组合配置。
11、PLC系统的4个主要的部分说明如下1617: 1.中央处理器(CPU)。它是系统的大脑,不断的采集输入信号,执行用户程序,刷新系统的输出,包括三个子部分: (1)微处理器。它是进行数学和逻辑操作的计算中心。 (2)存储器。CPU中数据和信息存储和获取的地方,保存着系统软件和用户程序。 (3)电源供应。将交流电(AC)转化为直流电(DC)。在这个过程中,电源供应对直流电进行滤波和调节,以确保计算机正常运行。 2.编程器/监视器。编程器/监视器是用来同PLC电路进行通信的设备。手持终端、工业终端和PC都可以作为编程器/监视器。在手持终端,通过小键盘来进行输入,显示设备通常是液晶显示器(LCD)。对
12、于工业终端或PC,需要更复杂的打字型键盘和CRT显示器。 3.I/0模块。输入模块有一些输入端子,由传感器通过这些端子来激活执行继电器、电磁线圈、各种静态开关设备、电机和显示屏。如果需要,可以增加能将I/0模块进行远距离连接的电子系统。PLC控制的实际系统可以距CPU及其I/0模块几百米之远。2.2 PLC的工作原理 用户程序的执行取决于PLC是处于停止模式还是运行模式。当PLC处于运行模式时,CPU执行程序;当PLC处于停LL模式时,CPU不执行程序。 当PLC处于运行模式时,PLC周而复始的执行一系列任务。任务循环执行一次称为一个扫描周期。在一个扫描周期中,PLC将执行部分或全部下列操作1
13、617。(1)读输入 1.数字量输入:在件个扫描周期开始,CPU会读取数字量输入,并将这些值写入过程映像输入寄存器。 2.模拟量输入:除非使能模拟量滤波,否则PLC在扫描周期中不会刷新模拟量输入值。使能了模拟量滤波功能后,PLC会在每一个周期刷新模拟量,执行滤波功能并且在内部存储滤波值。当程序中访问模拟量输入时使用滤波值。 如果没有使能模拟量输入滤波,则当程序访问模拟量输入时,PLC都会直接从扩展模块读取模拟值。 模拟量滤波可以得到稳定的信号。在模拟量输入信号随时间变化缓慢时使用模拟量输入滤波,如果信号变化很快,不应该选用模拟量滤波。 不要对在模拟量字中传递数字信息或报警指示的模块使用模拟量滤
14、波。对于RTD, TC和ASI主站模块,不能使用模拟量滤波。(2)执行逻辑控制程序 在扫描周期的执行程序阶段,CPU从头至尾执行应用程序,在程序或中断服务中,直接I/O指令允许用户对I/O点直接进行存取。 如果在程序中使用了中断,与中断事件相关的中断服务作为程序的一部分被储存。中断程序并不作为正常扫描周期的一部分来执行,而是当中断事件发生时才执行。(3)处理通讯请求 在扫描周期的处理阶段,CPU处理从通讯端口或者智能I/O模块接收到的任何信息。(4)执行CPU自诊断 在扫描周期的处理阶段,PLC检测CPU的操作和扩展模块的状态是否正常。(5)写输出 在每个扫描周期的结尾,CPU把存储在输出映像
15、寄存器中的数据写到数字输出点。模拟量输出直接刷新,与扫描周期无关。2.3 PLC电机控制系统设计的基本内容和步骤PLC电机控制系统设计的一般流程如图3-1所示。 图 3-1 PLC的设计流程图2.3.1 PLC的硬件设计的一般步骤 1.选择适合的PLC机型2176 选择PLC机型应从性能结构、I/O点数、存储容量以及特殊功能等方面来综合衡量。一般来说,机型选择的基本原则应是在功能满足要求的情况下,保证可靠、维护使用方面以及最佳的性能价格比。 2.输入输出的选择 要估算PLC电机控制系统所需要的I/O点数。采用晶闸管整流装置对直流电机供电的直流调速系统,可编程的输入除了考虑主令控制信号外,还需要
16、考虑合闸信号、传动装置综合故障信号、抱闸信号、风机故障信号等。I/O点数是衡量PLC规模大小的重要指标。因此首先要根据系统的控制规模,确保有足够的I/O点数,并考虑有10%-15%的I/O点数作为余量,以备后用。 3.输入输出模块的选择 除了I/O点数之外,还要考虑I/O模块的工作电压以及外部接线方式。对于输入模块主要考虑两点,一是根据现场输入信号与PLC输入模块距离的远近来选择工作电压;二是高密度的输入模块,能允许同时接通的点数,一般不得超过总输入点数的60%.输出模块有继电器、晶体管和晶闸管三种工作方式,其中继电器输出模块最便宜,在输出变化不快、开关要求不频繁的场合,应优先选用。 4.估算
17、用户存储容量 用户应用程序占用多少内存与许多因素有关,如I/O点数、控制要求、运算处理、程序结构等。因此,在程序设计之前,只能对用户的存储容量进行大致估算。 5.专用功能模块的配置 除了开关信号外,工业控制中还要对温度、压力、流量等过程变量以及运动控制变量进行检测和控制。在这些专用场合,输入和输出容量己经不是关键参数,更重要的是考虑它们的控制功能。模拟量输入/输出模块、温度模块等专用功能模块已经非常普及,这些模块具有A/D和D/A变换功能,可以适合现场控制的需要。2.3.2 PLC软件设计的一般步骤 软件设计就是编写满足生产要求的梯形图或助记符程序,设计应按以下原则和步骤进行2。 1.设计控制
18、系统流程图 明确生产工业要求,分析各输入、输出与各种操作之间的逻辑关系确定需要检测的量和控制方法的基础上,可根据系统中各设备的操作内容和操作顺序,画出系统控制的流程图,用于清楚的表明动作的顺序和条件。流程图是编程的主要依据,要尽可能详细。 2.编制应用程序 编制应用程序就是根据设计的程序流程图逐条地编写控制程序,这是整个程序设计工作的核心部分。梯形图仍是目前最普遍使用的编程语言。目前编程软件大多可在梯形图和助记符之前相互切换,这样对设计者来说比较方便。在编写过程中,可以借鉴现成的标准程序,但必须弄懂这些程序段,否则将会给后续工作带来困难和损失。2.3.3 设计中用到的模块模拟量输入模块FX2N
19、-4AD615FX2N-4AD是FX2N系列PLC的模拟量输入模块,有CH1CH4四个通道,每个通道都可进行AD转换,分辩率为12位,采集信号电压为-10V+10V,分辩率5mV。电流输入为420mA或-2020mA,分辩率20uA。 FX2N-4AD内部有32个16位的缓冲寄存器(BMF用于与主机交换数据。 FX2N-4AD占用FX2N扩展总线的8个点, 耗电为5V,30mA。1. BFM内部含义0#通道初始化,缺省值为H0000;#1#4存放通道#1#4的采样值,用于求平均值;#5#8存放四个通道的平均输入采样值;#9#12每个输入通道当前值存放;#13#14保留;#15用于选择AD转换速
20、度:0为正常速度,15ms;如为1,则选择高速,6ms;#16#19保留;#20复位到缺省值预设,缺省值为0;#21禁止调整偏移量、增益值,缺省值为0;#22偏移、增益调整:G4O4G3O3G2O2G1O1;#23偏移值,缺省值为0;#24增益值,缺省值为5000;#25#28保留;#29错误状态;#30识别码:K2010;#31不能使用;BFM说明 1)0#,#1#4,#20#24中的数据可通过TO指令改写,其它的BFM内的数据可以使用PLC的FROM指令读写。 2)在BFM#0中写入十六进制4位数字H进行A/D模块通道初始化,最低位数字控制CH1,最高位控制CH4。 3)=0时设定输入范围
21、为-1010V,=1时,设定输入范围为4m A20mA,=2时,设定输入范围为-2020mA,=3时关断通道。例如BFM#0=H3310则说明CH1设定输入范围为-10V+10V,CH2设定输入范围为420mA,CH3、CH4两通道关闭。 4)BFM#30为缓冲器确认码,可用FROM指令读出特殊功能块的认别号。FX2N-4AD单元的标识码为K2010。模拟量输出模块FX2N-2DA615FX2N-2DA模块将12位数字信号转换为模拟量电压或电流输出。它有2个模拟量输出通道,3种量程:DC 010V、05V和420mA,D/A转换时间为4ms/通道。FX2N-2DA模块共有32个缓冲存储器,但是
22、只使用了下面两个:BFM # 16的低8位用于写入输出数据的当前值,高8位保留。BFM # 17的b0位从“1”变为“0”时,通道2的D/A转换开始;b1位从“1”变为“0”时,通道1的D/A转换开始;b2位从“1”变为“0”时,D/A转换的低8位数据被锁存,其余各位没有意义。第三章 基于PLC的直流电机调速系统设计3.1 设计任务 设计一基于PLC的控制电路为电流、转速双闭环、主电路为直流脉宽调速的可逆直流调速系统。系统参数:直流电动机Ra=6.5, =3.7A,=48V, =200 r/min,电枢回路总电阻R=8,电枢回路电磁时间常数Tl=5ms,机电时间常数Tm=200ms,电源电压U
23、s=60V,给定值和ASR,ACR的输出限幅值均为10V,电流反馈系数=1.33V/A,转速反馈系数=0.05Vmin/r,电动势转速比Ce=0.18Vmin/r,设计要求稳态无静差,动态过渡过程时间ts0.1s,电流超调量%5%,空载起动到额定转速时的转速超调量%10%。3.2 脉宽调制系统特有部分设计 脉宽调制器选择脉宽调制器用于生产控制PWM变换器的功率器件通断的PWM信号。脉宽调制器的种类在前面第二章的2.2.2中已经阐述过,这里选用一个电压-脉宽变换电路。PWM变换器选择PWM变换器有可逆和不可逆两类。可逆变换器又有双极式,单极式和受限单极式等多种。考虑电动机可逆运行,故选用全控式电
24、力晶体管GTR构成H型双极性控制PWM变换器。其中,电源电压选用不可控电力二极管整流提供,采用大电容C滤波。功率开关管应承受2的电压,故选用晶体管的B,集电极最大电流的D202电力晶体管。它的共发射极电路截止频率。并接在功率开关管两端二极管用于在电力晶体管关断时为电枢回路提供释放电感储能的续流,参数计算同功率管,选用10CTF30型电力二极管,。采用单相交流220V供电,变压器二次电压为67V,桥式整流二极管最大反向电压大于电源幅值的2倍,最大整流电流按2倍额定电流考虑选25JPF40电力二极管,。整流桥输出端所并接的电容作用滤除整流后的电压纹波,并在负载变化时保持电压平稳。另外,当脉宽调速系
25、统的电动机减速或停车时,贮存在电动机和负载转动部分的动能将这里选4000,电压按大于2倍电压选择。3.驱动电路选择驱动电路的作用是将控制电路输出的PWM信号放大至足以保证GTR可靠导通或关断的程度。同时具有实现主电路与控制电路相隔离,故障后自动保护及延时等功能。GTR的驱动电路可由分立元件制作或采用专用集成电路,这里选用汤姆森公司生产的UAA4002型产品,该产品为大规模集成基极驱动电路,可对GTR实现较理想的基极电流优化驱动和自身保护。其正向驱动电流为0.5A,反向驱动能力为-3A,具有对GTR实现过电流保护,最小导通时间限制,最大导通时间限制,正反向驱动电源电压监视以及自身过热保护211。
26、4.负反馈单元1)转速检测装置选择选测速发电机 永磁式ZYS231/110型,额定数据为。2电流检测单元本系统要求电流检测不但要反映电枢电流的大小而且还要反映电流极性,所以选用霍尔电流传感器。3.3 PLC硬件设计本设计选用日本三菱公司的FX2N系列的FX2N-16MT的CPU,其中的16是输入输出点的总点数;M是单元类型中的基本单元;T为输出形式中的晶体管输出。这种系列的PLC的环境温度、抗冲击、抗噪声等均满足要求。PLC构成双闭环直流调速系统包括:1个基本单元,即FX2N-16MT,1个模拟量输入模块FX2N-4AD(4个12位模拟量输入通道)和1个模拟量输出模块FX2N-2DA(2个12
27、位模拟量输出通道)61314。PLC基本单元与FX2N-4AD和FX2N-2DA之间的数据通讯是由FROM(FNC78)/TO(FNC79)指令执行的。FROM(读特殊功能模块指令)是基本单元从FX2N-4AD/2DA读数据的,TO是写特殊功能模块指令6。 PLC构成双闭环直流调速系统(未考虑逻辑控制包括):1个基本单元FX2N-16MT,1个模拟量输入模块FX2N-4AD和1个模拟量输出模块FX2N-2DA,模拟量I/O模块接在FX2N-16MT基本单元右边的扩展总线上,从最靠近基本单元开始顺序编号为0,1,如图4-1。 图4-1PLC模块连接和编号 双闭环直流调速系统送给PLC的信号有:(
28、1)给定电压;(2)速度反馈值。直流测速发电机将调速系统转换成电压值,经过模拟量输入单元送给PLC。(3)电流反馈值。通过电流互感器检测到与电枢电流成正比的整流变压器副边交流电流,再经整流后得到电流反馈电压值,通过模拟量输入单元送给PLC。 双闭环直流调速系统中的转速调节器和电流调节器,模拟量转换等均由PLC的特殊功能指令实现。PLC输出的模拟信号,送给脉冲调制器,对电力晶体管进行控制,从而得到希望的方波输出电压。 本设计的PLC硬件设计如下图12所示: 图 4-1 PLC连接图其中SB0、SB1、SB2、SB3、SJ、I1、I2、I3是输入信号;KM0、KM1、KM2、DJ、O是输出信号。各
29、自的含义及其与PLC地址编号如下表 1:表 1 输入、输出信号与PLC地址编号对照 输 入 信 号 SBO 总电源启动按钮 X0 SB1 电机正转 X1 SB2 电机反转 X2 SB3 电机停转 X3 SJ 过电流保护 X4 I1 给定电压 CH1 I2 电流反馈 CH2 I3 速度反馈 CH3 输 出 信 号 KM0 总电源接触器 YO KM1 电机正转接触器 Y1 KM2 电机反转接触器 Y2 DJ 模拟量输出显示 Y3 O 脉冲宽度调制器3.4 PLC 软件设计PLC有5种编程语言,分别是顺序功能图(SFC)、梯形图(LD)、功能块图(FBD)、指令表(IL)和结构文本(ST)。梯形图由
30、触点、线圈和方框表示的功能块组成。触点代表逻辑输入条件,线圈代表逻辑输出结果,功能块用来表示定时器、计数器或者数学运算等指令。本文的梯形图如下:参考文献(主要及公开发表的文献)1 陈伯时. 电力拖动自动控制系统运动控制系统M. 北京:机械工业出版社,2003. 2 李荣生. 电气传动控制系统设计指导M. 北京:机械工业出版社,2004.3 史国生. 交直流调速系统M. 北京:化工工业出,2002.4 方承远. 工厂电气控制技术M. 北京:机械工业出版社,2000.5 吴守箴. 电气传动的脉宽调制控制技术M. 北京:机械出版社,2002.6 廖常初. FX系列PLC编程及应用M. 北京:机械出版
31、社,2005.7 罗飞. 电力拖动与运动控制系统M. 北京:化学工业出版社,2007.8 李久胜. 电气自动化专业英语M. 哈尔滨:哈尔滨工业大学出版社,2005.9 童福荛. 电力拖动自动控制系统习题例题集M. 北京:机械工业出版社,1996.10 王兆安. 电力电子技术M. 北京:机械出版社,2000.11 李强、张毅坤、万伯任. 大规模集成电路UAA4002及其运用J. 电气传动自动化,1994,16(1):5764.12 孙铁成、文亚凤、孙淑艳. 大功率晶体管脉宽调制直流调速系统J. 现代电力,2000,17(3):5155.13 周渊深、姜建国. PLC在双闭环调速系统中的应用J.
32、连云港化工高等专科学校学报,1999,12(4):810.14 訾贵昌. PLC在直流电动机双闭环调速系统中的应用J. 辽宁工程技术大学学报,2004,23(6):796798.15 MITSUBISHI Programmable Controller MELSEC FX2 SERIES Programming Manual,1993.16 John W.Webb,Ronald A .Reis 著. 丑武胜,韩壮志译,可编程控制器-原理与应用. 北京:电子工业出版社,2005.17 廖常初. PLC编程及应用M. 北京:机械工业出版社,2008. 致谢 我要衷心感谢我的父母,感谢他们二十多年来
33、对我的关心、教育和理解。在未来的人生道路上我将尽我所能不辜负他们的期望。本论文是在XXX的精心指导下完成的,在课题的研究过程中,给与我悉心的关怀,给我提出许多宝贵的指导性意见,少走了些弯路,我受益匪浅。且在设计过程中还得到了XX老师和XXX老师的帮助,使我在设计中遇到的难题迎刃而解。再次表示衷心的感谢,老师们的教导,我将终生难忘。感谢我的朋友。在论文完成的过程中,耐心的给与我各种帮助,特别是在应用软件上。及时的指出我在做计算和仿真时所犯的错误。感谢晋城职业技术学院的所有的老师和同学们,是你们和我一起度过了4年难忘的学习生活。个人简况及联系方式个人信息姓名民族政治面貌性别专业电话年龄籍贯邮箱教育
34、经历主要课程CAD制图 机械制图 机械基础 液压与气动 计算机应用 数控加工 PLC编程与应用 CAXA数控车 个人技能软件操作:CAD CAXA word excel PPT实际操作:数控车床 高压电工实习经历获奖经历社团活动取得证书爱好特长自我评价附录资料:不需要的可以自行删除 C语言曲线函数像素函数putpixel() 画像素点函数 getpixel()返回像素色函数 直线和线型函数line() 画线函数 lineto() 画线函数 linerel() 相对画线函数 setlinestyle() 设置线型函数 getlinesettings() 获取线型设置函数 setwritemode
35、() 设置画线模式函数 多边形函数HYPERLINK /view/553113.htmrectangle() 画矩形函数 bar() 画条函数 bar3d() 画条块函数 drawpoly() 画多边形函数 圆、弧和曲线函数getaspectratio()获取纵横比函数 circle()画圆函数 arc() 画圆弧函数 ellipse()画HYPERLINK /view/36981.htm椭圆弧函数 fillellipse() 画椭圆区函数 pieslice() 画扇区函数 sector() 画椭圆扇区函数 getarccoords()获取圆弧坐标函数 填充函数setfillstyle() 设
36、置填充图样和颜色函数 setfillpattern() 设置用户图样函数 floodfill() 填充闭域函数 fillpoly() 填充多边形函数 getfillsettings() 获取填充设置函数 getfillpattern() 获取用户图样设置函数 图像函数imagesize() 图像存储大小函数 getimage() 保存图像函数 putimage() 输出图像函数 图形和图像函数对许多图形HYPERLINK /view/330120.htm应用程序,直线和HYPERLINK /view/400.htm曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然如果没有画像素的功
37、能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。 (一) 像素函数putpixel() 画像素点函数功能: 函数putpixel() 在图形模式下屏幕上画一个像素点。 用法: 函数调用方式为void putpixel(int x,int y,int color); 说明: 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。 此函数相应的HYPERLINK /view/668911.htm头文件是graphics.h 返回值: 无 例: 在屏幕上(6,8)处画一个红色像素点: put
38、pixel(6,8,RED); getpixel()返回像素色函数功能: 函数getpixel()返回像素点颜色值。 用法: 该函数调用方式为int getpixel(int x,int y); 说明: 参数x,y为像素点坐标。 函数的返回值可以不反映实际彩色值,这取决于HYPERLINK /view/1120949.htm调色板的设置情况(参见setpalette()函数)。 这个函数相应的头文件为graphics.h 返回值: 返回一个像素点色彩值。 例: 把屏幕上(8,6)点的像素颜色值赋给变量color。 color=getpixel(8,6); (二) 直线和线型函数有三个画直线的函
39、数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,如果视口裁剪标志clip为真,那么直线将受到视口边缘截断;如果clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。 有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。 line() 画线函数功能: 函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。 用法: 该函数调用方式为void line(int startx,int starty,int endx,int endy); 说明: 参数sta
40、rtx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。 此函数相应的头文件为graphics.h 返回值: 无 例: 见函数60.linerel()中的实例。 lineto() 画线函数功能: 函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。 用法: 此函数调用方式为void lineto(int x,int y); 说明: 参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。 该函数对应的头文件为graphics.h 返回值: 无 例: 见函数60.linerel()中的实例
41、。 linerel() 相对画线函数功能: 函数linerel() 使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。 用法: 这个函数调用方式为void linerel(int dx,int dy); 说明: 参数dx,dy分别是水平偏移距离和垂直偏移距离。 函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。 返回值:无 例: 下面的程序为画线函数调用实例: #i nclude void main() int driver,mode; driver=DETECT; mod
42、e=0; initgraph(&driver,&mode,); setcolor(15); line(66,66,88,88); lineto(100,100); linerel(36,64); getch(); restorecrtmode(); setlinestyle() 设置线型函数功能: setlinestyle() 为画线函数设置当前线型,包括线型、线图样和线宽。 用法: setlinestyle() 函数调用方式为void setlinestyle(int stly,unsigned pattern,int wigth); 说明: 参数style为线型取值,也可以用相应名称表示,
43、如表1-10中所示。 参数pattern用于自定义线图样,它是16位(bit)字,只有当style=USERBIT_LINE(值为1)时,pattern的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显示,因此,pattern=0 xFFFF,则画实线;pattern=0 x9999,则画每隔两个像素交替显示的虚线,如果要画长虚线,那么pattern的值可为0 xFF00和0 xF00F,当style不为USERBIT_LINE值时,虽然pattern的值不起作用,但扔须为它提供一个值,一般取为0。 参数wigth用来设定线宽,其取值见表1-11,表中给出了两个值,即1和3,实际
44、上,线宽取值为2也是可以接受的。 若用非法参数调用setlinestyle()函数,那么graphresult()会返回错误代码,并且当前线型继续有效。 Turbo C提供的线型与线宽定义在头文件graphics.h中,表1-10和1-11分别列出了参数的取值与含义。 表1-10 线型 名称取值含义SOLID_LINE0实线DOTTED_LINE1点线CENTER_LINE2中心线DASHED_LINE3虚线USERBIT_LINE4用户自定义线型表1-11 线宽 名 称取 值说 明NORM_WIDTH(常宽)1一个像素宽(缺省值)THICK_WIDTH(加宽)3三个像素宽这个函数的头文件是g
45、raphics.h 返回值: 无 例: 下面的程序显示了BC中所提供的线型图样: #i nclude void main() int driver,mode;i; driver=DETECT; mode=0; initgraph(&driver,&mode,); for(i=0;i4;i+) setlinestyle(i,0,1); line(i*50,200,i*50+60,200) ; getch(); restorecrtmode(); getlinesettings() 获取线型设置函数功能: 函数getlinesettings() 用当前设置的线型、线图样和线宽填 写linesett
46、ingstype型结构。 用法: 函数调用方式为void getlinesettings(struct linesettingstype *info); 说明: 此函数调用执行后,当前的线型、线图样和线宽值被装入info指向的结构里,从而可从该结构中获得线型设置。 linesettingstype型结构定义如下: struct linesettingstype int linestyle; unsigned upattern; int thickness; ; 其中linestyle用于存放线型,线型值为表1-10中的各值之一。 upattern用为装入用户自定义线图样,这是16位字,每一位等
47、于一个像素,如果哪个位被设置,那么该像素打开,否则关闭。 thickness为线宽值存放的变量,可参见表1-11。 getlinesettings()函数对应的头文件为graphics.h 返回值: 返回的线型设置存放在info指向的结构中。 例: 把当前线型的设置写入info结构: struct linesettingstype info; getlinesettings(&info); setwritemode() 设置画线模式函数功能: 函数setwritemode() 设置画线模式 用法: 函数调用方式为 void setwritemode()(int mode); 说明: 参数mod
48、e只有两个取值0和1,若mode为0,则新画的线将覆盖屏幕上原有的图形,此为缺省画线输出模式。如果mode为1,那么新画的像素点与原有图形的像素点先进行异或(XOR)运算,然后输出到屏幕上,使用这种画线输出模式,第二次画同一图形时,将擦除该图形。调用setwritemode()设置的画线输出模式只影响函数line(),lineto(),linerel(),recangle()和drawpoly()。 setwritemode()函数对应的头文件是graphics.h 返回值: 无 例: 设置画线输出模式为0: setwritemode(0); (三)、多边形函数对多边形,无疑可用画直线函数来画
49、出它,但直接提供画多边形的函数会给用户很大方便。最常见的多边形有矩形、矩形块(或称条形)、多边形和多边形块,我们还把长方形条块也放到这里一起考虑,虽然它不是多边形,但它的特例就是矩形(块)。下面直接介绍画多边形的函数。 rectangle() 画矩形函数功能: 函数rectangle() 用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形)。 用法: 此函数调用方式为void rectangle(int left,int top,int right,int bottom); 说明: 参数left,top是左上角点坐标,right,bottom是右下角点坐标。如果有一个以上
50、角点不在当前图形视口内,且裁剪标志clip设置的是真(1),那么调用该函数后,只有在图形视口内的矩形部分才被画出。 这个函数对应的头文件为graphics.h 返回值: 无 例: 下面的程序画一些矩形实例: #i nclude void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); rectangle(80,80,220,200); rectangle(140,99,180,300); rectangle(6,6,88,88); rectangle(168,72,260,360); getch
51、(); restorecrtmode(); bar() 画条函数功能: 函数bar()用当前填充图样和填充色(注意不是给图色)画出一个指定上左上角与右下角的实心长条形(长方块或正方块),但没有四条边线)。 用法: bar()函数调用方式为void bar(int left,int top,int right,int bottom); 说明: 参数left,topright,bottom分别为左上角坐标与右下角坐标,它们和调用函数rectangle()的情形相同,调用此函数前,可用setfillstyle()或setfillpattern()设置当前填充图样和填充色。 注意此函数只画没有边线的条
52、形,如果要画有边线的的条形,可调用下面的函数bar3d()来画,并将深度参数设为0,同时topflag参数要设置为真,否则该条形无顶边线。 这 应的头文件为graphics.h 返回值: 无 例: 见函数bar3d()中的实例。 bar3d() 画条块函数功能: 函数bar3d() 使用当前绘图色、线型及线宽画出三维长方形条块,并用当前填充图样和填 充色填充该三维条块的表面。 用法: 此函数调用方式为void bar3d(int left,int top,int right,int bottom,int depth,int topflag); 说明: 参数left,top,right,bott
53、om分另为左上角与右下角坐标,这与bar()函数中的一样。参数depth为条块的深度,以像素为单位,通常按宽度的四分之一计算。深度方向通过屏显纵横比调节为约45度(即这时x/y比设置为1:1)。 参数topflag相当于一个HYPERLINK /view/46060.htm布尔参数,如果设置为1(真)那么条块上放一顶面;若设置为0(假),则三维条形就没有顶面,这样可使多个三维条形叠加在一起。 要使图形更加美观,可利用函数floodfill()或setfillpattern()来选择填充图样和填充色(参见本小节(五)填充函数 )。 bar3d()函数对应的头文件为graphics.h 返回值:
54、无 例: 下面的程序画一个条形和条块: #i nclude void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); setfillstyle(SOLID-FILL,GREEN); bar(60,80,220,160); setfillstyle(SOLID-FILL,RED); bar3d(260,180,360,240,20,1); getch(); restorecrtmode(); drawpoly() 画多边形函数功能: 函数drawpoly() 用当前绘图色、线型及线宽,画一个给定若
55、干点所定义的多边形。 用法: 此函数调用方式为void drawpoly(int pnumber,int *points); 说明: 参数pnumber为多边形的顶点数;参数points指向整型HYPERLINK /view/209670.htm数组,该数组中是多边形所有顶点(x,y)坐标值,即一系列整数对,x坐标值在前。显然整型数组的维数至少为顶点数的2倍,在定义了多边形所有顶点的数组polypoints时,顶点数目可通过计算sizeof(polypoints)除以2倍的sizeof(int)得到,这里除以2倍的原因是每个顶点有两个整数坐标值。另外有一点要注意,画一个n个顶点的闭合图形,顶点
56、数必须等于n+1,并且最后一点(第n+1)点坐标必须等于第一点的坐标。 drawpoly()函数对应的头文件为grpahics.h 返回值: 无 例: 下面的程序画一个封闭星形图与一个不封闭星形图: #i nclude void main() int driver,mode; static int polypoints118=100,100,110,120,100,130,120,125,140,140,130,120, 140,110,120,115,100,100; static int polypoints218=180,100,210,120,200,130,220,125,240,1
57、40,230,120, 240,110,220,115,220,110; driver=DETECT; mode=0; initgraph(&driver,&mode,); drawpoly(9,polypoints1); drawpoly(9,polypoints2); getch(); restorecrtmode(); (四)、 圆、弧和曲线函数在一个屏幕上画得很圆的图形到另一个屏幕上可能被压扁或拉长,这是因为每一种显示卡与之相应的显示模式都有一个纵横比。纵横比是指像素的水平方向大小与垂直方向大小的比值。如VGA显示卡由于偈素基本上是正方形,所以纵横比为1.000。 为了保证几何图形基本
58、按预计情况显示在屏幕上,用屏显的纵横比来计算和纠正不同硬件及显示卡产生的畸变。计算纵横比所需要的水平方向和垂直方向的比例系数可调用函数getaspectratio()获得。 getaspectratio()获取纵横比函数功能: 函数getaspectratio()返回x方向和y方向的比例系数,用这两个整型值可计算某一特定屏显的纵横比。 用法: 此函数调用方式为void getaspectratio(int xasp,int yasp); 说明: 参数xasp指向的变量存放返回的x方向比例系数;参数yasp指向的变量存放返回的y方向比例系数。通常y方向比例系数为10 000, x方向比例系数不大
59、于10 000(这是因为大多数屏幕像素高比宽长)。 注意纵横比自动用作下面函数arc(),circle()和pieslice()中的标尺因子,使屏幕上圆或弧正常显示。但用ellipse()函数画椭圆必须调用本函数获取纵横比作为标尺因子,否则不予调整。纵横比可用于其它几何图形,目的是校正和显示图形。 getaspectratio()函数对应的头文件为graphics.h 返回值: 返回x与y方向比例系数分别存放在xasp和yasp所指向的变量中。 例: 下面的程序显示纵横比: int xasp,yasp; float aspectratio; getaspectratio(&xasp,&yasp
60、); aspectratio=xasp/yasp; printf(aspect ratio: %f,aspectratio); circle()画圆函数功能: 函数circle()使用当前绘图色并以实线画一个完整的圆。 用法:该函数调用方式为void circle(int x,int y,int radius); 说明: 参数x,y为圆心坐标,radius为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。 不同于ellipse()函数,只用单个半径radius参数调用circle()函数,故屏显纵横比可以自动调节,以产生正确的显示图。 此函数对应的头文件为graphi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年人跌倒预警表企业制定与实施新质生产力项目商业计划书
- 紫菜寿司跨界合作行业深度调研及发展项目商业计划书
- 绘画艺术鉴赏创新创业项目商业计划书
- 校园节能工程创新创业项目商业计划书
- 精密定位电路设计行业跨境出海项目商业计划书
- 2025年青少年心理健康问题的干预措施分析
- 学守则、守规范 (教学设计)初三下学期教育主题班会
- 2025年气候变化对全球金融体系的冲击评估
- 2025年超高分子量聚乙烯项目提案报告
- 2 我的姓名教学设计-2025-2026学年小学综合实践活动三年级下册海燕版
- 2025届春季厦门银行校园招聘考前自测高频考点模拟试题附答案详解(考试直接用)
- 江苏省宿迁市沭阳县第一次城乡联考2026届九年级上学期9月月考语文试卷(含答案)
- 无人机培训课件范本图片
- 2025年安全员考试题库(附参考答案)
- 颅脑外伤创伤课件
- 车间落地品管理办法
- 2025广西公需科目培训考试答案(90分)一区两地一园一通道建设人工智能时代的机遇与挑战
- 生活委员课件
- 国家开放大学《人文英语4 》期末机考题库
- 民事赔偿赔协议书
- 成人术中非计划低体温预防与护理-中华护理学会团体标准
评论
0/150
提交评论