编程与检测

2024-10-19

编程与检测(精选9篇)

编程与检测 篇1

0 引言

哈密大枣作为我国新疆地区特色水果, 目前国际和国内研究的人不多。哈密大枣要走绿色食品和品牌战略的路, 必须加强其品质的检测。由于现在红枣的检测仍采用原始的人工分级方法, 容易受到检测人员身体素质和精神状态影响, 主观因素较大, 效率低, 漏检率高, 劳动强度大, 因而影响红枣品质指标的评价。例如, 对于红枣果形、颜色、缺陷, 仅仅依靠传统人工方法很难做到精确评价。现代图像处理技术和软件工程的快速发展, 使哈密大枣品质自动检测成为可能。同时, 红枣品质分级是进行红枣自动化分级的关键环节。随着计算机技术的迅速发展, 计算机以及视觉设备价格大幅度下降, 速度成倍提高, 为计算机视觉技术的广泛应用创造了条件[1]。

Matlab全称是Matrix Laboratory (矩阵实验室) , 它是一种专门用于矩阵数值计算的软件, 在矩阵运算上有自己独特的特点。这一特点也就决定了Matlab在处理数字图像上的独特优势。MATLAB 语言可以提供与矩阵有关的强大的数据处理和图形显示功能, 具有丰富的程序工具箱, 在控制系统、图像处理、信号处理和神经网络等方面都有广泛的应用[2,3,4], 为软件开发人员在程序编制过程中实现数值计算和图形增添了又一行之有效的开发平台。但是, MATLAB 的界面功能比较弱, 给人机界面的开发应用或软件演示系统带来不便。与之相比, Visual Basic避开了C++ 编程过分繁琐和抽象的缺点, 能编制优良的可视化界面, 缺点在于运算速度慢, 不适合进行大型的数值计算和图形处理。为了提高工程计算软件的开发效率和质量, 用VB 来设计界面作为主程序, 调用MATLAB编写的子程序, 以此开发出高质量、高性能的工程计算软件系统当属首选方案。

1 哈密大枣自动检测系统

1.1 系统工作原理

哈密大枣分级系统示意图如图1所示。

其基本工作原理:输送装置连续输送哈密大枣至摄像室, 摄像头对运动的哈密大枣群体进行图像采集, 所得的哈密大枣图像经视频解码器后读入电脑, 由MATLAB软件对哈密大枣图像进行预处理;然后, 对预处理后的数据进行模式识别, 并将识别的结果与制定的标准进行比较分析;最后, 将计算结果作为分级信号传送给分级装置 (PLC系统) , 实现分级。

1.2 图像的采集与存储

本系统分为硬件系统和软件系统。其中, 硬件系统包括cv-m7+cl相机、可调亮度白色LED光源、光电传感器、SOLIOS图像采集卡、可调速传送装置、计算机等设备;软件系统为VB6.0, MATLAB2008图像处理工具包, MIL9.0图像采集软件。

首先, 将SOLIOS图像采集卡安装在电脑中, 并安装驱动程序, 用其自身的视频软件调式, 使设备能够正常运行。然后, 在VB中引用部件 (如图2所示) , 选择ActiveMIL, 在工程中添加控件, 调用相关函数, 将采集的图像记录和储存。

ActiveMIL9.0是一个遵循OCX标准的组件包, 开发者可快速在VB应用程序中增加Application, System, Image, ImageProcess和Display等相关组件, 通过对组件的属性设置和各类方法调用, 实现对哈密大枣图像的采集和存储[5]。

1.2.1 系统开发中Image的初始化程序

Dim GrabBuffer1 as Image

GrabBuffer1. SizeX = 1000

GrabBuffer1. SizeY = 1000

GrabBuffer1.DataDepth = 16

GrabBuffer1. FileFormat = imRaw

GrabBuffer1. System = System1

GrabBuffer1.Allocate

GrabBuffer1.Clear0

1.2.2 系统开发中Image的图像存储

SequenceBuffers (i) .Save (Image_path +″/image″+picturepath+″/x″+CStr (Sequence ountnow) +″a″+CStr (i) +″. raw″)

2 图像处理系统编程实现

2.1 VB与Matlab接口

为了提高工程计算软件的开发效率和质量, 采取把VB可视化编程语言和Matlab工具相结合的办法, 充分利用Matlab的运算功能和VB的开发界面方便的特点进行混合编程, 即用VB来设计界面作为主程序, 调用MATLAB编写的子程序实现图像处理功能, 以此开发出高质量、高性能的工程计算软件系统。其过程是利用ActiveX技术实现VB对Matlab的调用[6]。

ActiveX部件是Microsoft公司提供的一种用于模块集成的协议, 它是一些遵循ActiveX规范编写的可执行代码, 如一个*.exe, *. dll或*.ocx文件。在程序中加入ActiveX部件后, 它将成为开发和运行环境的一部分, 并为应用程序提供新的功能。ActiveX部件保留了一些普通VB控件的属性、事件和方法。ActiveX部件特有的方法和属性大大地增强了程序设计者的能力和灵活性。ActiveX实际上是在调用一种部件, 而无需要求该部件对应的程序正在运行, 这会使得其功能更加强大。

调用过程编程如下:在VB下建立一个新窗口, 它的上面有4个控件。其中, 有2个Command按钮, VB名称分别为Command1和Command2。Command1用来调用MATLAB程序, Command2用来退出程序。另外, 还有1个TextBox控件, VB名称为Text1, 用来接收MATLAB命令;再有1个为Text2控件, VB名称为Text2, 用于显示计算结果。设计本程序的初衷是:当按下"VB调用MATLAB"按钮Command1时, 程序便运行事先在编辑框Text1中编辑好的MATLAB语句, 并将其结果在Text2控件中显示出来。

实现过程如下:

1) 建立一个VB窗口, 在其变量声明部分:

Dim Matlab As Object

2) 在其代码窗中给按钮设定下面的响应命令:

Private Sub Command1 Click ()

Set Matlab=CreateObject ("Matlab.Application")

Text2.text=Matlab.Execute (Text1.Text)

End Sub

3) 在文本框内编辑matlab图像处理的程序段。

2.2 利用Matlab进行图像处理

2.2.1 哈密大枣的颜色空间转换

由实验系统采集到的哈密大枣图像为彩色图像, 是由R, G, B等3种基色组成的合成图像。为了方便处理和提高处理速度, 将RGB图像转换为HSI图像。其中, H表示色度 (Hue) , 代表颜色的类型;S表示饱和度 (Saturation) , 代表颜色的纯度;I表示强度 (Intensity) , 代表光亮的强度。其中, I分量与图像的彩色信息无关, 通过图像的滤波处理可以将图像由原来的三维降至一维, 减少了2/3的运算量, 从而显著提高运算速度。实际计算的H值可由式 (1) 确定。式中, R, G, B分别代表红、绿、蓝三原色刺激值[7,8]。

{Ι= (R+G+B) /3S=Ι-[Μin (R, G, B) ]/3W=cos-1[2R-G-B2R2+G2+B2-RG-GB-RB] (1) Η=W (BG) Η=2π-W (B>G)

通过颜色空间转换后的哈密大枣图像结果如图3和图4所示。

2.2.2 图像背景分割

采集到的哈密大枣图像中包括哈密大枣和背景两部分。本系统是对图像中哈密大枣进行外形上的检测识别, 必须准确地确定目标与背景。因此, 首先要将采集到的哈密大枣图片进行背景分割。

图像分割 (image segmentation) 是数字图像处理领域中一类非常重要的图像分析技术, 主要是根据图像在各个区域的不同特性, 而对其进行边界或区域上的分割, 并从中提取出所关心的目标。哈密大枣的自动分级系统最终要应用于实际的生产线上, 采用单一分量进行背景分割速度快, 有利于生产效率的提高;同时, 本系统的水果传送装置为绿色, 背景和哈密大枣图像的交界处色调值表现出很大的变异性, 适合采用阈值法进行分割。因此, 本系统采用阈值法对图像色调值分割处理哈密大枣图像的背景[9]。

2.2.3 阈值分割

对于图像f (x, y) , 对其取k个阈值后, 图像可用式 (2) 表示。当Tk-1<f (x, y) <Tk时, 则有

g (x, y) =k (k=0, l, ..., k) (2)

阈值选择的恰当与否对分割的效果起着决定性的作用。经典的阈值选取方法有以下4种:极小值点阈值选取方法、最优阈值搜寻方法、迭代阈值选取方法以及大津法 (OTSU法) 。通过这4种方法中的一种或几种, 在一般情况下能够选择出合适的阈值点, 进而可以对图像进行准确有效的分割。

阈值分割算法是通过阈值来定义图像中不同目标的区域归属, 在阈值确定后, 通过阈值分割出的结果直接给出图像的不同区域分布。阈值分割算法基本的处理方式是:先在图像的灰度取值范围中选择一灰度阈值, 并对图像全部像素点应用该阈值。一般说来, 经由此阈值分割的两部分像素点分属图像中的不同区域, 这也就使利用阈值对图像进行区域分割成为了可能[10]。

2.2.4 噪声去除

基于MATLAB与VB混合编程的哈密大枣分级系统是一个涉及到光、电子、计算机和机械的复杂系统, 其各个环节都可能产生影响系统图像清晰度, 这必然影响到识别处理全过程以及输出结果, 甚至可能因此做出错误的识别。所以, 对哈密大枣图像识别之前, 必须对图像质量加以改善, 平滑噪声同时尽量保持图像细节。噪声去除处理可以有效地抑制噪声, 同时能够增加图像的对比度, 有利于图像的识别处理阶段提取图像特征[11]。

中值滤波、小波去噪和数学形态学算子[12]的方法是常用的噪声去除方法。中值滤波具有抑制噪声和很好地保护图像边界信息等优点;数学形态学算子具有消除细小物体、再纤细点处分离物体和平滑较大物体的边界时又不明显改变其面积的作用。通过阈值分割及噪声去除后的效果图如图5和图6所示。

2.3 执行机构中VB与FX系列PLC的通信

执行机构采用基于PC机为上位机的PLC控制系统。PLC控制系统通过控制变频器控制传送带的传送速度和电机系统, 从而实现哈密大枣的分级。分级装置必须依据所连接PLC的通信规程来编写通信协议, 所以应先熟悉FX系列PLC的通信协议, 在VB中实现与PLC的通信[13]。

VB编程实现与FX系列PLC通信的主要代码如下:

MSComm1.CommPort = 1 '通信口

MSComm1.Settings = "9600, E, 7, 2" '串口参数设置

MSComm1.Handshaking = 0 '握手信号

MSComm1.InputLen = 0 '设置和返回input每次读出的字节数, 设为0时读出接收缓冲区中的内容

MSComm1.OutBufferCount = 0 '设置和返回发送缓冲区的字节数, 设为0时清空发送缓冲区

MSComm1.InBufferCount = 0'设置和返回接收缓冲区的字节数, 设为0时清空接收缓冲区

MSComm1.PortOpen = True '打开串口

3 结论

1) 基于MATLAB 与VB混合编程的哈密大枣方法是可行的;

2) 本系统对哈密大枣品质检测的方法也可用于其它水果的检测研究。

4 展望

1) 由于系统是使用MATLAB图像处理工具软件对采集到的哈密大枣进行处理分析, 分级效率低, 故实验的下一部分是使用VC++6.0软件对MATLAB 7.6图像处理软件所使用的处理方法进行编程, 以满足实时在线检测的需要;

2) 鉴于目前新疆大枣分级现状, 亟待实现自动化分级, 以提高分级效率和水果价值, 降低成本。

编程与检测 篇2

第1 章

数控机床概述

一、内容简介

数控机床是典型的机电一体化产品,是现代制造业的关键设备。本章主要讲述数控机床的基本概念和工作原理、数控机床的分类以及数控机床的技术与发展水平等。本章要求理解并掌握数控机床的基本概念和分类,了解数控技术的发展趋势以及以数控机床为基础的自动化生产系统的发展。

重点:

数控机床的基本概念 ; 数控机床的分类

难点:

数控机床的工作过程和技术性能指标、数控机床按运动控制的特点和伺服系统的类型分类。

二、掌握程度

熟悉:数控机床的基本概念与工作原理 掌握:数控机床的组成及特点 了解:数控机床的产生与发展、数控技术的发展趋势以及数控技术在先进制造技术中的作用

三、课程讲述

1.1 数控机床的基本概念

1.1.1什么是机床的数字控制

数控,即数字控制(Numerical Control,NC),在机床领域指用数字化信号对机床运动及其加工过程进行控制的一种方法。用这种控制技术控制的机床就称为“数控机床”(Numerically Controlled Machine Tool)或“NC机床”。

数控机床是一种高效、新型的自动化机床,具有广泛的应用前景。它与普通机床相比具有以下特点:

1.适应性、灵活性好;

2.精度高、质量稳定;

3.生产效率高;

4.劳动强度低、劳动条件好;

5.有利于现代化生产与管理;

分布式数字控制(Distributed Numerical Control,DNC)

柔性制造系统(Flexible Manufacturing System,FMS)

计算机集成制造系统(Computer Integrated Manufacturing System,CIMS)

6.使用、维护技术要求高。1.1.2数控机床的组成

数控机床的种类很多,但任何一种数控机床主要由控制介质、数控系统、伺服系统和机床主体四部分组成,如图1-1所示。此外数控机床还有许多辅助装置。

图1-1 数控机床的基本组成

1.1.3 数控机床的工作过程

如图1-2所示,数控机床的加工,首先要将被加工零件图纸上的几何信息和工艺信息用规定的代码和格式编写成加工程序,然后将加工程序输入到数控系统,在数控系统控制软件的支持下,经过处理与计算后,发出相应的控制指令,通过伺服系统使机床按预定的轨迹运动,从而完成零件的加工。

图1-2 数控机床的工作原理

1.1.4 数控机床的技术性能指标 数控机床的精度指标

数控机床的可控轴数与联动轴数 数控机床的运动性能指标 数控系统的技术性能指标 1.2 数控机床的分类

1.2.1 按运动控制的特点分类 点位控制数控机床 直线控制数控机床

轮廓控制的数控机床

1.2.2 按伺服系统的类型分类 开环控制的数控机床 闭环控制的数控机床 半闭环控制的数控机床 1.2.3 按工艺方法分类

金属切削类数控机床

金属成型类及特种加工类数控机床 特种加工数控机床

1.2.4 按功能水平分类

通常把数控机床分为高、中、低档三类。数控机床水平的高低主要指它们的主要技术参数,功能指标和关键部件的功能水平等内涵。

另一种分法是将数控机床分为经济型(简易)、普及型(全功能)和高档型数控机床。1.2.5 按加工方式分类

数控机床和加工中心(带刀库的数控机床)。1.3 数控机床的产生与发展及技术水平

1.3.1 数控机床的产生与发展 1.3.2 数控技术的发展趋势

1.3.3 以数控机床为基础的自动化生产系统的发展 柔性制造系统(FMS)

柔性制造系统是由两台以上的数控机床或加工中心、其他加工设备和一套能自动装卸物料的系统等组成,在计算机的控制下进行制造的自动化生产系统。它能根据制造系统任务或生产环境的变化迅速进行调整,适用于多品种、中小批量生产。其特点是高效率、高柔性及高自动化等。

计算机集成制造系统(CIMS)

计算机集成制造系统是一个集产品设计、制造、经营、管理为一体,以柔性技术、计算机技术、信息技术、自动化技术、现代管理科学为基础的多层次、多结构的复杂系统。它由4个功能分系统和2个支撑分系统构成,即由管理信息系统、产品设计与工艺设计的工程设计自动化系统、制造自动化系统(柔性制造)、服务信息系统等功能分系统,计算机网络系统及数据库系统等支撑系统组成。在CIMS系统中,综合应用了CAD、CAPP(computer aided process planning)、CAM、数控机床、加工中心、物料传输以及计算机信息管理自动化等技术,可把整个工厂的生产活动有机地联系在一起,实现全厂性综合自动化。1.3.4 数控技术在先进制造技术中的作用

1.数控机床成为现代制造业的关键设备,保证了现代制造业向高精度、高速度、高效率、高柔性化的方向发展。

2.数控机床的发展,带动了CAD、CAM、CAE、CAPP、PDM、FMC、FMS、FML、FMF和CIMS的发展。

四、课后习题或作业及答案 无

五、思考题或期末复习题

第2 章

数控加工编程基础

一、内容简介

本章是数控编程的基础,主要讲述了数控编程的基础知识,常用G代码及M代码功能指令,数控机床坐标系,数控程序段与程序格式等。本章要求熟悉数控加工程序格式以及编程步骤,熟记数控机床坐标系的确定方法和右手笛卡尔直角坐标系的应用。

重点:

数控机床的坐标系; 常规加工程序的格式。

难点:

数控机床的坐标系

二、掌握程度

熟悉:数控机床编程的步骤 掌握:数控机床代码编写 了解:自动编程方法

三、课程讲述 2.1 概

2.1.1 数控机床编程的目的与步骤

目的:程序编制是数控加工的一项重要工作,理想的加工程序不仅应保证加工出符合图纸要求的合格工件,同时应能使数控机床的功能得到合理的应用与充分的发挥,以使数控机床安全可靠及高效地工作。

内容与步骤:分析被加工零件的零件图,确定加工工艺过程;进行刀具运动轨迹坐标计算;编写程序单;制备控制介质;程序校验和首件试切等。

2.1.2 数控机床程序的编制方法

1.手工编程

从工件的图样分析、工艺过程的确定、数值计算到编写加工程序单、制作控制介质等都是人手工完成。对形状简单的工件,可以使用手工编程。手工编程既经济又及时。但对于几何形状复杂的零件,特别是具有列表曲线、非圆曲线及曲面的零件(如叶片、复杂模具),或者表面的几何元素并不复杂而程序量很大的零件(如复杂的箱体),或者工步复杂的零件,手工编程就难以胜任,因此必须用自动编程的方法。为了缩短生产周期,提高数控机床的利用率,有效解决复杂零件的加工问题,应当使手工编程向自动编程方向发展,但也要看到,手工编程是自动编程的基础,自动编程中许多核心的经验都来源于手工编程,二者是相辅相成的。

2.自动编程

自动编程也称计算机辅助编程,即程序编制工作的大部分或全部由计算机完成。典型的自动编程有人机对话式自动编程及图形交互式自动编程。2.2 字符与代码

2.2.1 字符与代码

字符(Character):用来组织、控制或表示数据的一些符号,如数字、字母、标点符号、数学运算符等。字符是机器能进行存储或传送的记号。字符也是我们所要研究的加工程序的最小组成单位。

加工程序用的字符分四类。一类是字母,它由大写26个英文字母组成。第二类是数字和小数点,它由0~9共10个阿拉伯数字及一个小数点组成。第三类是符号,由正(+)号和负(-)号组成。第四类是功能字符,它由程序开始(结束)符(如“%”)、程序段结束符(如“;”)、跳过任选程序段符(如“/”)等组成。2.2.2 数控机床功能代码

1.准备功能

准备功能(G功能)是使数控机床建立起某种加工方式的指令,如插补、刀具补偿、固定循环等。G功能由地址符G和其后的两位数字组成,从G00~G99共100种功能。

2.辅助功能

辅助功能(M功能)是用于指定主轴的旋转方向、启动、停止、冷却液的开关,工件或刀具的夹紧和松开,刀具的更换等功能。辅助功能字由地址符M和其后的两位数字组成。从M00~M99共100种功能。

2.3 数控机床的坐标系

2.3.1 坐标系及运动方向的规定

目前,国际标准化组织已经统一了标准的坐标系。我国已制订了JB3051-82《数控机床坐标和运动方向的命名》数控标准,它与ISO841等效。

标准的坐标系采用右手笛卡尔直角坐标系。这个坐标系的各个坐标轴与机床的主要导轨相平行。直角坐标系X、Y、Z三者的关系及其方向用右手定则判定;围绕X、Y、Z各轴回转的运动及其正方向+A、+B、+C分别用右手螺旋定则确定。

2.3.2 机床坐标轴的确定

确定机床坐标轴时,一般是先确定Z轴,然后再确定X轴和Y轴。

2.3.3 数控机床坐标系的原点与参考点

数控机床坐标系的原点

机床坐标系的原点也称机械原点或零点(M),这个零点是机床固有的点,由生产厂家事先确定,不能随意改变,它是其他坐标系和机床内部参考点的出发点。

不同数控机床坐标系的零点也不同。数控车床的机械零点在主轴前端面的中心上。数控铣床和立式加工中心的机床原点,一般在机床的左前下方。数控机床参考点

参考点R也称基准点,是大多数具有增量位置测量系统的数控机床所必须具有的。它是数控机床工作区确定的一个点,与机床零点有确定的尺寸联系。参考点在各轴以硬件方式用固定的凸块或限位开关实现。机床每次通电后,移动件(刀架或工作台)都要进行返回参考点的操作,数控装置通过移动件(刀架或工作台)返回参考点后确认出机床原点的位置,数控机床也就建立了机床坐标系。2.4 程序段与程序格式

2.4.1 程序段

把程序中出现的英文字母及其字符称为“地址”,如:X、Y、Z、A、B、C、%等;数字0~9(包含小数点、“+”、“-”号)称为“数字”。“地址”和“数字”的组合称为“程序字”,程序字(亦称代码指令)是组成数控加工程序的最基本单位。如N010、G01、X-100、Z200、F0.1等。

程序由若干个程序段组成,程序段是由若干程序字和程序段结束指令构成。如N010 G01 X-100 Z200 F0.1;就是一个程序段。在书写和打印程序段时,每个程序段一般占一行,在屏幕显示程序时也是如此。

2.4.2 程序段格式 可变程序段格式 固定程序段格式

使用分隔符的固定程序段格式 2.4.3 常规加工程序的格式

四、课后习题或作业及答案

五、思考题或期末复习题

第3章

数控加工工艺与图形的数学处理

一、内容简介

本章讲述数控加工工艺与图形数学处理的基本内容与方法,并以典型实例讲述了零件的数控加工工艺分析及其工艺文件的制定。是数控机床编程中的基本内容,为学习后续各章内容打好基础。本章要求理解数控加工工艺分析与图形数学处理的基本概念和基本内容,掌握数控加工工艺分析与图形数学处理的方法,并能熟练地制定数控加工工艺文件。

重点:

数控加工工艺分析与图形数学处理的基本概念;数控加工工艺分析的内容与方法,数控加工工艺文件的制定

难点:

数控加工工艺文件的制定

二、掌握程度

熟悉:数控加工工艺分析

掌握:数控加工工艺文件的制定 了解:图形数学处理的基本概念

三、课程讲述 3.1 数控加工工艺

数控加工工艺分析的重要性

1.对于一个零件来说,并非全部加工工艺过程都适合在数控机床上完成,而往往只是其中的一部分工艺内容适合数控加工。

2.在数控加工中无论是手工编程还是自动编程,编程以前都要对所加工的零件进行工艺分析,拟定加工方案,选择合适的刀具,确定切削用量。

3.在编程中,对一些工艺问题(如对刀点、加工路线等)和图形(如图形的基点、节点等)也需做一些处理。因此程序编制中的工艺分析是一向十分重要的工作。3.1.1 机床的合理选用

数控机床通常最适合加工具有以下特点的零件

1)多品种、小批量生产的零件或新产品试制中的零件。2)轮廓形状复杂,对加工精度要求较高的零件。

3)用普通机床加工时,需要有昂贵的工艺装备(工具、夹具

和模具)的零件。4)需要多次改型的零件。

5)价值昂贵,加工中不允许报废的关键零件。6)需要最短生产周期的急需零件。

3.1.2 数控加工工艺性分析

从数控加工的可能性和方便性两方面分析其工艺性。

• 零件图的尺寸标注应符合编程方便的原则

(1)零件图上尺寸标注方法应适应数控加工的特点。(2)构成零件轮廓的几何元素的条件应充分。

• 零件的结构工艺性应符合数控加工的特点

(1)零件的内腔和外形最好采用统一的几何类型和尺寸。

(2)内槽圆角的大小决定着刀具直径的大小,因而内槽圆角半径不应过小。(3)零件铣削底平面时,槽底圆角半径r不应过大。

(4)应采用统一的基准定位。

3.1.3 加工方法与加工方案的确定

加工方法的选择

选择原则:保证加工表面的加工精度和表面粗糙度的要求。

1.结合零件的形状、尺寸大小和热处理要求等全面考虑。

例如,对于IT7级精度的孔采用镗削、铰削、磨削等加工方法均可达到精度要求,但箱体上的孔一般采用镗削或铰削。一般小尺寸的箱体孔宜选择铰孔,当孔径较大时则应选择镗孔。2.考虑生产率和经济性的要求,以及工厂的生产设备等实际情况。3.1.4 工序与工步的划分

数控加工工艺路线设计与普通机床加工工艺路线设计的主要区别,在于它往往不是指从毛坯到成品的整个工艺过程,而仅是几道数控加工工序工艺过程的具体描述。因此在工艺路线设计中一定要注意到,由于数控加工工序一般都穿插于零件加工的整个工艺过程中,因而要与其它加工工艺衔接好。3.1.5 零件的定位与安装 定位安装的基本原则

1)力求设计、工艺与编程计算的基准统一。

2)尽量减少装夹次数,尽可能在一次定位装夹中加工出全部

待加工面。3)避免采用占机人工调整时间长的装夹方案

4)夹紧力的作用点应落在工件刚性较好的部位。3.1.6 数控加工刀具及对刀仪

3.1.7 切削用量的确定

切削用量包括主轴转速(切削速度)、背吃刀量、进给量。

合理选择切削用量的原则:

粗加工时,一般以提高生产率为主,但也应考虑经济性和加工成本;半精加工和精加工时,应在保证加工质量的前提下,兼顾切削效率、经济性和加工成本。具体数值应根据机床说明书、切削用量手册,并结合经验而定。

3.1.8 数控加工路线的确定

在数控加工中,刀具刀位点相对于工件运动的轨迹称为加工路线。加工路线的确定原则:

1)加工路线应保证被加工零件的精度和表面粗糙度,且效率较高。2)使数值计算简单,以减少编程工作量。

3)应使加工路线最短,这样既可减少程序段,又可减少空刀时间。

此外,确定加工路线时,还要考虑工件的加工余量和机床、刀具的刚度等情况,确定是一次刀,还是多次走刀来完成加工,以及在铣削加工中是采用顺铣还是逆铣等。

3.1.9 工艺文件的制定

零件的加工工艺设计完成后,就应该将有关内容填入各种相应的表格(或卡片)中。以便贯彻执行并将其作为编程和生产前技术准备的依据,这些表格(或卡片)被称为工艺文件。数控加工工艺文件除包括机械加工工艺过程卡、机械加工工艺卡、数控加工工序卡、数控加工刀具卡。另外为方便编程也可以将各工步的加工路线绘成文件形式的加工路线图。

3.2 图形的数学处理

图形的数学处理就是根据零件图样的要求,按照已确定的加工路线和允许的编程误差,计算出数控系统所需输入的数据。

图形数学处理的内容主要有三个方面,即基点和节点计算、刀位点轨迹计算和辅助计算。

3.2.1 基点计算

各几何元素间的连接点称为基点。如两直线的交点,直线与圆弧的交点或切点,圆弧与圆弧的交点或切点,圆弧或直线与二次曲线的切点或交点等。

基点计算方法:根据图纸给定条件,用几何法、解析几何法、三角函数法或用AutoCAD画图求得。

3.2.2 节点计算

在满足允许编程误差的条件下,用若干直线段或圆弧端分割逼近给定的曲线。相邻直线段或圆弧段的交点或切点称为节点。

3.2.3 刀位点轨迹计算

刀位点轨迹计算又称刀具中心轨迹计算,实际就是被加工零件轮廓的等距线计算。

具体求法:首先分别写出零件轮廓曲线各程序段的等距线方程(距离为刀具半径r刀),再求出各相邻程序段等距线的基点或节点坐标,即求解等距线方程的公共解。

3.2.4 零件轮廓为列表曲线的数学处理

列表曲线的数学处理较为复杂,一般的处理方法是根据列表点选择一个或多个插值方程描述(常称为第一次曲线拟合),再根据插值方程采用直线—圆弧插补方法逼近列表曲线或曲面(常称为第二次曲线拟合)。

3.2.5 工件轮廓为简单三坐标立体型面的数值计算 球头铣刀数控加工一般只有3个垂直移动坐标的数控机床上进行,要求刀轴方向始终保持不变(一般为z轴方向),因此要求立体型面在刀轴方向上为单调曲面。为改善切削性能,有益于加工速度的改善和加工表面质量的提高,将加工曲面平坦方向倾斜一定角度。

3.2.6 辅助计算

3.3 典型零件的数控加工工艺分析

四、课后习题或作业及答案

五、思考题或期末复习题

第4 章

数控车床编程

一、内容简介

本章讲述数控车床的编程特点及各编程指令的使用,数控车床的用途、布局、主要参数及其操作,并通过典型实例讲述了数控车削加工程序的编制。

重点:

数控车床的编程特点及各编程指令的使用; 数控车床编程的综合运用。

难点:

车削加工循环;刀具补偿;子程序调用;宏程序

二、掌握程度

了解:数控车床的用途、布局、主要参数及其操作

掌握:数控车床的编程特点及各编程指令的使用,并能熟练地编制数控车削加工程序。熟悉:数控车加工过程

三、课程讲述 4.1 概述

4.1.1 数控车床的用途、布局

数控车床主要用来加工轴类零件的内外圆柱面、圆锥面、螺纹表面、成形回转体表面等。对于盘类零件可进行钻孔、扩孔、铰孔、镗孔等加工。机床还可以完成车端面、切槽、倒角等加工。

4.1.2 数控车床的主要技术参数

1.机床的主要参数

允许最大工件回转直径—— 460mm;

最大切削直径——292mm 最大切削长度——650mm;主轴转速范围 —— 50~2000r/min(无级)床鞍定位精度——X轴:0.015/100mm ;

Z轴:0.025/300mm 床鞍重复定位精度 ——X轴:±0.003mm ;

Z轴:±0.005mm 刀架有效行程

——X轴:215mm ;Z轴:675mm 快速移动速度——X轴:12m/min ;Z轴:16m/min 刀具规格——车刀20mm×20mm;镗刀φ8mm~φ40mm 自动润滑—15分/次;卡盘最大夹紧力—42140N;安装刀具数—12把

尾座套筒行程—— 90mm;主轴电动机功率——11/15kW 进给伺服电动机——X轴:AC 0.6Kw;Z轴:AC 1.0kW 2.数控系统的主要技术规格

控制轴数——2轴(X轴、Z轴,手动方式时仅1轴)联动轴数——2轴

最小输入增量——X轴:0.001mm ;Z轴:0.001mm 最小指令增量——X轴:0.0005mm/P; Z轴:0.001 mm/P 最大编程尺寸—— ±9 999.999mm 程序存储量——256M;程序号—— O+4位数字

此外,还有直线插补功能、全象限圆弧插补功能、进给功能、主轴功能、刀具功能、辅助功能、编程功能、安全功能、键盘式手动数据输入(MDI)功能、通讯功能、CRT数据显示功能、丝杠间隙补偿、螺距误差补偿、刀具半径及位置补偿和故障自诊断功能等。

4.2 数控车削加工程序的编制

4.2.1 数控车床的编程特点

(1)在一个程序段中,可以采用绝对值编程、增量值编程或混合编程。

(2)直径方向用绝对坐标编程时X以直径值表示,用增量坐标编程时以径向实际位移量的2倍值表示,并附上方向符号。

(3)数控装置具备不同形式的固定循环。

(4)本机床具有刀具半径自动补偿功能(G41,G42),可直接按工件轮廓尺寸编程,无需先计算补偿量。(5)不同组G代码可编写在同一程序段内均有效;相同组G代码若编写在同一程序段内,后面的G代码有效。

(6)对于车削加工,进刀时采用快速走刀接近工件切削起点附近的某个点,再改用切削进给,以减少空走刀的时间,提高加工效率。切削起点的确定与工件毛坯余量大小有关,应以刀具快速走到该点时刀尖不与工件发生碰撞为原则。4.2.2 编程坐标系的设定

1.机床坐标系的建立

机床原点:机床原点为机床上的一个固定点,数控车床一般将其定义在主轴前端面(或卡盘后端面)的中心。

机床坐标系:是以机床原点为坐标原点建立的X、Z轴两维坐标系。Z轴与主轴中心线重合,为纵向进刀方向;X轴与主轴垂直,为横向进刀方向。

机床参考点:是指刀架中心退离距机床原点最远的一个固定点。该位置由设置在机床X向、Z向滑板上的机械挡块通过行程开关来确定。2.编程坐标系(或称工件坐标系)的设定

编程坐标系是用于确定工件几何图形上各几何要素(如点、直线、圆弧等)的位置而建立的坐标系,是编程人员在编程时使用的。编程坐标系的原点就是编程原点。而编程原点是人为设定的。数控车床工件原点一般设在主轴中心线与工件左端面或右端面的交点处。设定编程坐标系的指令格式:

G50 X_ Z_ ; 说明:

1)G50表示编程坐标系的设定,X、Z表示编程原点的位置。

2)程序如设该指令,则应在刀具运动指令之前设定。

3)当系统执行该指令后,刀具并不运动,系统根据G50指令中的X、Z值从刀具起始点反向推出编程原点。

4)在G50程序段中,不允许有其他功能指令,但S指令除外,因为G50还有另一种功用(设定恒切削速度)。

4.2.3 常用编程指令的使用

1.快速定位G00 2.直线插补G01 3.圆弧插补G02、G03 4.程序延时(暂停)G04 7.参考点返回检测G27 8.自动返回参考点G28 9.主轴控制G96、G97 11.螺纹车削G32 4.2.4 车削加工循环

1.单一外形固定循环G90、G92、G94 2.复合固定循环指令

这类循环功能用于无法一次走刀即能加工到规定尺寸的场合,主要在粗车和多次走刀车螺纹的情况下使用。如在一根棒料上车削阶梯相差较大的轴,或车削铸、锻件的毛坯余量时都有一些重复进行的动作,且每次走刀的轨迹相差不大。利用复合固定循环指令,只要编出最终走刀路线,给出每次切除的余量深度或循环的次数,机床即可自动地重复切削,直到工件完成为止。4.2.5 刀具补偿功能

由于刀具的安装误差、刀具磨损和刀具刀尖圆弧半径的存在等,因此在数控加工中必须利用刀具补偿功能予以补偿,才能加工出符合图纸要求的零件。此外合理的利用刀具补偿功能还可以简化编程。

刀具功能又称T功能,它是进行刀具选择和刀具补偿的功能。格式:

T ××

××

刀具号

刀具补偿号

说明:1)刀具号从01~12;刀具补偿号从00 ~16,其中00表示取消某号刀的刀具补偿。

2)通常以同一编号指令刀具号和刀具补偿号,以减少编程时的错误,如T0101表示01号刀调用01补偿号设定的补偿值,其补偿值存在刀具补偿存储器内。1.刀具位置补偿 2.刀尖圆弧半径补偿

3.实现刀尖圆弧半径补偿功能的准备工作 4.刀尖圆弧半径补偿的方向

5.刀具半径补偿的建立或取消指令格式 4.2.6

辅助功能(M功能)

主要控制机床主轴或其他机电装置的动作,还可用于其他辅助动作,如程序暂停、程序结束等。

1.程序停止M00 2.选择停M01 3.程序结束M30、M02 4.主轴旋转指令M03、M04、M05 5.冷却液开关M08、M09 6.调子程序(M98),子程序返回(M99)4.2.7 宏程序简介

所谓宏程序就是把一组数值或变量预先存于一组地址中,当需要时,就用特殊的调用指令调用该变量的地址即可,这些特殊的调用指令就叫宏程序指令,简称宏指令,由宏指令组成的程序叫宏程序。

4.3 数控车床的操作面板及操作简介

4.3.1 操作面板

4.3.2 机床操作简介

1.手动返回机床参考点 2.机床的急停

3.刀具补偿值的输入和修改 4.4 车削加工编程实例

四、课后习题或作业及答案

五、思考题或期末复习题

第5 章

数控铣床编程

一、内容简介

本章讲述数控铣床的编程特点及各编程指令的使用和数控铣床的用途、布局、主要参数及其操作,并通过典型实例讲述了数控铣削加工程序的编制。

重点:

数控铣削编程基础; 数控铣床基本编程方法

难点:

刀具补偿、子程序、计算参数和程序跳转、循环

二、掌握程度

了解:控铣床的用途、布局、主要参数及其操作

掌握:控铣床的编程特点及各编程指令的使用,并能熟练地编制数控铣削加工程序 熟悉:数控铣加工过程

三、课程讲述 5.1 概述

5.1.1 数控铣床的用途、布局

XK5032A是一种可以加工复杂轮廓的中型立式数控铣床,数控系统采用高性能的 西门子SINUMERIK 802D系统。该系统抗干扰性能好、可靠性高、功能强,可实现三轴控制和三轴联动,除可完成复杂的轮廓加工外,还能实现镜像加工、轮廓放大或缩小、钻孔和铣削循环加工等。

5.1.2 数控铣床主要技术参数 1.基本规格

工作台工作面积(长×宽)工作台最大纵向行程 工作台最大横向行程 工作台最大垂直行程 主轴套筒移动距离

主轴端面到工作台面距离 主轴转速范围 主轴转速级数 工作台进给量 纵、横向快进速度

垂向快进速度主电动机功率 机床外形尺寸(长×宽×高)

2.数控系统的主要技术规格 控制轴数 联动轴数 最小设定单位 最小移动单位 最大指令值 定位精度 重复定位精度 程序存储量 5.2 数控铣削编程基础

5.2.1 数控铣床的编程特点

(1)铣削是机械加工中最常用的方法之一,主要包括平面铣削和轮廓铣削。二坐标联动用于加工平面零件轮廓;三坐标及以上的数控铣床用于难度较大的复杂工件的立体轮廓加工。

(2)数控铣床的数控装置具有多种插补方式。一般都具有直线插补和圆弧插补,有的还具有极坐标插补、抛物线插补、螺旋线插补等多种插补功能。

(3)编程时要充分熟悉机床的所有性能和功能。如刀具长度补偿、刀具半径补偿、固定循环、镜像、旋转等功能。

(4)由直线、圆弧组成的平面轮廓铣削的数学处理比较简单。非圆曲线、空间曲线和曲面的轮廓铣削加工,数学处理比较复杂,一般要采用计算机辅助计算和自动编程。5.2.2 基本编程功能指令

数控铣床与数控车床的编程功能相似,数控铣床的编程功能指令也分准备功能和辅助功能两大类。以西门子SINUMERIK 802D数控系统为例介绍数控铣床的基本编程功能指令。

1、程序结构

(1)程序名

SINUMERIK 802D数控系统程序名的命名规则是开始的两个符号一般是字母、其后的符号可以是字母、数字或下划线、最多为16个字符,但不得使用分隔符。例如将程序命名为AB001、L10等。

(2)程序段

程序段是由若干字段和结束符组成。段结束符表示程序段结束。在程序编写中进行换行或按输入键可以自动产生段结束符。编程时大写字母和小写字母没有区别。所以在计算机上编写并通过通信方式输入数控系统的程序,字母可以不分大小写。但一般用大写字母。

2、准备功能G

G功能指令是用地址字符G和后面的数字来表示的 3.辅助功能M M功能指令是用地址字M及后面的数字表示的,其书写格式和含义同数控车床。

4.其他功能

(1)F功能

进给速度F是刀具轨迹速度,它是所有移动坐标轴速度的矢量和。G94为进给速度(mm/min);G95为进给率(mm/r)(只有主轴旋转控制才有意义)。

(2)S功能

S功能指令表示数控铣床主轴的转速,单位为r/min。主轴的旋转方向和停止转动通过M指令(M3主轴顺时针转动;M4主轴逆时针转动;M5主轴停止转动)来实现,如编程M3 S1000表示主轴顺时针转动,转速为1000r/min。

(3)T功能

T功能指令表示选择刀具,用T1~T32表示,如T2表示选用2号刀具。5.3 数控铣床基本编程方法 5.3.1 坐标轴运动

1.快速移动指令G0

快速移动指令G0用于快速定位刀具,模态有效。

2.直线插补G

1本指令使刀具以直线插补方式从起始点移动到目标点,并以F编程的进给速度运行。

3.圆弧插补G2、GG2指令表示在指定平面顺时针插补;G3指令表示在指定平面逆时针插补。平面指定指令与圆弧插补指令的关系见图5-11所示。

5.3.2 倒圆和倒角

在一个轮廓拐角处可以插入倒角或倒圆,指令CHF=…或者RND=…与加工拐角的轴运动指令(G1、G2、G3)一起写入到程序段中,只在当前平面中执行该功能。

5.3.3 刀具补偿 本系统具有刀具长度补偿和半径补偿功能,刀具的有关参数被单独输入到一专门的数据区,包括刀具长度及半径的基本尺寸、刀具磨损尺寸和类型等参数。在程序中只要调用所需的刀具号及其补偿参数,控制器就利用这些参数执行所要求的轨迹补偿,就能加工出满足要求的工件。

5.3.4 子程序

(1)用子程序编写经常重复进行的加工,比如某一确定的轮廓形状。子程序的结构与主程序的结构相同,在子程序中最后一个程序段用M02指令结束程序运行,也可以用RET指令结束子程序,但RET指令要求占用一个独立的程序段。

(2)子程序名可以自由选择,其方法与主程序中程序名的选取方法一样,但扩展名不同,主程序的扩展名为“.MPF”,在输入程序名时系统能自动生成扩展名,而子程序的扩展名“.SPF”必须与子程序名一起输入。

(3)在子程序中,还可以使用地址字符L,其后面的值可以有7位(只能为整数),地址字符L之后的0均有意义,不能省略。

(4)在一个程序中(主程序或子程序)可以直接利用程序名调用子程序。子程序调用要求占用一个独立的程序段。如果要求多次连续地执行某一子程序,则在编程时必须在所调用子程序的程序名后的地址P下写入调用次数,最大调用次数可达9999(P1~P9999)。

(5)在子程序中可以改变模态有效的G功能,比如G90到G91的变换。在返回调用程序时要注意检查一下所有模态有效的功能指令,并按照要求进行调整;对于R参数也需同样注意,不要无意识地用上级程序界面中所使用的计算参数R来修改下级程序界面的计算参数。(6)本系统子程序嵌套最多为四级 5.3.5 计算参数和程序跳转

要使一个NC程序不仅仅适用于特定数值下的一次加工,或者必须要计算出数值的情况,这两种情况均可以使用计算参数。你可以在程序运行时由控制器计算或设定所需要的数值;也可以通过操作面板设定参数数值。如果参数已经赋值,则它们可以在程序中对由变量确定的地址进行赋值。

在加工非圆曲面时,系统没有定义指令,这就需要借助计算参数R,并应用程序跳转等手段来完成曲面的加工。5.3.6 循环

循环是指用于特定加工过程的工艺子程序,比如用于钻孔、镗孔、铰孔、攻丝、排列孔加工、凹槽切削和坯料切削等,只要改变参数就可以使这些循环应用于各种具体加工过程,可大大减少编程工作量。

5.4 数控铣床的操作面板及操作简介

5.4.1.操作面板简介

5.4.2 机床操作简介 5.5 铣削加工编程实例

四、课后习题或作业及答案

网络编程课程体系构建与优化 篇3

关键词:网络编程;课程体系;教学方法;教学改革

作者简介:吴雪丽(1975-),女,河南郑州人,郑州轻工业学院计算机与通信工程学院,副教授;李建春(1976-),男,河南新乡人,郑州轻工业学院计算机与通信工程学院,讲师。(河南郑州450002)

基金项目:本文系河南省教育厅自然科学研究计划项目(项目编号:2011A520047)、郑州轻工业学院博士科研基金资助项目(项目编号:2009BSJJ005)、郑州轻工业学院青年教师教学改革与研究课题资助项目的研究成果。

中图分类号:G642.0     文献标识码:A     文章编号:1007-0079(2012)10-0056-02

随着计算机技术和通信网络技术的飞速发展,社会对网络人才的需求十分強烈,网络通信编程领域变得越来越重要。网络编程技术要求学生在熟练掌握计算机网络基本理论的基础上,运用高级编程语言开发网络通信应用程序。[1]网络编程的教学需要兼顾基础性和前沿性两大特点,既要求学生掌握网络编程的基本理论和知识,又要让他们关注网络最新发展动态。如何让学生及时了解并掌握本学科研究的热点问题并激发学生的兴趣、为将来从事网络编程应用的研发工作打好基础,是教学改革必须考虑并要解决的重要问题。抓住学科发展特点,近几年笔者进行了网络编程课程体系的改革,围绕课程的教学理念,将基础理论知识与学科前沿发展相结合、将掌握基本理论与培养创新意识相结合、将理论教学与实践教学相结合。教学实践表明,学生的主动性被有效地调动起来,教学效果得到明显提高。

一、课程体系构建

网络编程与程序设计技术、操作系统、数据结构、计算机网络、网络协议分析等课程内容紧密联系且相互交叉,[2]例如:进程和线程是操作系统中的重要概念,IP地址和端口是计算机网络中的基本概念,而网络协议编程等章节与计算机网络和网络协议分析等课程有较多的重复内容。网络编程课程教学内容覆盖面广,授课难度较大。如果试图在有限的课时下兼顾所有内容,将使学生感觉枯燥乏味,丧失学习兴趣。

针对本学科的特点,在教学改革中首先对课程体系和知识结构进行重整,修改教学大纲。网络编程主要包括可视化编程、面向对象编程、多线程编程、套接字编程、网络协议编程和网络应用编程等。其中面向对象编程和多线程编程是网络编程涉及的关键技术和难点,网络协议编程和网络应用编程是本课程的核心内容。为了更好地阐明关键技术、突出核心内容、强化实践技能,将网络编程课程分四阶段实施:网络编程基础、网络编程基础实训、网络高级编程以及网络高级编程实训。调整后网络编程课程体系如图1所示。在内容精简的基础上,调整后课程的理论教学共60学时,实验教学共80学时,实训教学共160学时。调整后的理论教学与实验教学同步进行,实训教学在随后的学期进行。

调整后的教学安排在保留关键技术和核心内容的基础上,大胆地删减了与其他课程交叉的内容,大幅度地增加了实践教学环节在整体教学中所占的比例。调整后的理论教学内容具体安排如表1所示。

二、优化教学内容

课堂教学是学生获取知识的主要形式,实践教学是学生掌握应用能力的主要方式。

1.优化理论教学内容

理论教学是学生获取知识的主要形式,照本宣科的教学会让学生乏味与疲劳。理论教学内容可以从两个方面进行优化。

(1)以案例分析的形式将基本概念的理解与实践技能训练相结合。网络编程的理论基础大部分已经在计算机网络和网络协议分析等课程中学习过。因为上述课程偏重理论知识的介绍,所以网络编程课程首先要帮助学生完成理论知识到实践技能的衔接。课堂教学中采用案例式教学,每学习一种编程技术,都要以实际案例的形式引入。例如,在讲授面向对象编程技术时,先演示学生熟悉的贪吃蛇游戏,再介绍类、对象、继承和多态的概念,继而引导学生分析在贪吃蛇游戏中有哪些类及类间的关系。例如,在讲授网络协议编程技术时,先演示具体的网络应用程序,再介绍相应的协议规范和C#类库,继而引导学生对案例进行分析和设计,最后由教师讲授案例的实现。网络协议编程理论教学中使用的案例如表2所示。使用案例教学法形象地将理论与实践结合起来,提高了学生的学习兴趣。

(2)将最新研究成果融化到教学内容中。当前计算机网络技术发展迅速,在教学中把该领域的最新科研成果和亟待解决的关键问题融化到理论教学内容中。例如,在讲授网络应用编程技术时,介绍P2P技术的发展历程及其在文件交换、科学计算和视频点播等领域的应用。紧跟学科发展的步伐,在理论教学中穿插介绍新兴技术和前沿问题,可以有效增强学生对该课程的学习兴趣。

2.优化实践教学内容

网络编程课程的实践性很强,在实践教学内容设置需兼顾基础性与创新性。

(1)在实验教学环节中,设置重复性实验、模拟性实验和分析性实验。实验教学环节在整个网络编程课程教学中占有重要地位。实验教学环节与网络编程课程理论教学环节在同一学期进行,合理安排一些与理论教学内容同步的重复性实验、模拟性实验和分析性实验,培养学生的独立动手能力和分析问题的能力。例如,在讲授网络协议编程技术时,实验教学环节可以安排表2中的案例作为实验。学生可以完全依据上述案例的功能进行重复性实验,也可以改进上述案例的功能进行模拟性实验。该类实验难度较低,有利于理论知识的掌握并锻炼学生的独立动手能力。例如,在讲授网络应用编程时,实验教学环节可以安排分析性实验,如:局域网网络监控系统。该实验涉及的基本原理都已讲授,但是系统的需求分析、模型设计和编码都要由学生独立完成。该类实验难度较高,有利于锻炼学生的分析问题、解决问题和独立动手的能力。

(2)在实训教学环节设置综合性实验。实训教学环节采用团队协作的形式,模拟真实项目的开发过程,在网络编程课程理论教学环节结束后的一学期进行,安排一个稍具规模的网络编程应用开发项目,培养学生的团队协作能力和综合分析能力。此时学生已经掌握了网络编程的基本技能,所以安排的项目不能规模太小,否则可能出现团队中一人包干的现象。可以采用稍具开放性的项目,多人在线棋牌游戏系统,团队可选择一种或多种游戏,如,中国象棋、五子棋或拱猪等。该类实验规模较大,适合3至5人的团队协作完成,有利于锻炼学生的团队协作能力,提高综合分析和独立动手能力,培养项目管理和科研创新能力。

三、改进教学方法

为了使网络编程课程的教学水平与世界接轨,在课堂教学中积极采用多种教学方法。

1.采用研讨式教学法培养学生的科研创新能力

网络编程不仅理论性强,而且与应用紧密结合,具有很强的实践性。传统的以教师为中心、学生处于从属地位、单向信息传递式教学方法不仅不利于培养学生的科技创新能力,还阻碍学生的独立思考。研讨式教学法是由教师引导学生之间的相互交流、启发、补充和争论,使学生对纷繁复杂的事物之间的关系有所理解,让他们将已有的感性认识上升到理性认识,从而形成一定水平的科学概念。在网络编程的课堂教学中选取1至2个案例,采用研讨式教学法。教师预先选定案例,学生课下查阅文献并分组讨论,课堂上学生分组汇报各自的设计方案并讨论方案的异同,实验环节学生独立完成该案例。整个案例研讨过程中,教师除了负责选定案例,不干涉学生的讨论,也不设定标准答案,激发学生自己的主动性和创造性。

2.采用双语教学法,提高学生的信息获取能力

网络编程技术参考资料中的优质资源大部分都是英文文献。学生如果能够阅读英文资料,就能够及时从这些优质资源中获取信息,了解网络技术发展的动态、趋势,更深刻地理解理论知识。[3]所以,开展网络编程课程双语教学是非常必要的。在实施双语教学法中,选取英文教材与中文教材相结合的形式,以中文授课为主逐步添加英文授课比重,辅以英文PPT,逐步提高学生英文文献的阅读能力。

四、结论

本次教学改革从课程体系、教学内容和教学方法三个方面对网络编程课程教学进行了讨论,提出了网络编程四阶段课程体系,用案例衔接理论与实践,引入研讨式教学法和双语教学法等改革措施。完成上述各项教学改革内容,关键还需要教师自身不断地更新理论知识、提高科研业务水平并投入工作热情,以保证网络编程课程教学的趣味性与先进性有机地结合。实践证明课程改革提高了学生的学习兴趣和实践技能,并使网络编程课程的教学质量得到认可。

参考文献:

[1]刘琰,常斌,等.面向能力培养的网络编程技术课程教学方法探讨[J].

计算机教育,2010,(18):52-55.

[2]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2009.

[3]林卫国.计算机网络课程双语教学的实践[J].计算机教育,2010,(13):98-100.

(责任编辑:宋秀丽)

编程与检测 篇4

关键词:视频镜头检测,VC++ Matlab混合编程,颜色直方图

0引言

随着网络与计算机技术的迅速发展, 单调的文本信息已不再满足人们的需要, 多媒体内容日益进入人们的生活, 数字视频得到了越来越多的应用。于是, 相关的视频处理的研究也越来越多。镜头分割是视频处理的第一步, 是随后的高层内容分析、分类、索引和查询的基础。镜头分割的准确性将直接影响到后续处理的效果。因此, 视频镜头的分割算法, 从一开始就得到广泛的重视, 它在基于内容的视频分析和检索中也有着最长的研究历史和最丰富的研究成果。所以对视频镜头检测技术的研究有着很强的现实意义。

1基于Matlab引擎的VC++与Matlab混合编程方法

Matlab Engine是指一组Matlab提供的接口函数, 支持C语言, Matlab Engine采用C/S (客户机/服务器) 模式, Matlab作为后台服务器, 而C程序作为前台客户机, 通过Windows的动态控件与服务器通信, 向Matlab Engine传递命令和数据信息, 从Matlab Engine接受数

据信息。用户可以在前台应用程序中调用这些接口函数, 实现对Matlab Engine的控制。采用这种方法几乎能利用Matlab全部功能。

基于VC和Matlab混合编程是很多熟悉VC++编程而又需要进行科学计算、数据仿真的科研人员常用的一种方式, 其中最简单也最直接的方法就是调用Matlab引擎。下面将对本设计中用到的调用Matlab引擎的方式及调用语句做出介绍。

所谓Matlab引擎 (engine) , 是指一组Matlab提供的接口函数, 支持C/C++、Fortran等语言, 通过这些接口函数, 用户可以在其它编程环境中实现对Matlab的控制。可以主要功能有:①打开/关闭一个Matlab对话;② 向Matlab环境发送命令字符串;③ 从Matlab环境中读取数据;④ 向Matlab环境中写入数据。

与其它各种接口相比, 引擎所提供的Matlab功能支持是最全面的。通过引擎方式, 应用程序会打开一个新的Matlab进程, 可以控制它完成任何计算和绘图操作。对所有的数据结构提供100%的支持。同时, 引擎方式打开的Matlab进程会在任务栏显示自己的图标, 打开该窗口, 可以观察主程序通过engine方式控制Matlab运行的流程, 并可在其中输入任何Matlab命令。

实际上, 通过引擎方式建立的对话, 是将Matlab以ActiveX控件方式启动的。在Matlab初次安装时, 会自动执行一次:matlab /regserver将自己在系统的控件库中注册。如果因为特殊原因, 无法打开Matlab引擎, 可以在Dos命令提示符后执行上述命令, 重新注册。 要在VC中成功编译Matlab引擎程序, 必须包含引擎头文件engine.h并引入Matlab对应的库文件libmx.lib、libmat.lib、libeng.lib。具体的说, 打开一个工程后, 做如下设置 (以VC6为例) :① 通过菜单工程/选项, 打开设置属性页, 进入Directories页面, 在目录下拉列表框中选择Include files, 添加路径:"C:matlabexterninclude" (假定matlab安装在C:matlab目录) ;②选择Library files, 添加路径:C:matlabexternlibwin32microsoftmsvc60;③通过菜单工程/设置, 打开工程设置属性页, 进入Link页面, 在Object/library modules编辑框中, 添加文件名libmx.lib libmat.lib libeng.lib。 以上步骤①、②只需设置一次, 而步骤③对每个工程都要单独设定下面将对引擎相关函数做出介绍。 在调用Matlab引擎之前, 首先应在相关文件中加入一行:#include "enging.h", 本次设计中用到的相关函数及介绍如下

引擎的打开和关闭engOpen-打开Matlab engine

函数声明:Engine *engOpen (const char *startcmd) ; 参数startcmd是用来启动Matlab引擎的字符串参数, 在Windows操作系统中只能为NULL。函数返回值是一个Engine类型的指针, 它是在engine.h中定义的engine数据结构。EngClose-关闭Matlab 引擎函数声明:int engClose (Engine *ep) ; 参数ep代表要被关闭的引擎指针。函数返回值为0表示关闭成功, 返回1表示发生错误。 例如, 通常用来打开/关闭Matlab引擎的代码如下:Engine *ep; //定义Matlab引擎指针。if (! (ep=engOpen (NULL) ) ) //测试是否启动Matlab引擎成功。{MessageBox ("Can't start Matlab engine!" ) ;exit (1) ;}. ………… engClose (ep) ; //关闭Matlab引擎。创建一个字符串类型并初始化为字符串。

mxArray *mxCreateString (const char *str) ;

向Matlab发送命令字符串engEvalString-发送命令让Matlab执行。函数声明:int engEvalString (Engine *ep, Const char *string) ; 参数ep为函数engOpen返回的引擎指针, 字符串string为要matlab执行的命令。函数返回值为0表示成功执行, 返回1说明执行失败 (如命令不能被Matlab正确解释或Matlab引擎已经关闭了) 。

2基于直方图的转场检测算法

基于直方图的算法是最普遍的场景分割方法, 它处理起来简单方便, 而且对于大多数视频, 能达到比较好的效果。现对几种有代表性的算法作一比较。

基于直方图的算法是在基于像素的比较上发展来的。基于像素的算法计算两帧中每个对应像素的亮度平均绝对变化值, 第k帧和第k+l帧的帧差异值定义为:

undefined (1)

式中M和N分别是帧水平方向和垂直方向的像素数, Ik (x, y) 和 Ik+l (x, y) 分别是第k帧和第k+l帧在 (x, y) 处的亮度值。该算法对帧内各像素的变化很敏感, 在镜头转换时会引起帧差值z 的跳变, 但是对镜头内的对象和摄像机的运动也过分敏感, 视频内对象和摄像机镜头的运动都会引起很多像素亮度的改变, 从而使z 值变大, 导致视频镜头边界的误判。

解决这个问题的方法是利用帧直方图, 基于直方图的算法通常是将相邻帧的各个像素的灰度、亮度或颜色等分成N个等级, 再针对每个等级统计像素数做成直方图比较, 对每一帧计算直方图差值的公式如下:

undefined (2)

其中N是灰度级数或颜色数等, M是一帧的像素数。该方法统计了总体的灰度或颜色分布数量, 它对镜头内的运动和摄像机的慢速运动有着良好的容忍能力, 只是在镜头内容快速变化和镜头渐变时可能会引起误检或漏检。

上述方法是计算整体的灰度或颜色的变化, 而没有考虑镜头内局部的运动。若局部运动引起灰度或颜色产生较大的变化就会导致误检。为了减少运动、干扰等引起的帧差值的变化, 可以将各帧分块处理, 将每个帧分成4*4 个大小相同的块, 分别比较每个块的颜色直方图, 差值最大的块被剔除, 余下块的直方图差值再做帧差值的计算。该方法对检验包含摄像机镜头的推移和缩放是有改进效果的, 但是对检测诸如淡入淡出等特殊效果就会失败。同时在某些光线变化比较剧烈的情况下, 帧差值z也会受到较大干扰。

在上述算法中, 定义好z后, 通常再确定一域值T, 若z>T, 则镜头边界存在。而视频镜头的转换有切变与渐变之分, 它们的特征是不同的。通常渐变过程的帧差异值幅度要比切变小, 但是渐变有一个持续过程。用单一的域值来判断难以适应各种情况。为此, 产生了双域值的算法来分别检测镜头切变和渐变。若帧差异值大于Th, 则认为发生了镜头切变, 若帧差异值小于Th大于Tl, 则认为开始发生镜头渐变, 此时累加此后的帧差异值, 直到累加值达到Th, 认为镜头渐变结束。若在累加途中帧差异值回落到Tl以下, 则认为无镜头转换, 累加器清零, 重新开始判断。该方法考虑到了镜头切变和镜头渐变的差异, 针对它们的特点分别检测, 能满足一般的镜头分割要求。并且要累计帧差异值到Th才认为有镜头渐变, 因此对突发的噪声有一定的抗干扰能力。但对于那些变化不很明显的渐变过程, 很可能在累加到Tl前就停止了, 而如果一个渐变过程中的某两个相邻帧变化很小 (小于Tl) , 就会使累加过程停止, 可能造成漏检。以上算法在同一段视频中都采用相同的阈值, 这样, 对内容变化较大的视频可能会产生误检, 而对内容变化较小的视频则可能产生漏检。

总的来说, 基于直方图的方法比较方便简单, 易于实现, 计算复杂度较低, 而且在一般的镜头切变的判断上可以得到较好的结果, 除了使用图像的颜色值或亮度来统计直方图, 还可采用RGB、YUV等三基色来进行直方图统计, 其思想和方法都是类似的, 并且被证明是简单有效的镜头切变检测方法。对于一般的切变和渐变镜头, 如果域值设置得当, 直方图算法可以达到较好的结果。

3检测实验与结果分析

实验的视频镜头库是采用20Gbytes的消费类电子企业提供的高清测试码流, 对图像进行灰度及YCbCr颜色空间变换, 以相邻图像间的灰度直方图的欧氏距离作为判定视频转场的依据。实验分别选取4组镜头突变转场和4组镜头渐变转场, 以验证系统的查证率和查全率, 验证系统的可行性。

通过表1可以看出, 本检测系统对镜头突变和渐变过程较短的渐变有着较好的查正率和查全率, 但是对渐变过程较长的渐变检测效果稍差。值得注意的是, 查全率与查全率与检测算法中的与之选取有关系。不同检测算法计算复杂度不同, 采用颜色直方图的方法虽然检测效果稍差, 但时间复杂度最小, 而且对于一般的突变、渐变镜头都有比较理想的检测效果。

4结束语

通过实验结果可以看出, 本系统能用给定算法对图片库中图片自动检测, 并能直观地显示转换部分的信息, 同时具有较高的查正率和查全率, 由于采用VC与Matlab混合编程大大缩短了软件开发流程, 提高了检测效率。下一步的工作将进一步完善系统的图形化界面, 并对系统的算法进行改进和优化, 以进一步提高其检测效果。

参考文献

[1]章毓晋.基于内容的视觉信息检索[M].北京:科学出版社, 2004.

[2]张洪德.基于内容的视频检索技术研究[D].长沙:国防科学技术大学, 2002.

[3]葛宝.视频镜头边界检测研究[D].西安:西北大学, 2004.

[4]孙鑫, 余安萍.VC++6.0深入详解[M].北京:电子工业出版社2006.

[5]周艺华, 曹元大, 张洪欣.一种通用的渐变镜头检测方法[J].计算机应用研究, 2006 (2) .

[6]VC++6.0与Matlab混合编程及应用[J].信息技术, 2006 (6) .

[7]何斌, 马天予, 王运坚, 等.Visual C++数字图象处理[M].北京:人民邮电出版社2001.

[8]杨帆.数字图象处理与分析[M].北京:北京航空航天大学出版社, 2007.

编程与检测 篇5

实验室在评定中小型电动机性能的时候,按照GB/T 1032—2005三相异步电动机试验方法,通常会采用标准中规定的回馈法对被试电机施加规定的负载(扭矩),得出被试电机在不同输入电压下的输入电流、损耗、功耗和转矩等技术指标。通过一段时间的摸索,在原有检测设备的基础上利用可编程控制技术开发出一套电动机测试系统,大大提高了测试的自动化程度,避免了人为观察测试数据的误差,提高了测试精度和测量结果的复现性,提供连续的测试特征曲线,使测试结果更加符合被试电动机的实际技术指标。

1 电动机性能测量系统的设计思路

根据GB/T 1032—2005三相异步电动机试验方法中规定,其试验方法主要采用在电动机1.5倍额定负载内选取6~8个测量点,记录各相的电流、电压、功率和转矩等指标,然后再作图推算出特征曲线。此法比较简单实用,是目前2 k W以上电动机测试中比较常见的测试方法,随着电动机设计开发技术的进步,电动机的效率以及损耗曲线越来越受到关注,用描点法作曲线图,必然会带来一定的失真。

另外测试时特别是在不稳定区的技术特征曲线是测试的难点,靠人工测试很难稳定测试点。

经过一段时间的研究后开发了一套基于可编程控制器(PLC)为核心的控制测量系统,其中包括了电源控制、数据采集和数据合成子系统。

利用PID反馈信号来控制被试电机的输入电压以及负载电机的频率,以实现电动机的空载和负载特性的连续测量曲线。系统构成原理图如图1所示。

测控系统的设计思路是:给被试电动机施加一试验电源,中间串接一台扭矩传感器,试验时扭矩和转速信号输入PLC后通过PID闭环控制,输出一个变频控制电源给陪试电动机,使其按照事先设定的扭矩逐步施加给被试电机,以达到施加负载受控的目的,同时数据采集系统快速采集各测试点的电、扭矩和转速等参数,通过转换形成一张被试电动机特性曲线图。

2 硬件、软件设计

根据上述设计思路,利用现有的发电机组作为被试和陪试电动机的电源,搭建了一套满足单相交流电动机、三相异步电动机、直流电动机的测量系统。

由于被试电动机的输入电源种类的不同,供应给被试电动机的电源,除了应能切换交直流外,还要在空载和负载情况下应能有很好的受控性能,在试验时,特别是在电动机工作的不稳定区域,电源要有很好的控制能力,保持输出稳定线性的控制电压。

另一路电源提供给陪试电动机。反馈信号通过PID运算后,输出变频电流给陪试电动机,使施加的负载满足预期的要求。

PLC因其高可靠性、丰富的I/O接口模块、模块化、易开发和易安装等特点被广泛应用于工业控制的各种领域。用可编程控制器来替代原来的电器元件,大大提高了动作的可靠性,轻松实现了多变的控制要求,可以按预期要求得到理想的测试条件,降低测控系统的成本。

S7-200系列PLC是西门子公司生产的小型工控机,在系统中选用1个EM226(24输入16输出处理器)、3个EM232(2输出模拟量控制模块)和1个EM235(4输入1输出模拟量模块)拼接形成,系统利用了13路按钮输入、16路开关量输出作为机组及执行继电器的控制信号,7路模拟量输出(用于驱动机组励磁系统)、2路模拟量输入采集测功仪信号。控制器示意图见图2。

PLC采用STEP 7-Micro/WIN 32软件进行编译,主要负责机组切换、安全钳位、启动顺序、待机参数、被试电机线性电压输出、采集交流电参数、PID反馈计算、输出D/A励磁信号、显示机组状态以及与上位机通信等功能,采用一台PC机主要承担预置参数、实时监控、图表合成、报告输出等功能。

电参数表选用有RS485实时传输功能的三相电参数表,仪表采用精度不低于0.5级的宽带交流数显电参数表(PF9830),通过通信协议上传的信息包括三相电流、电压、功率、功率因数和电能等,选用一台绕组温升在线测量仪来测量绕组的实际温度,通过RS485通信给PC机提供温升的测量参数。测功仪反馈扭矩和转速信号(0~5 V模拟量),分别经EN235模块中2路A/D转换后细分至256级,给PLC进行PID计算偏移量,其设计流程图见图3。图中实线部分为交流主电路,虚线部分为信号采集和控制信号线。

3 功能的实现

该测量系统的建成可方便地按照GB/T 1032—2005标准中回馈法完成对三相异步电动机的空载、杂散损耗、温升、负载等指标的精确测量。

三相异步电动机测量负载特性的步骤如下:

(1)参数预置:在PC机界面中输入被试电机的基本信息(包括名称、型号、额定工作电压、功率、转速等)。

(2)测量准备:PC机通过运算把准备发送执行的数据给测试人员确认,包括测试时选用的供电机组;机组待机参数;被试电动机上施加的试验电压;预热阶段施加的负载值和时间2 h(可修改)以及施加负载的梯度等等,如果确认无误按执行按钮,计算机把相关指令发到下位机(PLC)中初始化,待开始指令执行下一步动作。

(3)测量阶段:机组按程序要求进行启动并按照待机参数等待输出,当检验人员判定机组运行正常后触发输出供电,电动机开始预热运行,直到规定的时间声光提示预热时间已到,此时测试执行按钮才能被触发,PLC指令进入到测试阶段。

这时PLC给陪试电动机电源发出指令,降低频率直到被试电动机在额定电压达到1.5PN(PN为额定输出功率),此时指令要求开始数据采集(包括各线电压、电流、功率,绕组温度、转速、电源频率以及陪试电机的功率、线电流、绕组温度、频率等数据)。根据预置的测试梯度逐渐降低施加的负载,同样记录上述测量参数,发送到上位机寄存。

(4)数据处理阶段:一般全过程测试不超过10 min,根据上传的数据软件将自动形成报表和空载特性曲线图表。

4 结语

采用可编程控制器开发的测量系统应用在电动机特性检测中。系统采集到的参数通过PID闭环控制使被试电动机工作在预先设定的测试条件下,最后由计算机把采集到的所有数据进行处理并输出报表。

编程与检测 篇6

1 计算机编程思想研究

计算机的编程首先是建立在计算机语言的基础上, 通过对计算机语言的一种逻辑编辑, 从而实现某一项的功能和应用, 就是计算机编程。通常情况下, 计算机编程技术能够实现诸多领域的设计与应用, 例如在计算机多媒体领域、工业领域以及航天医疗等领域都有着非常重要的应用。通过计算机编程, 可是实现功能, 并提高工作效率。但是, 针对于计算机编程自身, 也同样存在效率的问题。计算机语言种类较多, 一般可以分为面向对象语言, 比较熟悉的就是C++;还有面向过程的编程语言——C语言;还有包括可以实现跨平台的语言——Java。这些计算机语言有着自身的逻辑特点, 在不同的环境中, 有着不同的优势。

1.1 计算机语言的应用环境分析

针对目前的编程而言, 有诸多的编程环境在影响着计算机编程。常见的应用环境有windows操作系统, Linux操作系统等。不同的编程语言有着不同的适应性, 因此要在相互适应的环境中, 使用相应的编程语言。

1.2 计算机语言的编程思想分析

计算机语言的编程思想主要是以稳定、效率以及误码率等几个方向来定义的, 针对不同的计算机编程而言, 其所能够包含的特点也不一样。例如, C语言编程的最大特点是克服了原有的汇编语言, 但是面向过程的程序语言往往会存在代码冗余的现象。因此, 就会出现重复编译而降低编程效率的问题。同样的面向对象的程序设计语言, 可以在一定程度上减少编译的问题, 但是却无法实现跨越平台进行编译, 从而出现了一定的限制因素。总之, 不同的计算机编程都有其相应的弊端。

2 AOP编程思想的研究

在分析不同编程方式的时候, 需要首先明确某种编程思想的来源。那么, 对于AOP编程而言, 是一种面向对象的编程方式。其形式在一定程度上可以和C++语言进行对比, AOP编程就是一种面向AOP的编程方式。那么, AOP编程有着怎样的优势呢?对于面向AOP的编程思想又是怎样的呢?

2.1 AOP编程的开发分析

计算机编程技术发展以来, 对于面向对象的编程技术不断成为计算机编程技术的先锋, 成为诸多领域的主要应用技术。虽然面向对象编程技术在原有的编程技术基础上有了较大的发展, 但是却依然无法克服在编程过程中出现的冗余问题。因此, 相关研究人员对面向对象编程的局限性进行了相关的研究与分析, 然后研究出了一种新的编程思想, 希望通过这一思想能解决代码重复的问题, 从而提高编程的工作效率。

经过专家人员的悉心研究, 终于研究出一种可以实现高效的编程思想——AOP编程。这种编程方式可以通过Java语言进行扩展从而体验AOP思想。

2.2 AOP编程思想的优势分析

AOP的编程思想, 其目的在于能够通过面向AOP的编程方式, 来避免产生一些冗余问题。AOP编程思想中, 有一个叫做横切关注点的概念。这个概念在于通过将工作关注点的代码进行分离, 从而将组织服务编写工作分离出来, 最后提供相应的功能架构。通过这样的处理方式, 应用程序就可以直接使用各个程序功能提供的功能, 而避免了重复编译的工作。在实际的编程技术中, 开发者将AOP的编程思想的优势通过以下三个方面进行了阐述:

第一、服务将被更好的定义;使用AOP编程思想可以实现服务的多元化应用, 编程的简易化并且同时获得更多的功能。此外, 通过这样的思想编程, 并不会影响到其他的编程功能, 实现相对独立的编程环境。

第二、在进行创建离散方面的时候, 可以借助于开发团队进行一项工作的专注开发, 开发人员中的精英人员可以实现真正意义上的编程体验, 加强对自身技能和经验的利用性。

第三、编程的持久性优势;在面向对象的编程过程中, 不同的程序开发人员可以通过将相同的编程代码, 以独立的方式进行创建。然后通过调用的方式, 减少程序的重复编译, 实现编译过程中的效率最大化。

总是, AOP的编程思想就是一种横切关注点的方式, 将程序进行有效分割, 从而降低编程过程中的重复编译, 实现高效编程的特点。

3 结语

计算机编程技术属于计算机的专业领域技术, 通过对计算机语言的逻辑编辑, 从而实现一定的功能。计算机编程思想是编程技术中的理念和灵魂, 一种编程思想代表着一种编程方法的有效性。同样是实现一项功能, 能够最快最完善的实现, 就代表着一种编程思想的完善性。因此, 为了不断加强计算机编程技术, AOP编程思想诞生, 并在很大程度上实现了高效的编程方式, 通过减少代码的重复编译来提高编程效率, 实现功能的高效化。

参考文献

[1]王云修.关于计算机编程思想与AOP编程思想的研究[J].计算机光盘软件与应用, 2012 (05) :182-182.

[2]骆四毛, 周兴斌.AOP对软件复杂度的影响分析及应用[J].计算机工程与设计, 2013 (05) :1822-1825.

数控编程技术与后置处理 篇7

数控机床是采用计算机控制的高效能自动化加工设备, 而数控加工程序是数控机床运动与工作过程控制的依据。因此程序编制是数控加工中的一项重要工作, 理想的加工程序应保证能加工出符合产品图样要求的合格工件, 同时也能使数控机床的功能得到合理的应用与充分的发挥, 使数控机床安全、可靠、高效地工作, 加工出高质量的产品。从零件图纸到获得合格的数控加工程序的过程便是数控编程。

数控编程技术与数控机床两者的发展是紧密相关的。数控机床的性能提升推动了编程技术的发展, 而编程手段的提高也促进了数控机床的发展, 二者相互依赖。现代数控技术正在向高精度、高效率、高柔性和智能化方向发展, 编程方式也越来越丰富。

2 数控编程的基本概念

数控编程是数控加工准备阶段的主要内容之一, 通常包括分析零件图样, 确定加工工艺过程;计算走刀轨迹;得出刀位数据;编写数控加工程序;制作控制介质;校对程序及首件试切。总之, 它是从零件图纸到获得数控加工程序的全过程。数控编程一般分为手工编程和自动编程两种方法。

手工编程是指编制数控加工程序的各个步骤 (零件图样分析、工艺处理、确定加工路线和工艺参数、计算数控机床所需的输入数据、编写零件的数控加工程序单以及程序的校验等) 均由人工来完成。一般对几何形状不复杂, 加工程序不长、计算不繁琐的零件, 如点位加工或几何形状不复杂的轮廓加工, 一般选用手工编程。手工编程的重要性是不容忽视的, 它是编制加工程序的基础, 是机床现场加工调试的主要方法, 是机床操作人员必须掌握的基本功, 但它也有以下缺点:

a.人工完成各个阶段的工作, 效率低、易出错;

b.每个点的坐标都需计算, 工作量大、难检查;

c.对复杂形状的零件, 如螺旋桨的叶片形状, 不但计算复杂, 有时也很难实现。

但上述问题若由计算机进行处理, 难题就迎刃而解了。自动编程是指在计算机及相应的软件系统的支持下, 自动生成数控加工程序的过程。除分析零件图样和制定工艺方案由人工进行外, 其余均由计算机自动完成, 故又称计算机辅助编程, 它充分利用了计算机快速运算和存储的功能。编程人员将零件形状、几何尺寸、刀具路线、工艺参数、机床特征等, 按一定的格式和方法输入到计算机内, 再由自动编程软件对这些输入信息进行编译、计算等处理生成刀具路径文件和机床的数控加工程序, 通过通信接口将加工程序送入机床数控系统以备加工。对于形状复杂, 比如具有非圆曲线轮廓、三维曲面等零件编写加工程序, 采用自动编程方法效率高, 可靠性好。

随着微电子技术和CAD技术的发展, 为降低编程难度、提高效率, 减少和避免程序错误, 自动编程技术不断发展, 大约经历了以下几个阶段:a.20世纪50年代美国麻省理工学院 (MIT) 开发APT语言;b.20世纪60年代MIT组织美国各大飞机公司共同开发APTII、APTIII;c.20世纪70年代出现基于APTIII的APT-IV、APT-AC;d.APT衍生出其他语言如ADAPT, EXAPT, HAPT, FAPT, IFAPT等;e.20世纪80年代以后各种不同的CAD/CAM集成数控编程系统发展起来。

自动编程分为数控语言自动编程和图形交互式自动编程。

随着计算机技术的迅猛发展, 计算机的图形处理能力不断增强。一种可以直接将零件的几何图形信息, 自动转化为数控加工程序的全新的计算机辅助编程技术--图形交互式自动编程应运而生, 并在20世纪70年代以后得到迅速发展和推广应用。

图形交互自动编程是计算机配备了图形终端和三维绘图软件后进行编程的一种方法, 它以人-机对话的形式, 在图形显示终端上绘制出加工零件及毛坯, 选择机床和刀具并制定加工工艺, 计算机便按预先存储的图形自动编程系统计算刀具轨迹, 然后由相应机床的后处理器自动生成NC代码。

现代图形交互式自动编程是建立在CAD和CAM系统的基础上的, 典型的图形交互式自动编程系统都采用CAD/CAM集成数控编程系统模式, 与早期的语言型的自动编程系统相比它有如下特点:

a.输入工件图形并采用人机对话方式, 而不需要使用数控语言编制源程序;

b.从加工工件的图形再现、进给轨迹的生成、加工过程的动态模拟, 到生成数控加工程序, 都是通过屏幕菜单驱动, 因而速度快、精度高、直观性好、使用简便、便于检查;

c.可以通过软件的数据接口共享已有的CAD设计结果, 实现CAD/CAM集成一体化, 实现无图纸设计制造;

d.为提高生产率、缩短新产品研制周期、保证产品产量、降低成本创造了有利的条件, 尤其是对三维复杂曲面零件, 只要作适当的修改就能产生新的NC代码, 因而它具有相当大的柔性。

从20世纪40年代第一台计算机问世以来, 50年代出现了第一台数控机床, 60年代的交互式图像显示设备, 70年代的工作站 (Workstation) 和造型技术 (Wireframe Modeling、Solid Modeling、Surface Modeling) , 以至80年代的智能机器人及专家系统, CAD/CAM历经形成、发展、提高和集成各个阶段。20世纪90年代中期以后发展到如图1所示阶段。

3 后置处理技术

从图2我们可以看出, 传统的机械制造方式正在向计算机集成制造系统 (CIMS) 方向发展, 计算机辅助设计与制造 (CAD/CAM) 集成系统又是实现CIMS的核心技术。实现CAD/CAM系统的无缝集成, 必须将CAD/CAM自动编程系统生成的APT格式的刀位代码转换成指定数控机床能执行的程序。

在数控编程中, 将刀具轨迹计算过程称为前置处理。为使前置处理通用化, 按照相对运动原理, 将刀位轨迹计算统一在工件坐标系中进行, 而不考虑具体机床结构及指令格式, 从而简化系统软件。因此, 要获得数控机床加工程序, 还需要将前置计算所得的刀位数据换成具体机床的程序代码, 该过程称为后置处理, 即根据具体机床运动结构和控制指令格式将前置计算的刀位数据变换成机床各轴的运动数据, 并按其控制指令格式进行转换, 成为数控机床的加工程序。后置处理的目的是形成数控加工指令文件。由于各种机床使用的控制系统不同, 所以, 所用的数控指令文件的代码和格式也有所不同。因此CAD/CAM数控编程系统通常设置一个后置处理文件选项, 生成与某类数控系统相对应的加工文件, 按文件所使用的格式定义数控文件所使用的代码、程序格式、圆整化方式等内容, 输出所需要的加工文件, 也可对文件进行必要的编辑修改。后置处理器是衔接CAD/CAM集成系统与数控加工设备的纽带。

后置处理系统分为专用后置处理系统和通用后置处理系统。

前者一般是针对专用数控编程系统和特定数控机床而开发的专用后置处理程序。

通用后置处理系统一般指后置处理程序功能的通用化, 要求能针对不同类型的数控系统对刀位原文件进行后置处理, 输出数控程序。

数控加工的后置处理是CAD/CAM集成系统的重要组成部分, 它直接影响CAD/CAM系软件使用效果及零件加工质量。目前, 国内很多CAD/CAM软件的用户对软件的使用还只停留在CAD模块上, 对CAM的应用极其有限, 其中一个关键的原因就是没有配备专用的后处理器, 另外的原因是对数控加工的基本知识了解的太少, 对数控设备 (特别是加工中心) 知之甚微。

由于数控技术的不断进步, 数控厂家不断推出具有先进功能的控制器 (比如高速数控加工和各种拟合曲面型的技术) , 这对后置处理提出了更高的要求, 那就是要不断提高处理技术, 满足这些新技术的要求, 同时具有开放功能, 即允许用户在后置处理模块中可以描述未来数控功能的能力。总之, 一个完善的后置处理器应该具备以下功能:

a.接口功能:后置处理器自动识别并读取不同CAD/CAM软件所生成的刀具路径文件。

b.NC程序生成功能:数控机床一般具有直线插补、圆弧插补、自动换刀、夹具偏置、固定循环及冷却的功能。这些功能的实现是通过一系列代码的组合来完成的。数控代码的结构、顺序及数据格式必须满足数控系统的要求。Pro/ENGINGEER的后置处理器NC-POST提供了一个非常简单的机床选配文件生成器, 把不同数控机床的代码的定义和格式要求制作成一个数据文件, 这个文件可以作为后置处理器的部分输入参数的选项, 配合用户定义加工对象和加工参数, 从而生成符合指定机床要求的加工代码。

c.专家系统功能:后置处理器不只是对刀具路径文件进行处理和转换, 还要加入一定的工艺要求。比如对于高速加工, 后处理器会自动确定圆弧走刀的方式, 以及合理的切入切出方法和参数。

d.模拟仿真过程:仿真过程目前主要针对刀具运动轨迹进行实际模拟。

4 结论

总体来说, 由于机床程序的多样性, 很难找到一个通用的方法对APT文件进行后置处理。使用最广乏的仍旧是一对一的编程方式。在程序的编制过程中, 对机床坐标转化的把握, 以及机床语言的熟悉程度是决定后置处理程序好坏的关键。对机床的了解主要包括:刀具位置描述所需的因素, 坐标原点的位置, 进给量、转速等的描述方法, 运动的描述以及一些特殊的语法。后置处理得到的结果可能是错误的, 其原因可能是因为后置处理的翻译过程存在问题。也可能是APT刀轨本身具有一定的问题, 需要通过一定的手段来检验NC代码的准确性。一般可以直接运行来检验其正确性, 也可以使用一定的数控仿真软件进行模拟仿真来验证其准确性。后置处理的研究是机床程序语言不通用性的产物, 也必然会随着机床控制通用性的实现而消亡。而机器人操作PC化的趋势也许会使机床的控制的通用性成为现实, 那时, 后置处理也会越来越少的受人关注。

参考文献

[1]张宁.数控加工技术概述, 2002.

[2]殷保祖.参数化数控编程技术, 2003.

[3]刘雄伟.数控加工理论及编程技术, 2001.

网格编程方法与环境综述 篇8

当今, 网格[1,2]作为新一代的基础设施已经引起了极为广泛的关注, 关于网格理论方面的研究也越来越丰富, 然而, 对于网格应用的开发却相对滞后。产生这种现象的原因是什么呢?我们认为主要有两个方面:一是由于网格不同于传统的高性能设施, 它具有动态性和异构性, 而多数人对网格的这一特点认识不足;二是不熟悉网格的编程环境及其相关技术。这就使得网格应用的开发成为一件很困难的事, 同时也给网格编程带来了一些独特的挑战, 从很大程度上阻碍了网格技术的普及和发展。

网格是一个集成的计算与资源环境, 或者说一个计算资源池, 也被称为虚拟分布式计算环境, 因此大部分的编程的方法和工具都是从并行分布式环境下移植过来。众所周知, 目前在并行机或分布式集群上设计并行分布式应用都仍然是件很耗时的工作, 而网格本身所固有的动态性和异构性, 这就使得在网格上编程变的更为复杂[3,4]。如果没有良好的编程环境, 网格编程的工作将是相当枯燥和乏味的, 而且容易导致错误。目前的研究只是从不同角度、针对不同问题来探讨网格编程, 欠缺统一、系统和完整的认识, 与实际应用还有较大距离, 大量的问题尚未解决, 大量的新问题尚待发现, 大量的新应用尚待开发。因此, 网格编程的研究对网格的普及具有相当重要的意义的。

本文下面的部分剖析了目前网格编程领域最具代表性的方法和支撑工具项目, 如RPC的中间件 (NetSolve[5,6]和Ninf-G[7,8]) 、Ibis[9]、及基于skeleton的ASSIST[10,11,12,13,14]等等, 并从性能、可移植性、编程语言、扩展性和编程语言等方面对它们做了评价, 文章最后做了总结, 并分析了网格编程的发展趋势和未来的进一步研究方向。

1 网格编程方法和工具

网格编程必须既能支持面向服务的新型应用的开发, 又能集成各种遗留软件、数据和应用系统, 开发出的网格应用还需要能给用户提供灵活方便的工作界面和使用环境。下面将基于抽象的层次介绍目前流行的网格编程的各种方法与支撑工具。

1.1 消息传递方式 (MPI)

MPI (MessagePassingInterface) [15,16]模型, 通常使用c/c++或Fortran加MPI的方式进行网格编程, 主要有两种基于网格的消息传递接口的实现:MPICH-G 2[17,18]和PACX-MPI[19,20]。

MPICH-G 2是基于MPI和Globus[21,22]工具包的实现, 从Globus中获得服务。MPICH-G 2结合了Globus的资源发现、资源分配、运行管理、安全验证等功能, 但它的通信效率更高, 加强了对服务质量的控制, 提供了与MPI完全一致的并行编程界面。使用Globus提供的服务启动和管理远程的进程, 对编程人员隐藏了异构性, 并通过自动选择本地或远程系统间消息传递协议来达到良好的异构通讯性能。

PACX-MPI (Parallel Computer eXtension) 是HLRS的一个基于网格MPI的优化实现的开源项目, 它使用完全独立的通信层来处理完成本地发出内部或外部的MPI调用, 优化了与远程进程间的通信。PACX-MPI被广泛应用于DAMIEN[23], METO-DIS[24]和UNICORE+[25]项目中。

但是消息传递的编程方式并没有提供专门的网格编程语言, 仅仅提供了网格中通信和同步的支持, 程序员仍需使用支撑语言直接去描述任务分解、负载平衡、数据的分布和延迟等问题, 再加上网格资源地理上的分布性等, 这些都会给程序员带来严重的编程负担。

此外, 对追求高性能的用户来说, MPI不能自动进行性能优化, 随着问题规模的增长, 手工优化的难度将逐渐增加, 因此消息传递的编程方式并没有真正解决网格计算的挑战。IanFoster在文献[26]已经指出使用这种“英雄式的行为”方式进行网格编程是困难的, 并且容易导致错误, 不仅编写出来的程序不具有可靠性, 安全性, 是相当脆弱的, 而且开发的成本也相当高, 不适合大型的网格编程。

1.2 网格移动程度通信 (GridRPC)

GridRPC (RemoteProcedureCall) [27,28]是基于C/S结构的远程通信中间件, 使用一些基本的Grid RPCAPI来实现访问远程网格节点上的库和任务并行编程模式[27,28]。NetSolve和Ninf-G是两种已经实现了基于GridRPC的网格计算系统, 无论是在设计方法还是在设计的目的上两者都很相似, 都是面向科学工程计算。

NetSolve是为了解决在集群和分布式环境下的科学计算, 给程序员提供一个简单、友好的编程接口和桌面科学计算的无缝集成, 使其能很容易的访问和获得资源。它的通信模型比较简单:所有计算放都在服务器端进行, 服务器和客户端之间增加了一个代理 (agent) 进行连接, 客户端通过agent向远程请求服务, agent选择服务器, 服务器计算完成后返回给客户端。如图1所示。

NetSolve向用户提供了便于科学数值计算的API接口, 包括系统提供的和自定义的函数库, 所有的接口使用Fortran、C/C++和Matlab等设计与实现。

NetSolve已经成功应用在了集群和分布式环境下的IPARS (Integrated ParallelAccurateReservoir Simulators) 和MCell (MonteCarlosimulatorofcellularmicrophysiology) 等项目上, 目前也正在进行对NSF的PACI和其他的计算科学项目的实现。在其最近GridSolve项目的研究中, 针对网格的动态性特征增加了实现和评价NetSolve中程序的容错和迁移等功能。

Ninf-G是日本科学院的一个开源项目, 建立在Globus工具包之上, 借助Globus提供的GRAM, GASS, GSI, MDS和GlobusI/O等多个服务来完成GridRPC。Ninf-G位于函数库和调用的应用之间, 通过broker调用远程的服务, 允许库的代码运行在一个远程的系统上。当应用程序在本地运行的时候, 无论是库还是应用程序都不需要做任何改动。

调用的过程为: (1) 客户端向MDS请求接口信息和可执行的路径检索, 检索后的数据放在客户端, 这将减少与MDS之间的频繁通信; (2) MDS响应客户端的请求 (3) 使用 (1) 中获得的远程服务器的可执行路径, 客户端通过GRAM与远程可执行的服务器交互。 (4) 远程服务器执行完后通过Globus I/O返回给客户端。如图2所示

在目前的Ninf-G 5版本中, 提供了对其它的网格支持平台 (非GlobusToolkit) 提供支持, 拓展了其应用的范围。

基于GridRPC的这两种方法都是仅限于解决科学计算方面的问题, 对其它方面的API支持有限, 并且大多都需要高性能的服务器。没有对通信进行抽象, 类似于远程求值的方式, 仅提供了无缝的网络解决方案, 很难在作为一种通用的网格编程方法。但是, 基于代理的GridRPC的调用机制是一种解决集中式网格的资源发现和调度的较好解决方式。

1.3 Assist (A SoftwaredevelopmentSystem based onIntegratedSkeletonTechnology)

Skeleton[29,30,31]思想最初来源于M.Cole, 它是将并行中通信和同步进行抽象, 并针对底层的运行平台预实现, 程序员只需根据求解问题, 选用合适的skeleton, 并填入执行实际计算的细节串行代码[32,33]。

ASSIST是Pisa大学的基于skeleton技术的结构化并行编程环境项目, 最初设计用于Linux下的集群环境, 目前已经成功移植到网格环境下, 它包括编程模型及一系列的开发工具组成。编程环境的结构如图3所示:

GAM (GridAbstractMachine) 是从底层的网格平台 (如globus) 中间件上抽象的功能和服务, 网格编程环境建立在GAM之上, 使用GAM提供的功能和服务去进行系统设计, 这样不会因为底层平台的变化而做较大的改变, 并且增加了程序的可移植性。

ASSIST提供了一种ASSIST-CL[34,35]语言, 它由顺序模块 (构件) 、并行模块及这些模块之间交互的模块图组成。顺序模块可以是用C/C++或Fortran语言编写的代码, 并行模块使用parmod的实例来表示, Parmod是ASSIT的核心概念, 它是一个通用的并行模块skeleton, 每个Parmod使用一组虚拟进程 (VP) 组成, 每个虚拟进程根据程序提供的参数代码映射到远程的网格节点上的运行。程序在编译后所有的资源分配、进程管理和通信管理都交给网格执行环境去自动完成。如图4所示

从编程模型角度看, 通过结构重用给程序员提供了高层的抽象, 不需要编写任何单独的与进程分解、映射和调度、通信、同步操作相关的代码, 屏蔽了设计过程中的复杂性和底层变化, 并且写出来的程序具有良好的结构性和可读性。

ASSIST实现了构件与skeleton技术融合, 已经在计算化学[36]、图像处理[37]、生物技术[38]领域实现, 并取得了成功。提供了抽象的并行解决方案和相应的编程语言, 在一定程度上, 简化了程序员的编程难度, 将其并行的复杂性部分留给了编程环境的底层。但是在其提供的parmod很难处理不规则的应用, 并在编程时就必须提供可并行执行的代码, 把实现的部分完全留给了支撑工具, 增加了支撑工具的负担。

目前ASSIST项目正在与欧洲其它的项目 (如GridCoord[39]、CoreGRID[40]、Grid.it[41,42]等) 进行无缝集成。

1.4 网格编程系统 (Ibis)

Ibis是荷兰阿姆斯特丹自由大学一个网格编程系统, 目的是实现了“透明网格”[43,44,45]的概念, 使程序同时达到可移植性、可扩展性和高效性。程序员必须使用Ibis提供的一种编程模型 (RMI[46], GMI[47], RepMI[48]andSatin[49]) 进行编程, 这些编程模型使用IPL提供一组java接口和服务, 这些接口和服务是对底层提供的资源管理和服务的封装。如图5所示

Ibis采用了优化的RMI机制, 使用java语言强调了程序的可移植性。尽量屏蔽底层的异构性, 向高层提供简单而友好的接口。Ibis也存在一些缺点:例如仍然需要程序员去完全控制JAVA的通讯机制 (包括进程分解及相关通信) , 这些机制并不具有很高的抽象;通过编程环境的扩展给用户提供了高层次的编程模式, 但并没有降到开发的难度;虽在编程模型中考虑到了“透明网格”的概念, 但仅仅是对Satin中的“分而治之”负载均衡的调整提供了很有限的支持。

采用中间件编程的方式可能是目前网格编程理想的一种方式, 通过提供一个简单, 一致的集成分布式编程环境 (中间件) 来减轻程序员在设计、编程和管理分布式应用中的负担, 高层次的抽象屏蔽底层复杂、异构的环境, 程序员使用中间件提供的API进行网格编程。这些网格编程的方法、工具和环境还是很难解决网格的的复杂性, 只是针对某一方面提出了解决方案。

2 分析比较

我们从上述介绍的典型研究项目中选取出几项进行了评价对比, 结果见表一。这些标准涉及到编程语言、编程难度、抽象层次、自适应性、性能、使用范围和可扩展性等方面。

3 结束语

目前, 由于网格的快速普及, 很多科研机构和项目[50,51,52]都将网格编程研究工作主要集中在将已有的分布式并行环境下的技术移植到网格环境下, 完全开发全新网格编程方法方面的研究工作还不多, 研究成果也很少。

一个良好的网格编程环境、方法和工具应该具有良好的可移植性、互操作性、适应性和安全性, 以及在不影响性能的情况下具有良好的容错能力, 并且能支持面向服务的新型应用的开发, 还应该有灵活方便的网格用户界面工具和网格使用环境, 这样才能很好的解决目前在网格上开发困难的问题。因此, 从长远观点来看, 仍然需要开发出适应网格的一种全新的网格编程模型和技术。

摘要:网格作为新一代的基础设施已经引起了极为广泛的关注, 但在网格上进行编程仍然是件困难的工作。文中介绍了目前最具代表性的网格编程方法和支撑工具的研究现状, 指出了它们存在的一些不足, 并从多个方面对这些方法和支撑工具进行了比较, 最后给出了网格编程未来的发展趋势和进一步的研究方向。

收获诺贝尔奖与收获编程 篇9

真正开始深入地研究电脑和编程是从2000年开始, 此时离我大学毕业已有6年了, 说实话, 大学里的日子写小说的时候比看专业课的时候要认真得多, 而成为一名教师后, 开始教相应的程序设计课程时, 小说写作不得不暂时放下, 但写作还在继续, 从写作小说到写作计算机编程, 慢慢开始认识到程序与编程的魅力。

转变的开始是迷茫而艰难的, 选择什么样的语言, 针对什么样的东西来写程序, 使自己思索了很多, 而从改变素材能否提高对编程技术与电脑的兴致的思考上, 进入VB编程提升时期。

2000年开始 , 由于教学过程中遇到的教材陈旧问题 , 开始更新计算机语言教学方面的资料, 从事VB计算机语言研究, 从教学实际情况出发搜集素材, 整理成游戏编程系列。有扫雷、迷宫、 出圈游戏等代表作品, 不仅仅如此, 开始从实际应用出发解决问题, 通过烟囱弯脖问题、选择题考试等作品来归纳, 并且第一篇作品《用VB实现选择题考试》在《计算机世界》 周报上发表。现在看来这个程序实在太稚嫩简单了, 但那时是一个开始, 正是自己真实转变的写真。以此为开始, 通过与数学等科目结合整合教材增加教学资料的趣味性与可用性, 写成趣味数学问题解题、编程小博士等系列作品。总起来看, 此阶段主要研究工作集中在程序设计与学习层次。通过将资料集中与再造, 以推出适合学生学习的趣味生动教材为目标, 通过结集发表将自己的经验同更多人交流和分享, 获得反馈后继续加以改进, 最后经过不断努力, 将写作与编程结合, 有了作品出炉, 开始在报刊杂志上发表, 先后推出扫雷编程系列、编程小博士系列以及趣味数学编程系列和阿兰程序演义系列4个系列集。其实写作与发表作品并非想象的那么难, 而这一转变使得我开始对程序着迷, 开始深入程序设计。从一个写作的老者到一个编程的新手, 如何成长为一个编程的优秀者? 带着对这个问题的思考, 我的编程进入第二个阶段。

第二阶段开始对最成功的程序设计者的经历与经验进行探索, 通过成功人士的方法以启发我们学习一种东西以达到成功。通过探索成功程序人物和研究方法, 有了新的系列, 寻迹系列专访。

2004年开始 , 因为在通过实际教学体验体会到教材的改进对于教学效果改进局限性, 教学效果不很明显, 开始将重点从语言本身转到和语言相关的方面, 如语言的诞生过程、学习语言的方法、语言与语言之间的整合等。 通过一系列专访, 通过互联网或面对面采访了十多位计算机方面的专家学者, 开始形成这方面的体系。采访对象包括C++语言之父、C语言之父、STL之父、Pascal语言之父, 互联网之父、N-S图之父、LOGO之父、计算机程序设计艺术教授以及LEGO头脑风暴机器人之父等专家。通过专访系列的完成, 对行业发展有所对比, 对于教学中出现的问题有了更好的借鉴, 也从中看到了自己专业知识方面的差距。C++、Pascal语言与C语言之父的经验说明, 对于专业知识要执着地研究, 坚持不懈, 最终会取得受人瞩目的成果, 他们在自己的行业内都坚持30年之上, 特别是C语言之父, 在自己的行业内乐此不疲达到50年, 正是半个世纪的坚持, 才使其技术成果光芒四射。通过计算机程序设计艺术教授, 告诉我们对于后续的教学与研究, 要积极地总结前人的知识, 将其形成可交流的文字材料, 更要积极利用现在的互联网等先进手段。而通过N-S图之父、LOGO之父以及头脑风暴机器人之父, 更进一步体会到教与学要讲究方法, 教学的过程中, 要增加多感官利用, 手脑并用, 通过实际与实践加深学习的效果。不论是莫言的成功, 还是成功的程序语言成功人士, 都离不开坚持, 莫言坚持35年之久实现了自己的最高理想, 获得了令人瞩目诺贝尔奖, 而现在已作古的C语言之父在自己热爱的行业里坚持达半个世纪之久。坚持至关重要, 成功没有捷径, 只有不懈的努力。又是什么塑造出这种长达几十年的忠实的努力呢, 以此为出发点, 进入个人程序设计的第三个阶段, 提升行业兴趣。

第三阶段, 深入了解和观察行业, 对行业的问题提炼我们自己的观察和思考: IT评论与行业观察———博客写作。将自己的观察与体验整理, 与更多人交流。

方法和教材的改进仍然不能解决教育教学过程中的许多问题, 教育本身并不能解决所有的问题, IT教育也是如此。从2006年开始 , 开始对行业进行观察与思索 , 想通过建立一个广泛的行业通识圈子, 以达到提高学生学习兴趣的目的。通过IT评论《请放网吧一马》, 开始对行业进行综合思考与评价 , 当年发生在方山县的全国首个“有网无吧”县事件在业界震动很大, 将许多地方对网吧的极端态度显露无疑。以此开始, 在《计算机世界》发表IT评论 , 由时下新闻积极加入自己的思索, 而后, 通过和《电脑商情报》家用电脑周刊、《电脑报》网络与软件版合作, 在新闻版推出热点新闻评论专栏, 对每周IT新闻热点事件进行比较综述。由于网络的普及, 许多日常事件同IT关系越来越密切, IT事件很多, 其中涉及许多值得业界思考的地方, 时下的热点事件很多, 象网络游戏、杀毒软件、盗版、 搜索引擎等都引起业界极大关注。由于纸媒传播的局限性, 此时也开始个人网络博客创作, 通过IT博客IT狼闲评发表自己的观点, 与网友和相关专业人士形成互动。这些相关的知识对于编程能力的提高有一定帮助, 但并非立竿见影。原因在哪里呢?

我们教学或学习某一专业知识起效趋微的原因在哪里? 我们需要如何学。优秀的个体给我们提供了最好的例证, 我们需要从最优秀的个体中学习如何求知, 如何处事, 如何做人。是教法、教材还是因为我们的学习环境太简陋, 导致我们不能好好地学习知识, 还是由于其他的原因, 使我们对知识缺乏必要的兴致与兴趣呢? 是由于我们的父母对我们管教太严厉或太宽松, 还是由于初中小学时某一位老师, 激起同学对某一学科的义愤? 这些可能都有, 最根本的原因还在我们自己。

我们需要检讨自己的行为, 重拾自己的优点, 以获得对生活、对知识的热爱与激情。从2011年起, 通过对幸福课 (积极心理学Positive Psychology) 的实践, 教与学起效趋微的原因慢慢浮出水面, 最重要的点在于我们每一个人自己。谁能解决这一问题, 还要靠我们自己。爹娘、老师、朋友都是外力, 最重要的是我们自己。重新认识自己, 在传统与新潮间找好自己的定位, 在优势与缺点的对照中重新发现自己的优势; 改造自己思考问题的方式, 以开放的态度面对问题, 多看到问题的积极一面, 注重实现的过程而不仅看最终的结果, 使你变优秀卓越; 培养自己的兴趣爱好, 以百分百的热情对待新知, 以百分百的投入来干一件事, 想干任何事都没有一下子成功的秘笈, 秘笈都是老老实实努力刻苦地去干, 并且从任何时候开始都不算晚。在追问幸福的秘密时, 我们的学习生活中需要重新发现自己的优点, 正视自己, 实现个人的成长。这看起来与编程没有关系, 但正是从程序与写作的融合中让我看到兴趣的力量, 从写作的兴趣扩展到编程的兴致, 从一个方面的优势扩展到另一方面的优势, 编程让我找到了自己的生活目标和努力方向, 同写作结合的编程给了我许多充实的时间和快乐的体验。

我不可能象生活在与我同一时期的高密籍作家那样获得诺贝尔大奖, 但通过写作我收获了编程。计算机程序就是这样一种可以帮助人们天赋获得发展的良好的辅助用品, 可以让人们收获更多的人生幸福和快乐。用积极心理学之父赛林格曼的总结可以告诉通过心理学和积极心理学方法去重新规划人生的最 美好的地方: 首先, 心理学不仅要关注人的弱点, 还要关注人的优点。其次, 心理学不仅要重视修复损伤, 还要重视如何给人力量, 让人们对生活充满兴趣。第三, 心理学不仅要让普通人生活得充实, 还要让有天赋的人获得成就。写作和程序让我重新发现了自己, 找到了充实的可以稍有作为的生活, 希望对于计算机初学者和编程初学者能有所启示。

编者点评

上一篇:自动补偿仪论文下一篇:分布式计算技术