编程方法与思路(精选12篇)
编程方法与思路 第1篇
题目:输入一个不超过五位的十六进制数, 将其转化为十进制输出。
一般来说, 一个完整的程序通常由输入部分、处理部分和输出三大部分组成, 题目的已知条件通常确定程序输入部分, 目的确定程序的输出, 要求确定程序的处理部分, 编程的一切都得从审题开始, 然后认真分析得出程序的各部分关键语句。
第一步:审题 (从已知条件、目的和要求三个方面来分析)
已知条件:输入一个长度不超过五位的十六进制数
输入一个未知数, 用INPUT语句, 运行时由键盘输入。输入后放入一个什么类型的变量?比如输入694或者输入D3B49, 这两者均符合题目要求。如果存入一个数值型变量, 第一个数还可以, 但第二个就出错了, 为了能考虑各种情况的输入, 应选用字符型的变量, 这样就可以存储各种输入的可能性数值。如何保证长度不超过5位:
(1) 在INPUT语句中用明确的提示性语言, 如:INPUT“请输入长度不超过五位的十六进制数”;X$
(2) 先输入, 然后用测试串长函数、检测来检查, 如超过五个字节的长度, 则要求重新输入, 如:
INPUT“请输入一个十六进制数”;X$
目的:在屏幕上打印出相对应的十进制值。
要求:该题只要完成将输入的十六进制的值转化为十进制数值, 至于具体用什么方法来求出对应的十进制值并无具体要求。
我们可以用学过的进制互化的方法来进行, 以具体例子来分析, 若:输入D3B49, 其转换方法应为D×164+3×163+B×162+4×161+9×160, 其中D、B应转化为13、11, 计算后求和即可。
具体分析, 我们只要将字符串逐位取出, 取出后为一个一个的字符, 只需将字符“D”、“3”、“B”、“4”、“9”转化为13、3、11、4、9, 然后再乘以16的n次方 (位权) , 其中n的取值与该字符在数中所处的位置有关, 如串长为L, 字符串左边开始为第一位, 则第I位应乘以16的 (L-I) 次方, 乘积加入累加器。最后, 累加器中的值, 即为该十六进制数对应的十进制值。
在上面的分析中, 只需将字符转化为相应的数值, 如果是数字字符, 即“0~9”只要用字符型转换为数值型函数VAL () 即可, 如果是字母字符“A~F”, 则应将其转换为“10~15”, 即“A”转换为10、“B”转换为“11”……, 字母向后一个, 数值就大1, 如何转化呢?我们知道字母“A”的ASCII码值为65, “B”的ASCII码值为“66”, 也是字母向后一个, 数值就大1。
如果我们把字母的ASCII码值减去55, 就能得到与之相对应的数值, 即“A”的ASCII码值为65, 减去55等于10, “B”的ASCII码值为66, 减去55, 等于11……当然, 还要考虑防止用户输入的是小写字母, 还应先用大写转换函数UCASE () 转换成大写字母, 才能保证程序的正确性。
第二步:根据审题及各部分的分析写出对应的程序。
程序及相应注释如下:
第三步:考虑各种输入的可能, 用大脑模拟计算机运行。
编写完程序, 不要急于上机调试运行, 首先要在大脑内进行模拟运行, 考虑各种输入情况, 并举几个特例来分析, 这样有利于查出程序的结构错误和逻辑错误。通过这种锻炼也有助于提高编程能力、分析问题和解决问题的能力。
第四步:上机调试、运行、验证。
用更多的输入来检验程序的运行结果。
编程方法与思路 第2篇
执教:北京市顺义区第一中学 屈海方 指导:北京市顺义区教研中心 马志忠 刘秀旺
【导读】
在VB教学过程中,教师往往为了传授知识而设计一些与学生生活实际脱离的任务,学生普遍反应对所学的内容不感兴趣,学习热情不高。本课的教学任务精心设计,由学生的学习生活中提炼出来,大大激发了学生的学习欲望。本课在培养学生的学习兴趣有所突破。
【教材内容分析】
本课使用的教材是广东教育出版社出版的《算法与程序设计》信息技术(选修1)。
本节内容为该书的第三章第一节课,但在实际教学过程中将其调整为第二章第一节课。主要内容是对可视化编程中的对象、属性、方法事件等概念的讲解。在学习了这些概念后学生在上课时不仅知道了这些专业术语,同时也能掌握代码的书写位置和书写格式。为后面的教学奠定坚实的基础。
【学生情况分析】
本课教学对象为高一学生。经过第一章的学习,学生已经熟悉Visual Basic 6.0的环境界面,对代码的书写有简单认识。另外高一学生具有思维活跃、想象力丰富、学习欲望强的学习特点,【教学设计思路】
依据新课标中提出“强调问题解决,倡导运用信息技术进行创新实践活动”的理念。以学生为主体,结合高中学生的生活和学习实际设计问题,让学生在感受与体验的过程中构建知识结构,掌握程序设计中的概念,并将所学的知识积极地应用到解决学习、生活等实际问题中。
【教学方法】
任务驱动、演示法、讲解法。
【教学资源】
教学演示文稿(PPT)、记事本小程序(EXE)和源代码
【教学目标】
一、知识与技能目标
1.能够结合日常生活中的具体事例分析说出它的属性、方法、事件,从而加深对属性、方法、事件概念和关系的理解。
2.能够利用控件工具在窗体上创建命令按钮、文本框等对象,并学会通过属性窗口修改对象的Caption、Text属性值。
3.能够正确书写鼠标单击事件过程的程序代码(书写位置和书写格式)。
二、过程与方法
1.通过教师以生活中的手机为例进行讲解,明白对象、属性、方法、事件的概念。
2.通过制作简单记事本小程序,体会VB中对象、属性、方法、事件之间的关系。
三、情感态度与价值观
1.由日常生活中的具体实例的讲解引出计算机中的概念,形成运用已有知识领悟新知识的习惯。
2.通过制作简单记事本实例,体验编程带来的成就感,激发学生学习VB编程的兴趣。
【教学重点】
1.对象、属性、方法、事件等概念。
2.属性、方法代码的语法格式和书写方法。
【教学难点】
对象、属性、方法、事件概念之间的关系。
【教学过程设计】
环节一 引入环节
教师:同学们都用过word软件进行文字编辑,word软件具有很强大的编辑功能。比如,点击加粗命令按钮,文字就加粗了,点击倾斜命令按钮,文字就变倾斜了。本节课的任务就是和老师一起编写一个记事本小程序。
教师:这是我用VB编写的一个小程序,请看大屏幕。如果单击这个命令按钮(显示文字为B的命令按钮)文本框中的文字会加粗。如果单击这个命令按钮(显示文字为I的命令按钮)文本框中的文字会„„(让学生自己说)
学生:文字变倾斜(同学表现出很新奇的样子)
教师:单击这个命令按钮(显示文字为颜色的命令按钮)可以改变文字的颜色。在制作之前,大家先来学习几个概念。
环节二 讲解对象的属性、方法、事件概念
教师:在现实生活中把这种看得见摸得着的物体叫做什么?(教师同时指着黑板,课桌椅)
学生:实物„„物体„„东西„„(学生列举了很多种称呼)
教师:我们也可以把它们称之为对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的物体均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件等等。(写板书:对像──研究的事物)
教师:这个手机(两款手机之一)是不是一个对象?
学生:是。
教师:这个手机(另一款式的手机)也是一个对象。尽管都是对象,我们还是可以区分它们,请大家仔细观察一下这两个对象,从外观上描述一下这两个对象有什么不同?
学生:手机的颜色不同,样式不同一个翻盖的另一个是直板的,品牌也不同„„。(写板书:颜色、样式、品牌„„)
教师:手机的颜色、样式、品牌等等这些被称之为对象的属性。换句话说也就是它的性质。(写板书:属性──性质)
教师:在购买手机的时,不仅关注它的外观,还会关心手机的„„(让学生接着往下说)
学生:功能
教师:这个手机都有什么功能 ?
学生:发短信、接电话、打电话、拍照„„(写板书:发短息、接打电话、拍照„„)
教师:把对象具有的功能被称之为对象的方法。(写板书:方法──功能)
教师:(演示)如果我用这个手机给它(另一款手机)打电话,它会有什么反应?(教师现场操作,其中一手机响铃了)
学生:手机铃响了。
教师:它为什么响铃了?因为有电话打入了。还可以这样描述:手机在来电这件事情的刺激,做出了响铃的反应。把对象受到的外部给它的刺激称之为对象的事件。(写板书:事件──刺激)
教师:举个例子,(从背后轻拍了某位同学的肩膀,同学回头看了我一眼)在他被拍了回头看了我一眼这个过程中,谁受到了刺激谁作出了反应?
学生:张扬(学生名)受到了刺激,张扬作出了反应。
教师:刚才的这两个例子都是同一个对象受到刺激作出反应。再举一个例子,开关被按下去了,灯亮了。不考虑开关和灯之间的联系,从表面上看谁受到了刺激,谁作出了反应。(举这个例子是为了帮助学生理解后面的鼠标单击按钮,文本框中的文字发生改变过程中,事件作用在哪个对象上,哪个对象做出反应)
学生:手„„灯„„开关(学会回答不准确)
教师:从刚才的现象分析,我们看到的效果是灯亮了。如果开关不被按下去灯是不会亮的,灯亮了只是一个结果。所以在刚才这个过程中应该是开关受到了刺激,灯做出了反应。(空几秒钟给学生思考)
通过对这两个例子的分析,可以归纳出:可以同一个对象受到刺激作出反应;还有可能是一个对象受到刺激,另一个对象作出反应,但是两个对象之间有关联的。例如,开关和灯之间就是有电线连接的。
环节三 结合小程序理解概念
教师:刚才结合生活中的例子对对象、属性、方法、事件的概念有了一定的了解,下面结合本节课任务进一步学习这些概念在VB中是如何体现的。请把Visual Basic打开。
打开VB以后,首先看到这个灰色窗体就是一个对象。除了窗体对象外,还可以利用左侧的工具箱中的工具创建新的对象。结合今天的任务,我们还需要创建一个文本框对象和三个命令按钮对象。
教师:首先选中控件工具箱中的工具,然后将指针放到窗体上,会发现指针变成了十字形,按住鼠标左键不要松手拖动鼠标,就创建了相应的对象。请大家按照此方法,依次在窗体中创建所需要的四个对象。
学生:(按照教师说的方法完成四个对象的创建)
教师:对象是有属性的,我们可以通过右下角的属性窗口来修改对象的属性值。
教师:目前一共有五个对象。而属性窗口只有一个,属性窗口究竟从属于哪个对象?
教师:在VB中遵循这样一个原则,要修改哪个对象的属性值就先选中这个对象,属性窗口就会对应的显示选中对象的属性。命令按钮上一般都有一些文字,对使用者有提示作用,可以通过修改命令按钮的Caption属性值来修改命令按钮上面显示的文字。
学生:(学生修改三个命令按钮的Caption属性值,做的快的同学尝试修改文本框中显示的内容)
教师:(小结)可以通过修改文本框的text属性值来修改文本框显示的文字。
教师:(运行程序发现不能达到想要效果)需要添加代码后才能达到预想的效果。进入代码编辑状态。分析任务,我们的愿望是单击这个命令按钮(显示文字为B的命令按钮),文本框中的文字就变粗体了。这个命令按钮叫什么?
学生:B、B按钮(此时,学生还不知道对象的名称)。
教师:这个命令按钮是叫B吗?在VB中每个对象都有自己的名称。怎样知道每个对象的名称呢?首先要选中这个命令按钮,<名称>属性后面的值就是它的名字。这个命令按钮的名称是Command1。牢记每个对象的名称,对编写代码是非常重要的,现在我们来看下每个对象的名称都是什么。
学生:(和老师一起逐一查看每个对象的名称并牢记对象的名称)
教师:我们的愿望是单击Command1命令按钮后文本框中的文字就变粗体了。在这个过程中,谁受到了的刺激,谁做出了的反应?(这样问的目的是使学生跟前面的问题相联系)
学生:Command1受到了刺激,text1做出了反应。
教师:Command1受到了怎样的刺激,text1做出了怎样的反应?
学生:Command11被鼠标单击了,text1中的文字变粗了。
教师:这个过程如何通过代码来实现?首先在通用菜单下找到Command1。在英文中表示“单击”的单词是Click。然后在声明菜单中找到click事件,在这里默认的就是Click事件。Text1中的文字做出了加粗的反应,通过修改Text1的一个属性值实现文字变粗的效果。对象的(重音强调)属性,“的”我们用“.”来代替。在英文中“字体”的单词是Font,“加粗”单词是Bold合在一起就是FontBold。现在明白为什么在word中为什么用B来表示文字加粗了吧,表示文字倾斜的是那个属性?(同时在教师机上写代码,当按下“.”后悬浮菜单展开)
学生:FontItalic(学生可能不清楚表示倾斜的单词,但是知道Word软件中I按钮来控制文字是否倾斜,所以对照着悬浮菜单学生知道是FontItalic属性)
教师:现在体现出学习英语的重要性了。代码写完整Text1.FontBold=True。请分别完成Command1_Click事件过程代码和Command2_Click事件过程代码。
学生:(积极地编写代码,很快就有人写完了,写的快的同学尝试写Command3的Click事件过程代码但未成功)
学生甲:(在讲台前展示自己写的代码,并讲解)
教师:学生甲做的非常好,看来这两个按钮的事件过程代码大家都会写了。巡视中发现很多同学都在尝试写Command3_Click事件过程的代码了,要想实现打开颜色对话框改变字体颜色的效果目前拥有的五个对象都不具备这个功能,换句话说这五个对象都不具备打开颜色对话框的方法,要实现弹出颜色对话框还需要添加另外一个对象。
教师:首先找到Microsoft Common Dialog Control 6.0控件,在控件工具箱上单击鼠标右键在弹出的对话框中选择“部件”,接着在弹出的窗口中选择“Microsoft Common Dialog Control 6.0”。单击确定,完成控件的添加。第二,在控件工具箱中选中该控件,在窗体上创建新的对象──CommonDialog1。
学生:(跟着教师的讲解,一步步完成操作)
教师:利用CommonDialoge1的showcolor方法来打开颜色对话框,代码如何书写呢?同样用“.”来连接对象名和方法名。CommonDialog1.ShowColor。
学生:(按照教师的讲解添加代码commdialog1.ShowColor,并观察运行结果,发现虽然颜色对话框可以打开,但是文本框中的文字却不改变颜色)
教师:大家在运行程序后发现文字的颜色并没有改变,为什么呢?CommonDialog1的ShowColor方法只是实现了打开颜色对话框,而要想Text1中文字颜色的改变,还需要修改Text1的ForeColor属性值。代码如下:
CommonDialog1.ShowColor
Text1.ForeColor= CommonDialog1.Color
学生:(按照讲解完成代码编写,并运行程序查看是否正确,完成快的同学帮助未完成的同学)
教师总结(幻灯片):
1.对象。
在VB中除了窗体对象外,还可以通过控件工具箱创建新的对象。
2.属性。
今天这节课上我们学习了两种修改属性值的方法。
①可以在属性窗口中修改对象的属性值
②可以在编写代码后程序运行时修改属性值。格式为:对象名.属性名=属性值()
3.事件。一般就是指鼠标或键盘等事件,可以在过程的下拉命令按钮中找到。格式为:对象名_事件名
4.方法。指对象所具有的功能。语法格式为:对象名.方法名[参数]
5.属性和方法的语法格式的区别。虽然属性名和方法名与对象名之间都用“.”来连接,但属性名后面有“=”。而方法名后面一般会有参数而没有“=”。
环节四 细节完善(提高任务)
教师:巡视时有人问我,“为什么我们按钮上面显示的文字样式怎么和您的不一样呢?”可是我看到咱们班安顿同学和我制作的样式是一样的,我们请安顿同学给大家讲讲他是怎么做的?
安顿同学:除了需要修改命令按钮的Caption属性外,我们还要修改命令按钮Font属性的属性值。单击Font属性右侧的按钮,在弹出的对话框中修改字体样式。
学生:(同学按照安顿的讲解,完善自己的小程序)
【课后反思】
本节课紧紧围绕记事本小程序展开,以手机为例使学生对对象、属性、方式、事件等概念有了感性的认识,然后在进入到VB的世界,进一步加深对这些概念的理解。
1.兴趣是最好的老师
新课程的一个重要理念是改变以往课堂结构中单纯以教师的教为主,学生只是被动接受的教学格局,教学的关键是调动学生学习的积极性、主动性,主动的去学习、思考和探究。本节课中的任务大大调动了学生的积极性。本节课上一开始就给学生展示了一个记事本小程序,在展示完程序所具有的“神奇”功能后,学生对此产生了浓厚的学习兴趣。由教学实践来看,本节课上学生表现出了很强的求知欲。写完Command1_Click和Command2_Click事件过程的代码后,学生积极主动的开始思考写下个过程代码如何书写,尤其是更改文本框字体颜色这部分代码,动作快的学生主动尝试代码的编写,并在课堂上就要求老师快点讲,快点讲。本节课上充分展现了学生的自主学习,由被动学习变为了主动学习。
2.知识讲解也采用“任务驱动”
本节课中对对象的Caption属性和名称属性的讲解有了小小的尝试。由于他们默认的属性值是相同的,为了将他们加以区别在以往的上课时我总是对比着讲这两个属性,结果事与愿违,学生反而将这两个属性混淆起来了。而这次我做了小小的改进:首先在界面设计时,我强调一般命令按钮上会显示一些提示性文字,我们可以通过修改他的Caption属性来修改这些提示性文字。对象的名称属性并没有马上讲解,而是在需要写代码时我才提问“鼠标单击那个命令按钮„„”学生一般会用命令按钮上显示的文字来称呼这个命令按钮,这时我紧紧的抓住他们的回答反问到“这个命令按钮上显示的文字是‘B’,那它就叫B吗?每个对象都有自己的名字,„„”此时才引出对象的名称属性。通过这样的改进不仅将名称属性和Caption属性的含义表述清楚了,而且学生很容易的将两者区分出来了。
3.将抽象的概念通俗化
概念的讲解一直是我多年来对头痛的事情,对概念的理解是一个自身领悟的过程。
上课时我总是为了能让学生明白某个概念的含义而冥思苦想我应该用什么样的语言来描述这个概念的含义。上完本次课后,我体会到由学生易懂的知识入手,然后在迁移到枯燥难懂的知识上来。不仅便于学生对概念的理解和掌握,而且也能烘托课堂气氛,将复杂问题简单化,大大提高了学生的学习效率。
4.不足之处
在本次课中我忽视了一个重要环节,就是让学生来展示一下制作成果。这节课上学生积极踊跃,而我确没有能够给学生搭建一个平台来展示他们的学习成果,很多同学在制作完程序后都很兴奋,不断的举手告诉我说自己已经做完了。而我也没能给学生及时的鼓舞,学生的积极性还没有充分发挥出来。
【评析】
本节课将通过身边熟悉的事物──手机,把枯燥难懂的概念进行简单的诠释,并通过VB本身的可视化编程环境,让学生在模仿教师完成任务的过程中获得小小成功的喜悦,激发他们想进一步学习的兴趣。
本节课的两外一个亮点在于教师的任务的选取。上课伊始,教师刚刚展示完这个程序后,学生就表现出了强烈的学习欲望和学习热情。事实上,整节课上学生都持有积极学习的态度,由以往的被动学习转变为主动学习。
编程方法与思路 第3篇
关键词 可编程控制器原理与应用 教学探索 实践教学
中图分类号:C45 文献标识码:A 文章编号:1002-7661(2014)10-0005-02
可编程控制器(PLC)是20世纪60年代诞生并发展起来的一种新型工业控制装置,集自动控制、计算机技术和通讯技术于一体。PLC以其体积小、功能齐全,通用性强,可靠性高、抗干扰能力强、能适应恶劣工业环境等独特的优点,在各个领域获得了广泛应用,被誉为当代工业自动化的三大支柱之一。《可编程控制器原理与应用》是武汉东湖学院机电工程学院面向电气工程及其自动化、自动化专业所开设的一门专业课程,对于自动化专业,还将其列为重点专业课程之一。本文在近5年教学实践的基础上,对《可编程控制器原理与应用》这门课程的教学方法进行了探索和总结,以期能进一步提高该课程的教学质量。
一、我院《可编程控制器原理及应用》课程现状
《可编程控制器原理及应用》是一门实践性很强的专业课。这门课程设置的最终目的是让学生掌握可编程控制器的工作原理、编程方法,并达到能利用它来实现简单系统的自动控制,为他们将来走向工作岗位打下一定基础。
根据以往学生的学习反馈来看,大部分觉得本课程学习起来比较困难。一方面,可编程控制器涉及的知识面比较广,综合性强,需要学生在学习过程中思路清晰,概念准确。但由于学生思维能力、知识基础和综合分析能力方面存在差异,给教学带来一定难度。另一方面,本课程除了理论学习外,还需要实际动手操作能力,这是三本院校部分学生比较欠缺的一部分。
我所在的学院对《可编程控制器原理与应用》安排的理论课时比较少,只有32课时,如何在这么短的时间让学生掌握PLC的工作原理、指令以及相应编程方法,最后再应用于简单的系统,对任课教师来说是一个挑战。选择合理的教学内容并把握好教学重点是至关重要的环节。
二、教学方法探索
1.培养学生学习兴趣
兴趣是学生最好的老师,也是他们学习的动力。如何才能提高学生的兴趣呢?
(1)充分重视初期课程
通过教学实践我们发现,刚开始的几次课非常重要,要让学生在初期的教学中,建立起对PLC技术应用的全面了解,而不仅是一个抽象的概念。可以广泛收集PLC在生活中的广泛应用,比如:电梯控制、十字路口交通灯控制、洗衣机控制、工业机械手控制等,并通过图片展现,视频短片播放等形式建立起对PLC的感性直观认识,让学生体会到PLC能应用在我们身边的很多领域,从而激发他们的学习兴趣和求知欲。
(2)教学案例紧贴生活
可编程控制器原理与应用的教学内容很多,其中编程方法是重点也是难点。而编程方法的基础则是指令的学习,指令学习是非常单一的,如果按照传统的理论教学模式,会让学生觉得难以理解并且会感到枯燥乏味,会降低他们的学习兴趣和学习热情。因此,我引入了案例教学法,而且所选案例紧贴日常生活,为学生所熟悉。比如引导学生设计十字路口交通灯,从中介绍定时器的应用;引导学生设计某食品包装线控制系统,引入计数器的指令等案例去取代空洞的理论,从而提高学生的学习兴趣和学习效率。
2.教学内容选择
可编程控制技术的涵盖面非常广,可以应用于自动化、电力、交通运输、航海等各个领域,其知识点也非常多,在有限的课堂时间内,如何有针对性地选择教学内容至关重要。
由于我所面对的专业为电气和自动化,在后续的学习过程中需要具备一定的电气控制基础,但前期并没有开设相关课程。故在设计本课程教学内容时加入了一小部分电气控制,其次是PLC的基本知识,包括其组成、编程语言、工作原理等内容,然后再结合学校实验设备——OMRONCPM2A,让学生掌握该设备的内部元器件、基本指令、常用功能指令等知识,最后再选择一些日常生活中典型的案例让学生掌握基本的总体程序设计方法,包括经验设计法、时序逻辑设计法和顺序控制设计法等。让学生逐步由简到难,慢慢掌握PLC的用法。重要的是还要让学生能够触类旁通,通过学习了CPM2A PLC后也能去掌握其它型号PLC的相关用法。
同时,在讲课过程中,重视案例选择,针对不同专业的学生,选择不同的案例。尽量所选择的案例与他们的专业相关,而且能和其他专业课挂钩。
3.教学方法探索
(1)采用启发式教学
在教学过程中,采用启发式教学,将教学重心从教转到学,避免“满堂灌”和“填鸭式”的教学,造成学生没有足够的思考空间,时间长了会造成学生的抵触情绪。因此,在教学方法上要注重老师主导,学生主体的模式,充分发挥学生的主动学习精神。比如在程序设计方法中,学生掌握基本编程方法后,程序设计就不再局限于条条框框,学生可以在老师的引导下去自主编程来实现相应的功能,以增加他们的成就感,让他们体会到其中的乐趣。
(2)更新教学模式
在授课时,突出加强学生综合能力培养和开启学生工程思维方式的教学理念。在讲指令和程序设计案例时,从实际工程问题的角度出发,以典型案例为主线,将每个案例分解为若干任务来进行解决,在其中引入相关原理和概念,并在适当的时候对有关知识进行拓展,以培养学生应用工程思维方式去理解问题和解决问题,缩短他们与就业岗位之间的距离。
同时,注重课堂教学与科研成果的融合,加强课堂教学和工程实际的联系,丰富课堂教学内容,不仅使课堂教学即具有基础理论性,又具有较强的应用性,而且使学生能更准确把握理论知识与工程实际的结合,激发学生主动学习的积极性。endprint
(3)教学手段灵活
近年来,随着信息技术的不断发展,多媒体教学已经成为课堂教学的主要形式。多媒体教学能够通过图像、文字、动画等多种形式来呈现教学内容。针对课程的特点,在上课过程中,对一些重点、难点问题和一些典型案例的讲解采用板书与多媒体相结合,以充分发挥板书层次清晰和多媒体教学手段形象生动、信息量大的特点,加深学生对课程重点难点的理解,提高教学质量和水平。
4.重视实践环节
该课程实践性非常强,需要充分锻炼学生的动手能力,直观的实践环节是非常重要的一个环节。
(1)实践环节安排
实践教学作为专业教学的一个重要组成部分,与理论课教学处于同等重要的位置。针对该课程特点,我们院设计了几个不同的实践环节,比如对于自动化专业,要求他们必须要有较强的PLC基础,则为他们设置的实践环节是从“认知——课程实验——课程设计”,有一部分特别感兴趣的学生,还可以在毕业设计环节和专业设计环节中选择合适的案例和控制系统来进行进一步的研究。同时,学校配备了并建立了设计性、开放性、综合性、先进性的实验教学平台,学生可以根据学习需要自主选择、设计完成不同类型实验,有利于培养学生的工程应用能力和设计创新能力。
(2)充分调动学生积极性
在实践环节中,为了充分调动学生的积极性,让学生在动手的过程中去掌握PLC的相关应用方法,也为了避免学生“吃大锅饭”的现象,我们将教学内容分成不同的设计任务,然后将学生分成若干个兴趣小组,由兴趣小组的学生来进行讨论,分组完成设计任务。在教学过程中,教师处于主导地位,调动兴趣小组的协作能力,让学生自己动手编程序,然后进行程序调试,在调试过程中找出问题并解决,不断进行总结。从而慢慢掌握可编程控制器的几种基本编程方法和可编程控制器的接线方法和运用。
同时,从各个兴趣小组中抽调出一部分优秀的学生去参加相关大赛,以大赛促进教学,也可以进一步带动并促进学生的学习积极性。
三、结束语
《可编程控制器原理与应用》是一门理论性、趣味性和实践性都比较强的课程,要针对不同的教学对象去设置不同的教学内容,并采用合适的教学方法,充分调动学生的兴趣并培养他们的工程应用能力和创新能力,才能使学生能更好地掌握该课程。
参考文献:
[1]廖常初.PLC编程及应用(第3版)[M].北京:机械工业出版社,2008.
[2]林仁军.《可编程控制技术》教学难点的突破[J].四川文理学院学报,2007,(17).
[3]杨佳.浅谈如何提高PLC教学效果[J].科学咨询,2013,(19).
[4]熊凤,陈乐庚,赵学军.“可编程控制技术”教学改革与探索[J].中国电力教育,2012,(7).
[5]耿道渠,罗志勇,蔡军.《可编程控制技术及应用》课程教学方法研究[J].科技信息,2012,(33).
编程方法与思路 第4篇
条形码是利用条 (着色部份) 、空 (非着色部份) 及其宽、窄的交替变换来表达符号信息的“图形符号”, 每一种编码都有一个遵循的标准, 通过条码识别仪器可解码出它包含的字符信息。
1、39 码的特点
能表示字母 (A-Z) 、数字 (0-9) 和其它一些特殊符号 (-, ., /, +, %, 空格) 共43 个字符。
条码的长度可变, 对数据的字节数并没有限制。
通常用“*”号作为起始符和终止符。
不用校验码。
代码密度介于每英寸3-9.4个字符。
空白区是窄条的1-10倍, 宽条是窄条的2-3倍。
广泛用于工业、图书、以及票证自动化管理。
二、编程思路
编码规则:其中0 表示窄元素, 1 表示宽元素, 奇数位为条元素, 偶数位为空元素。
根据上表所示规则, 空白区取一个窄元素的宽度。使用下列对应规则:“_”表示窄空元素, “__”表示宽空元素, “|”表示窄条元素, “||”表示宽条元素。
1、定义一个转换函数:Bar Code (S1 as string)
2、定义一个绘制函数line_bar_code (code_bar as string )
其中Object.Line (X, y) -Step (widt, high) , colo, BF是在Object上按colo设定颜色绘制并填充方框图形。B把指定点作为矩形的对角点, 画出一个矩形。F指定方框总是被填充为实心。如:Line (500, 500) –Step (1000, 2000) , , B画出一个方框, 其左上角为 (500, 500) , 宽为1000 单位, 高为2000 单位。通过调用这两个函数就可实现条码打印。
摘要:本文通过对39条形码的分析及用VB编程实现批量打印, 使读者能从中了解条形码的有关知识, 39条形码的编码规则及编程思路, 打印输出的常用编程方法。下面介绍用VB语程打印39条形码的设计方法。
给想学编程的兄弟一点学习的思路 第5篇
很多新手朋友在刚开始学习编程技术的时候,都遇到过这种问题,学习了一段时间之后,还是一点思绪都没有,不知道该如何入门,翔子总结了一下8点,送给编程新生,希望对大家学习编程技术有所帮助。
1.明确学习目的学习编程对大多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象。学习编程还能锻炼思维,使我们的逻辑思维更加严密;能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作。知识经济时代给我们带来了无限的机会,要想真正掌握计算机技术,并在IT行业里干出一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。
2.打好基础
学编程要具备一定的基础,总结之有以下几方面:
(1)数学基础从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。
(2)逻辑思维能力的培养学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。
(3)选择一种合适的入门语言面对各种各样的语言,应按什么样的顺序学呢?程序设计工具不外乎如下几类: 1)本地开发应用软件开发的工具有:Visual Basic、Delphi、VC++(C++ Builder)等;数据库开发工具有:Visual Foxpro、Oracle Developer、Power Builder 等。2)跨平台开发开发工具如 Java 等。3)网络开发对客户端开发工具如:Java Script 等;对服务器开发工具如:PHP、ASP、JSP、ISAPI、NSAPI、CGI 等。以上不同的环境下几种开发工具中 VB 法简单并容易理解,界面设计是可设化的,易学、易用。选 VB 作为入门的方向对出学者是较为适合的。
3.注意理解一些重要概念
一本程序设计的书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三,触类旁通。
4.掌握编程思想
学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。例如学习VC 就要学习Windows 的内在机理、什么是线程......;学习COM 就要知道 VTALBE、类厂、接口、idl......,关键是学一种思想,有了思想,那么我们就可以触类旁通。
5.多实践、多交流
掌握编程思想必须在编程实际工作中去实践和体会。编程起步阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。这就要多交流,各人的思维方式不同、角度各异,各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。亲自动手进行程序设计是创造性思维应用的体现,也是培养逻辑思维的好方法。
6.养成良好的编程习惯
编程入门不难,但入门后不断学习是十分重要的,相对来说较为漫长。在此期间要注意养成一些良好的编程习惯。编程风格的好坏很大程度影响程序质量。良好的编程风格可以使程序结构清晰合理,且使程序代码便于维护。如代码的缩进编排、变量命令规则的一致性、代码的注释等。
7.上网学编程
在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载。推荐一个学习网站“it人家”网站有很多编程方面高手发布的学习心得==都可以借鉴,另外可以认识很多编程方面的朋友,大量的编程语言视频教程支持在线观看,还有c++、java、.net、c#、数据库等编程方面电子书阅读下载,是目前国内比较出名的程序员交流技术网站。也可以,进入一些类似的学习站学习,我个人觉得,每个学习站都有可以学习的东西,虽然可能有的站学习资源很少,但是我们不要一味贪图找一个很全的站,又一直苦苦找站,而浪费时间,给自己借口说没有找到可以学习的站,那我就觉得你要端正态度了。虽然资源少但是你把它里面好的东西,知识学了,那你就进步了。有浪费在苦苦找站的时间,还不潜下心来,从小学起。。
8.加强计算机理论知识的再学习
企业文化落地的思路与方法 第6篇
也许有人会质疑:企业文化如此虚化的东西到底有何用处?这本身就是一个“伪问题”,真正的问题应该是:如何让企业文化落地生根,并发挥出应有的力量?因为任何企业都有其特定的文化,都会因不同的文化而产生不同结果,无论企业自身是否意识到这一点。这就像每个人都有自己的价值观和行为方式,当遇到一些事情时,他的行为就会遵循自己的价值观,但是他未必知道自己为什么那么做,或者说不知道驱动自己行为背后的价值理念是什么。
企业文化落地的思路
企业文化的落地需要回答两个问题:一点是“落什么”,即落地的内容,要弄清楚企业应该构建什么样的文化理念体系,既能符合企业实际,又能有效推动战略;另一点是“怎么落”,即落地的方法,要想清楚企业文化如何转化为行为。要回答以上两个问题,就要抓住文化、管理与战略这三个关键点的联系。
所谓文化,是企业共享的感受、认识和思考问题的基本假设,包括什么是真实的、什么是好的、如何对待他人、如何处理人际关系、如何工作等基本面。基本假设多种多样,选择哪种假设,必须与外部功能联系起来。所以,构建企业文化理念,首先需要确战略,即通过战略为文化理念定向,使文化理念满足和支撑战略的发展。比如做食品业务,就要强调品质的理念;做航空业务,就要强调安全的理念。
基于战略构建出系统的文化理念之后,就进入文化落地的阶段了。通常指的文化落地,都是孤立地借助培训、活动等方式加强员工对文化的认知与认同,这很容易导致文化的虚化。所以,必须为文化找到一个黏着点。这个黏着点就是管理行为,包括具体的管理策略、制度与流程等。在这个阶段,首先需要基于文化理念评估管理行为,即企业采取的管理行为是否与文化理念相一致。如果一致,那么企业就拥有一个符合文化的管理环境。环境决定行为,管理环境会引导、固化员工的行为,促使员工做出符合文化理念的行为。
为了保证文化落地的有效性,还需要不断评估,使战略、管理、文化形成一个互相联动、持续优化的闭环过程。在战略既定的条件下,关键评估点有两个:一是文化理念与管理行为的一致性,二是管理行为与战略发展的配适性。简单地说,就是我们的行为是否符合文化,我们的行为是否对战略目标的实现有价值。而在战略转型期,首先需要基于新的战略愿景和目标,重新构建文化理念体系。
企业文化落地的方法
方法一:领导推动力
企业文化与领导者是同一枚硬币的两面。领导者的言行是文化落地的启动力和推动力,只有领导者“信以为真”,才有员工的“信以为真”。所以,文化落地的第一步是建立领导者的自我管理机制。比如,当年张瑞敏为了能唤醒海尔员工的质量意识,怒砸冰箱,真正让员工感受到了企业对质量的关注。现在那把锤子还放在海尔的历史展厅中,砸冰箱的故事更是广泛传播,不仅影响了一批批海尔人,也影响了整个中国企业。
领导的自我管理包括三个层面:
首先是领导者的“大脑管理”。员工未必相信领导者说什么,但是一定会相信领导者做什么。因而,领导者需时刻反思自己的行为是否与企业文化保持一致。其中有六类行为对文化的塑造有重要作用,包括:领导者定期关注、衡量和控制什么;领导者对重大事件和组织危机做出反应;领导者如何分配珍贵资源;领导者特意做的角色塑造、教育和培训;领导者如何分配奖赏和地位;领导者如何招聘、甄选、晋升和解雇组织成员。这些管理行为是领导者最需要关注的。
其次,是“身体管理”。即领导者要亲自参与文化落地建设,让员工亲眼看到、切身感受到领导者对文化的重视。比如亲自为员工做文化理念的培训,比如参加文化活动并结合活动分享文化理念的价值。
再次是“影子管理”。毕竟领导者没有分身术,要让更多的员工感受到领导者对文化的重视,需要将领导者讲话、视频的文化资料传播扩散出去。
方法二:培训学习力
通过培训帮助员工正确理解文化的重要性和企业文化的确切含义,以及文化管理方法等内容,进而引导员工采取符合文化的行为。阿里巴巴在规模尚小的时候,就不惜成本对新员工进行文化培训;海尔则通过海尔大学对新员工进行系统的文化培训。
在操作上,需要构建完整的培训体系与制度,能够做到:及时了解文化培训的需求;具备良好的课程设计能力及丰富的课程库;高效的培训运作方式;不断评估学员的学习状况、培训师的培训效果及整个培训体系的运行情况,以便持续改善。
在培训中要注意以下三点:第一,针对不同层级的管理者或员工,设计不同的培训目标与计划。对高层管理者培训的重点是企业文化与领导艺术、企业文化与战略管理、企业文化与变革管理等内容。对中层管理者培训的重点是企业文化建设方法、企业文化与领导、管理技能。而对基层员工培训的重点是企业文化理念的理解、员工行为守则、企业文化制度等内容。第二,把握员工习得文化的节奏和过程,并设计相应的文化培训。这个过程包括从最开始的“记得住”、到“想得通”、“信得过”、“做得到”、“帮得着”、“教得好”,最后实现“信得真”的目标。第三,采取互动性培训、行动学习等方法用以提升培训质量。
方法三:教练驱动力
所谓教练驱动力,就是培养企业文化志愿者,使其成为文化教练,发挥出自发的文化培训力量。笔者所服务的一家食品巨头企业,就发挥不同管理层级的员工做文化教练。比如中层管理者,强调讲个人成功经历和文化故事,文化部员工则提供专业的文化管理方式培训,帮助员工将文化理念融入工作;而普通员工则发展为文化志愿者,创作了大量作品,比如文化故事集、文化先进人物集、文化“三字经”、文化“八荣八耻”等等。
nlc202309022020
这样做的好处在于:第一,员工之间相互传播,形成一种文化口碑,这种口碑比正式的文化培训更容易让人信服。道理很简单,员工更倾向于身边的同事,而不是领导者。第二,降低人力资源成本,不需要设计更多的文化培训岗位。第三,教是最好的学习方式,当志愿者帮助他人学习文化理念的时候,他自己也会加深对文化的理解和认同。笔者曾服务过的一家企业,在每个部门都会选择一至三位业绩未必好但是深度认同公司文化的人,目的是通过他们促进部门的文化建设。
文化志愿者自发传播文化的方式多种多样,比如写文化流行语、写文化践行故事、探讨文化理念和文化建设问题、画文化漫画、创作文化歌曲等等。这方面海尔做得很好,所以我们可以看到海尔大量的漫画和员工故事。
方法四:行为转化力
这个环节的关键是加强员工对文化理念的认同,虽然实践起来很难,但是很关键。因为即使员工正确理解了文化理念,但是不一定会去做。增加对文化的认同,有利于员工将理念转化为行为。以西南航空当年倡导“爱”的文化为例,在“9·11”事件之后,整个航空业都陷入了危机,在这样的关头,西南航空宁愿遭受损失,也坚决保护员工岗位。此举加强了员工对公司“爱”文化的认同。于是,员工将“爱”贡献给公司和客户,纷纷提出了降低成本的建议。为帮助公司度过难关,西南航空员工还将自己的红利甚至部分工资捐给公司。
这里介绍几个增加认同的方法。一是观察访谈,可以参照文化培训师、部门领导者的意见。二是推动部门将公司文化理念转化为部门管理理念,进而推动员工将公司文化理念转化为个人工作理念,并将其作为部门管理和员工工作的指引。三是举行分享会,在分享会上,通过员工介绍自己的文化践行方式和效果互相促进文化认同感。四是推动员工成为文化志愿者,员工越是愿意承担志愿者的义务,就越说明他认同文化。
方法五:管理固化力
所谓管理固化力,就是通过采取符合企业文化理念的管理策略与制定、创造出一个符合文化理念的环境,进而引导和固化员工的行为。一些企业将文化作为招聘、晋升的标准之一。比如在阿里巴巴的绩效考核中,企业文化和价值观考核占据了50%的比重。
那么,如何创造管理固化力?这里以某著名互联网公司创新文化的落地为例来说明。
第一步,通过结构化的方式,对创新作出精确的释义。
创新的释义
勇于突破现状,事事皆可创新—创新观念
创新最终要能够创造价值—创新原则
勇于尝试、善于总结、包容失败—创新方式
第二步,针对每一条释义制定相应的管理策略或制度。
比如在创新方式上,设立年度创新奖,其中“最佳创新奖”旨在奖励在产品创新、技术创新、流程创新上表现卓越的团队和个人;“最佳失败奖”则是奖励勇于尝试,结果虽然失败但是有所总结和收获的创新团队和个人。
再比如在创新观念上,搭建“Open Idea”,建立一个专门的内部创新交流平台,鼓励不同层级、不同部门的员工进行交流,提交创新Idea,进行线上PK,每季度评选出TOP3的Idea,经可行性分析后分配资源予以落实。同时,设立创新基金,按一定比例分配给各部门,用于奖励部门内具有创新意识和行为的同事。此举旨在鼓励内部创新意识,体现事事皆可创新。
第三步,将每一项策略分解到相应的部门,制定责任人,并制定出相应执行时间节点。
方法六:反思改善力
在文化落地中,形成反思质询的氛围,帮助员工反思自己的行为,保证自己的行为体现文化,使文化真正落实到工作中。这可以通过自我反思或团队文化质询会的方式进行。具体来说,无论是领导者,还是员工,都应定期、甚至时时追问自己一些问题:我遇到了一个什么样的问题?我对待此问题的态度、理念和行为是什么?这样的态度、理念与行为是否符合文化要求?如果不合适,那么我应该怎么做?领导者还需要问一个问题:如何让员工感受到我是按照文化理念决策和采取行动的?
古人讲“三省吾身”,自我反思是中国文化的传统。随着对国学、领导力与自我修炼的关注度的不断增强,能够进行文化反思的企业家也会越来越多。
方法七:战略导向力
通常企业文化的评估工作都是就文化谈文化,就理念说理念,与文化建设的价值与功能脱节。为了保证文化落地,增加文化效能,需以战略为导向。
具体来说,其评估分为两个层次:第一个层次是管理行为一致性评估,即目前所采取的管理行为中,哪些与文化理念的要求一致,哪些是不一致的?继而找到管理行为上的不足;第二个层次是管理效能评估,即目前采取的、符合文化要求的管理行为,哪些改善了业绩能够支撑战略的发展?哪些不能,如何改进?
这种方式,实质上是以管理行为为桥梁,将文化与战略联系起来,这避免了文化的虚化,增加了战略的动力。笔者接触到的企业家中,有很多企业家已经建立了这样的意识,并逐步采取相应的举措。
企业文化建设艰难而漫长,但是如果企业能“信以为真”,采取科学的方法,有序规范地投入文化建设,就一定能产生超出预期的回报。最后,以管理大师明茨伯格的一段话作结:“确立一个企业文化可谓困难重重,而要改变文化也得耗时数年,但是,如果疏于管理,企业文化则很容易毁于一旦。”
编程方法与思路 第7篇
关键词:组件对象模型,节点,动态链接库,混合编程,雷达界面仿真
计算机和仪器的密切结合是目前仪器发展的一个重要方向。这种结合有两种方式,一是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。另一种方式是将仪器装入计算机,以通用的计算机硬件及操作系统作为依托,实现各种仪器功能,虚拟仪器主要是指这种方式。
LabVIEW是美国NI公司研发的功能强大而且灵活的仪器分析开发软件,是目前应用最为广泛的虚拟仪器开发软件。其拥有强大的界面开发能力和良好的软硬件接口,但是在对各种算法的支持方面,LabVIEW的工具箱有限,这限制了使用LabVIEW对大型应用程序的快速开发。Matlab拥有强大的矩阵运算、图形处理能力和内容丰富且可扩展的工具箱,但其界面开发能力较差,并且在数据输入、网络通信、硬件控制等方面都比较繁琐。针对LabVIEW和Matlab两种软件的优势和不足,使用混合编程的方法,可以很好的结合两者的优势,互补不足,开发出更具智能化的虚拟仪器。
本文首先介绍了三种方法实现对Matlab和LabVIEW的混合编程,分别是Matlab Script节点法、动态链接库(DLL)技术和COM组件技术,重点介绍了后两种比较复杂的混合编程方法,并在此基础上完成了对雷达显示界面的仿真。(编程环境:Matlab6.5;LabVIEW 8.5;MS Visual C++6.0)
1 混合编程方法
在进行混合编程之前,需要对Matlab和MS Visual C++6.0编程环境进行设置。这是因为后两种方法都需要借助外部编译器对M文件进行编译,动态链接库(DLL)技术还需要使用Matlab Add-in插件。
Matlab Add-in插件能将M文件自动集成到Visual C++的工程中。安装外部编译器和Matlab Add-in插件,需要如下几个步骤:
1)在命令窗口中输入mbuild–setup或mex–setup;
2)选择MS Visual C++6.0;
3)在Matlab命令窗口中输入如下的命令
这两个命令将Matlab的路径保存在一个名叫mccpath的文件中。Add-In需要这个文件来确定Matlab的路径。当Matlab更换目录时需要重新执行这两个命令以便Add-In获取Matlab的路径。
4)打开MS Visual C++。
5)在MS Visual C++菜单中选择工具->定制。
6)点击附加项和宏文件标签。
7)点击浏览,在Common文件夹中选择Addins文件夹中的MatlabAddin.dll文件将Matlab Addin安装进MS Visual C++。
1.1 Matlab Script节点法
LabVIEW软件自身提供了Matlab Script节点来调用Matlab语言开发的算法,实际上是使用ActiveX控件与Matlab Server进行通信。在LabVIEW中调用Matlab的函数算法是把Matlab作为一个ActiveX服务器,LabVIEW将程序发送给Matlab,由Matlab在后台执行,并返回结果。在Matlab Script节点中,用户可以编辑Matlab程序,也可以直接调入已经存在的Matlab程序,并在LabVIEW环境下运行。这种方法简单实用,但要求客户机装有Matlab并在后台运行,程序可移植性不好。对简单的工程和对实时性要求不高的工程可以使用该方法进行混合编程,能大大减少LabVIEW程序的复杂程度,提高程序的可读性。使用该方法有以下几点需要注意:
1)客户机必须安装Matlab。
2)由于LabVIEW是使用ActiveX的方法调用Matlab,所以Matlab脚本节点只能在Windows平台下使用。
3)Matlab与LabVIEW的输入输出类型有很大区别,在使用Matlab脚本节点时应注意输入输出类型的转换。可直接右键点击输入输出节点修改数据类型。
1.2 DLL(Dynamic Link Library)动态链接库技术
1.2.1 动态链接库文件的生成
用MATLAB Script节点法所开发出的工程不能够脱离Matlab独立运行,在实际运用中要求客户机都安装有Matlab,这往往是不现实的。为了增强程序的可移植性,利用DLL(Dynamic Link Library)动态链接库技术,结合Matlab、Microsoft Visual C++、LabVIEW三种编程软件,可以开发出可独立于Matlab而运行的工程。其流程图如图1所示。
函数文件经Matlab编译器编译后直接生成的动态链接库文件,其输入输出类型均为mxArray指针。LabVIEW支持标准C数据类型,但不支持mxArray,而Matlab所生成的动态链接库文件要求输入数据为mxArray。为此需要使用MS Visual C++对函数文件进行包装,使其输入输出类型符合函数文件和LabVIEW的要求。
我们使用MathWorks公司为MS Visual C++开发的Matlab Add-in插件将M文件集成入VC++的工程中。在VC++中使用以下两个函数:mxSetPr(a,b)———double数据类型的值赋给mxArray的实部、mxGetPr()———将mxArray数据类型转换为double数据类型,完成对函数文件的输入输出类型的转换,编译链接工程后,生成可供LabVIEW调用的动态链接库。图2为生成的动态链接库的结构图。
1.2.2 在LabVIEW中调用DLL
在LabVIEW中有下面两种途径可以调用DLL文件:
1)使用CLF(Call Library Function Node)实现对DLL的调用
在程序框图窗口中打开函数选板,点击互连接口中的库与可执行程序,选择弹出选项中的调用库函数节点,并将其拖至程序框图窗口。
2)使用LabVIEW自动导入功能导入动态链接库
在程序框图窗口中,选择工具条上的工具->导入->共享库(.dll)选项,再对导入的动态链接库文件和其头文件进行正确的配置,并选择所需导入的函数后,LabVIEW就可将自动导入的动态链接库文件生成可用的子VI。
1.3 COM组件技术
COM是微软为了计算机工业的软件生产更加符合人类的行为方式开发的一种软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。Matlab所包含的Matlab COM Builder能帮助用户将用M语言开发的算法自动快速地转变为独立的COM组件对象,以供其他支持COM的编程语言调用,实现Matlab和其他编程语言的整合。LabVIEW也提供了对COM的支持。
1.3.1 创建COM组件
在Matlab中创建一个COM组件需要如下几个步骤:
1)选择start→MATLAB→MATLAB COM Builder。
2)在Component name中填入需要创建的工程名。
3)按编程需要选择使用C或者C++语言进行编译,再根据Matlab程序决定是否包含图形库。
4)工程建立后,将M文件添加到工程中。
5)工程编译完毕后在distrib文件夹中将生成相应的动态链接库文件并自动地注册到系统中。
6)编译完成后,在MATLAB COM Builder窗口中选择Package Component将COM组件打包并发布。打包后程序会在distrib文件夹下生成一个后缀为exe的自解压文件,运行它可实现动态链接库的安装和COM组件的注册。为了在没有安装Matlab的客户机上使用该COM组件,需要一同发布MCR(Matlab Component Runtime),可通过MCRInstaller.exe进行安装。
1.3.2 LabVIEW中调用COM组件
要在LabVIEW中调用COM组件,首先要引用COM对象。为此,首先在程序框图窗口中调用互连接口→ActiveX→打开自动化,右键点击打开自动化控件,选择ActiveX类,选中已注册类型库中的对象或生成的动态链接库文件,或直接从Matlab文件夹下的work文件夹中选择,这时会生成对应的图标与打开自动化控件相连接。
接下来选择ActiveX选板中的调用节点控件,将此控件与打开自动化相连,并在调用节点控件上点击右键选择方法———即Matlab程序中的函数名称。当方法有输出变量时,第一个变量为nargout,它的数据类型为Long,这个输入参数传递函数输出变量个数给编译函数。其余变量为函数的输入输出变量。
需要注意的是,虽然输入变量为整型或浮点型,但调用的函数内部对应的变量为变体型数据,LabVIEW会自动将输入数据转换为变体型数据,满足COM组件要求。但调用节点控件的输出数据为变体型数据,在输出数据时需要使用ActiveX选板中的变体至数据转换控件将变体型数据转换为LabVIEW能够显示和处理的数据类型。
1.4 雷达显示界面仿真
下例为基于Matlab与LabVIEW混合编程方法的雷达显示界面仿真。
在仿真中,通过LabVIEW控件编辑功能,使用Photoshop7画出雷达显示器与目标图形,然后将其导入LabVIEW中已有的控件,制作出雷达显示屏和目标模型,并将其设置为严格自定义的输入控件。图3为雷达显示界面的前面板。前面板由三个部分组成:雷达显示器控件与三个目标控件,扫描间隔控制控件(扫描间隔时间t单位为ms),目标坐标显示控件。
雷达显示器为一个转盘式的数值输入控件,由COM组件控制其扫描线进行扫描,扫描周期为T=360 t。三个目标由Matlab script节点仿真飞行轨迹。
扫描间隔控件用来控制扫描线的扫描快慢。
在程序框图中由雷达显示器的属性节点提供该控件的边界、尺寸等信息,将这些数据处理后输入While循环框图中,While循环再根据这些数据对目标位置进行初始化,每一次循环再通过Matlab script节点更新目标控件的坐标。图4为程序框图。
2 结语
三种混合编程方法中,Matlab Script节点法简单实用,可大大简化LabVIEW编程的复杂程度,直接调用Matlab中先进的算法。但该方法要求Matlab在后台运行,提供支持,故可移植性不高,程序运行速度也会受到影响。使用动态链接库技术进行混合编程,实现起来最为复杂,涉及到Matlab、LabVIEW、MS VC++三个大型软件的接口编程,但其能脱离Matlab被LabVIEW调用,执行效率高编程灵活,适合大型程序开发。COM组件法也能脱离Matlab使用,但在没有安装Matlab的电脑上需要安装MCRinstaller.exe。在LabVIEW中恰当的使用混合编程方法可以有效地提高编程效率,简化G语言编程的复杂程度,提高程序的运行速度,用户可根据工程的实际情况选用合适的混合编程方法。
参考文献
[1]裴锋,汪翠英.利用COM技术的LabVIEW与Matlab的无缝集成.仪器仪表用户,2005;12(2):97—98
[2]苏金明,黄国明,刘波.Matlab与外部程序接口.北京:电子工业出版社,2004
[3]National Instruments Corporation.LabVIEW Application Builder User Guide,2003
[4]雷振山.LabVIEW7Express实用技术教程.北京:中国铁道出版社,2004
编程方法与思路 第8篇
典型的单片机应用是控制和采集, 和与其他系统交互数据。广泛应用于生产、生活的各个领域。其中, 51单片机的技术资料丰富、成本低廉, 在生产和教学中都被广泛应用。在时序是非常重要的应用场合, 工程师往往采用空循环, 利用指令周期或中断置位的办法来进行延时。这样的设计方法, 造成很多计算能力的浪费。如果要增加功能, 或引入新的中断函数, 则可能破坏原来的时序。往往造成原来的程序重大改动 (例如需要重新计算指令周期) , 从而较大地增加项目成本和风险。
在单片机运行时因为main函数返回后是没有意义的, 典型的main函数总是被设计成循环做某任务, 或在最后放一个死循环。考虑到中断的存在, main循环的执行速度是不能肯定的, 它实际上是使用了所有没被中断函数使用的CPU计算能力。
时钟中断可以以一定的间隔周期被触发, 如果在触发时完成当前时序状态要求的任务, 而下一个时序状态要求的任务留待下一次中断时再做, 那么所有时序状态所合成的整个时序将是非常准确的。如果有多个任务, 则各自维护自己的时序状态, 互不影响。而且一般情况下也不必严格计算 (原因见下述) 指令周期。
根据51单片机规定, 如果一个中断函数没有执行完毕时同一个中断、同一级别或更低级别中断又发生, 则第2次发生不响应。这样的特点使设计人员避免了重入问题。但如果在一次中断中执行的代码过多, 就会影响下一次中断的发生, 从而打乱了时钟中断的发生周期, 也就打破了整个系统任务的时序。为了不打乱时序, 此处给出一个充分条件:
一个系统是多个任务的集合。一个任务可以看作是一个FSA (有限状态自动机) , 是一个五元组:
M= (Q, Σ, δ, q0, F) 。其中:
-Q, 状态的非空有穷集合。q∈Q, q称为M的一个状态。
-Σ, 输入字母表。
-δ, 状态转移函数。
-q0, M的开始状态或启动状态。q0∈Q。
-F, M的终止状态集合。
其中状态转移函数就是在中断函数中需要付出的计算能力。
假设, 对于第i个任务, 其状态间转移函数中需要指令周期最多的一个函数的总的指令周期为E (i) , 假设一次中断中, 指令周期处理能力为D, 则必须有以下最大指令周期条件公式:
以下简称之为时序条件。
在时序条件下, 时钟频率与时序所能获得的最大频率是严格的线性关系, 而与任务所需的指令周期无关。所以, 只要满足时序条件公式, 就不必严格计算指令周期, 从而降低了设计复杂度。
时序条件公式也可以表达为以下形式:
其线性关系的形成原理如图1所示。
由图1可以看出, 当时钟的间隔时间比较短, 也就是时钟太快时, 不满足时序条件, 程序所表达的时序不与时钟有关。当间隔长到一程度, 其时间长到可以容纳足够多的指令时, 时序只与时钟有关, 此时设计者就可以摆脱对指令周期的关注, 更多地集中精力到业务上来。
为了满足时序条件, 可以增加D或减少∑E (i) 。通过以下几种手段来进行:
(1) 加大晶振频率。
(2) 采用51增强型的1T单片机以减小每条指令的指令周期。
(3) 减少任务总数。
(4) 精细分解任务为多状态, 使得状态转移函数的计算被简化。
(5) 其他任务尽量推给主循环利用空闲CPU去做。
其中第1、2条是从硬件角度可以采用的优化方案, 只能有限采用, 因为对于一个系统, 晶振频率和CPU型号是受多种设计条件制约的, 往往不能随便改变。而第3条也背离了本实例的任务调度法提出的初衷———就是要在一个系统中增加功能时提高设计灵活度。所以第3条一般也只是有限采用, 并非首选。
其中第4、5条结合采用效果较好。当前任务与主循环可以看作2个线程, 线程间通信最常用的就是利用全局变量或共享内存来通信。A线程把需要做的事“告诉”B线程, B线程计算完成后把结果通过某种完成标志“告诉”A线程。A线程同时可以做别的事, 如果必须等待标志, 就停留在原地。发现完成标志后A线程于是继续。
当然, A在等待时不能通过空循环实现, 而应该通过精细分解任务为多状态来实现, 把控制权还给CPU用于别的计算需求。方法是只要把前述的等待完成标志作为A的相关的状态间转移条件之一来判断即可。所增加的开销仅为若干个布尔运算的指令周期, 这样就可以使时序条件公式继续成立。
2 设计方法
假如要使LED1、2、3循环点亮, 功能如下:
(1) LED1亮, LED2灭, LED3灭, Delay (900) 。
(2) LED1灭, LED2亮, LED3灭, Delay (900) 。
(3) LED1灭, LED2灭, LED3亮, Delay (900) 。
(4) 跳转至程序首, 再次循环。
系统可以描述为图2所示, 状态以时间为触发依序跳转。可以设计一个全局变量n_status, 用它的值代表当前系统状态, 在时间中断函数中根据它的值来决定系统的下一个状态 (和n_status的下一个值) 。
所以伪代码可以表达为:
这样编写的缺点是与功能需求中的描述相差甚远。程序与需求描述是等价的, 但其中的形式变换工作交由人工来做, 工作量相对较大, 如果程序逻辑复杂一点, 就不直观造成难维护。
3 分析
程序设计就是对需求的一系列等价变换。而需求更接近自然语言, 程序则更容易被计算机所理解。需求已定, 则系统整体的复杂度已定。就像物质不灭、能量守恒一样, 并不能消灭复杂度, 但可以适当地转移它, 只把较低的复杂度留给人工。
可以注意到, 需求本身已经较好地描述了处理逻辑, 其中的延时就是把控制权返还, 使CPU能够把计算能力用到其他工作中。在通用操作系统软件中, 一个进程是由1至多个线程构成的。而操作系统在调度线程时的工作是首先保护现场 (寄存器和相关内存) , 然后跳转到别的工作。未来恢复现场, 就可以继续执行, 就像什么也没发生过。可见, 关键就是现场的保护和恢复。现场可以理解为下一条需要执行的指令, 和所有相关要用到的变量。
51单片机中的资源有限, 不可能利用操作系统自动地做这么复杂的工作, 但可以从2个方面入手来达到这样的效果:
(1) 使用全局变量, 简化现场保护工作。
(2) 把调度工作设计成程序结构, 在编译之前进行。
以这样的思维方式, 程序表达如下:
可以看出, 这样就很接近需求描述的自然语言结构。所有需要延时的地方用一个特殊标记##DELAY#来标出。当然, 这样的程序是不符合语法的, 也没有体现出在延时时返还控制权。所以还需要再作一次变换, 使之变化成上一节中类似的状态间跳转的结构。
4 辅助预处理软件设计
需要达成以下条件:
(1) 函数void fff () 是被timer中断所调用的, 所以此函数是要“经常”返回的而不是一个无限循环。但这个函数所表达的业务逻辑又是无限循环的。
(2) 需要一个保存状态值的变量, 以表达当前状态。
(3) 下一次执行fff () 时, 应该从上一次的语句的下一条开始, 达到恢复现场的效果。
预处理软件的编写比较简单, 是一个文本文件处理软件EDIT_51C.EXE, 具体程序不详述, 处理方法如下:
(1) 构造一个保存状态值的变量, 以表达当前状态。
(2) 所有的延时标记替换成函数入口和返回指令。
上述程序经预处理后形成如下形式的源程序:
从C语言的角度分析, 可见预处理软件新增了一个函数指针型的全局变量, 并新增了几个几乎一样的函数。这指针的值实际就代表了系统的状态。而每个状态都对应一个函数, 每个函数都是下一次中断时的真正入口。所以这个函数指针就同时指出了系统在任意时刻应做的工作, 而每一份工作在最后都指出了下一份工作在哪里。
整个系统实际上是被时钟中断驱动的, 而每一次时钟中断中所需的工作就是两个##DELAY#间的指令, 由此不难算出总共所需的指令周期, 从而判断时序条件公式成立与否。
对于恢复现场, 预处理软件面临两种设计方案:
第一种方案, 在函数fff () 之外新增一个表达状态的全局变量, 在函数内的开头用一个switch开关语句对此变量作判断, 并结合goto关键字, 使函数流程直接走到当前状态所应该到的语句处开始执行。这样设计的缺点是switch语句找到符合的条件所需的时间复杂度实际是线性阶O (n) , 这在可选分支很多时, 实际上对时序条件公式是一个潜在的威胁。对此可以有一点优化和改进, 可惜的是C语言中没有指向行标号的指针类型, 只有函数指针, 但有下面一种方案。
第二种方案用了一个技巧。在恢复现场时, 重要的一点就是现在所需执行的指令。而这其实并没有要求回到的地方必须与上一次离开的地方是相同地址。如果回到了一个地方, 与上次离开的地方“看起来”完全一样, 那就可以称之为“回”到了原来的地方。
笔者正是采用了第二种方案, 把原函数复制多份, 使得每次都“好像回到了”原来的地方。这样就利用函数指针管理执行起始点, 避免了前述的switch语句的线性阶时间复杂度的问题, 而是常数阶O (1) 。这在分支比较多时优势就很明显。
第二种方案的缺点是出现了“代码爆炸”, 其实每个函数都只用到了一小部分代码, 却把所有的代码拿来占位子, 只为符合语法, 会占用本来就不多的ROM空间。其实, 如果采用比较成熟的编译器 (比如KEIL) , 则这个想法是有点多虑了。编译器的优化功能会解决这问题。默认KEIL是第8级优化, 上述代码编译成汇编后可以发现, 每个函数中大部分肯定不会用到的语句都没有实际地生成指令。所以编译后的代码并没有“爆炸”, 对ROM空间的占用并没有显著地增多。
其实整个系统的复杂度在需求提出时就确定了。只是希望尽量停留在接近自然语言的阶段, 而把复杂度尽量推给了预处理软件和编译器的优化功能罢了。
5 结语
值得注意的是, 如果采用软件重装计数, 则中断函数从发生到计数器初值重装完毕期间所经过的时间也必须算进重装初始值中, 否则宏观上会造成中断时机一点点推后的现象, 一段时间后的累计误差就会比较明显。也可采用硬件自动重装来规避此问题。
另外, 对于软件重装, 适当选择计数器初值重装的时机, 还可以实现更复杂的控制。例如, 不是在中断函数中统一重装, 而是在任务中动态地计算和重装初值, 并且只是控制两次中断的总时间, 则用本实例方法可以很清晰地实现多路标准舵机的控制。例如控制两次总时间为2.5ms, 可以控制8个常规的 (0.5/2.0ms/20ms) 类型的舵机, 同时还可以利用此时钟实现一个400BPS的低速非标异步串行通信通道。如果采用双51系统分别管理控制方面和通信方面, 则此系统可以提供一个高性价比的多舵机控制方案。
参考操作系统中关于线程的概念, 对51单片机的开发提出了一种线程调度式的程序设计方法, 对于需要处理多个任务的场合, 可以分别运用本方法编写, 并再运用本方法编写一个任务就是适当调度各函数的总调度, 这样设计人员可以尽量贴近需求而不是代码实现, 减少思维上的负担提高设计灵活度, 同时更大限度地利用CPU的计算能力, 从而能够降低产品综合成本。本方法并不局限于51类型的单片机, 而是也可推广到其他类型的CPU。
编程方法与思路 第9篇
但是它也有一定是缺点,例如:界面实现能力弱。强大的功能只能在它所提供的平台上才能使用,即用户必须在安装Matlab系统的机器上才能执行*.m文件。这样当用户需要将在Matlab下已开发完毕的复杂算法应用到高级语言开发环境下时就带来了问题,是将现成的算法集成高级语言开发的程序中呢?还是用高级语言再重新实现一遍?显然大家所期望的是能够减少工作量,最好能将Matlab下开发好的程序或函数直接应用到高级语言开发的程序中,这就是Matlab与高级语言的混合编程问题。
C#是一种C语言家族最新的、面向对象和组件的编程语言。它使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,.NET上的众多工具可以和C#无逢结合。正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选———无论是高级的商业对象还是系统级的应用程序。使用简单高效的C#语言,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,C#从C、C++和Java发展而来。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。[2]
目前C#已成为应用软件开发中广泛采用的主要工具之一。因此,如何将Matlab与C#进行有效的混合编程受到工程科研人员的广泛关注。解决这个问题,不仅能更好地发挥Matlab强大功能,还能快速地进行仿真到应用的转换,尤其是当应用中需要实现复杂的数学算法、图形处理和信号分析时尤为迫切。研究C#与Matlab的混合编程具有很大的实际意义。[1,3]
1 C#.net与Matlab混合编程的快速实现实现
MATLAB与C#结合的方式有多种,但其实用程度与范围不同。例如Matcom可以将m程序直接“翻译”成c程序,但是这类直接翻译的程序几乎没有可读性和可维护性。从实用性、易用性和发展方向的考虑,本文主要讨论将*.m文件编译成*.dll文件嵌入到C#的程序中的方法。本文通过一个简单的例子来说明Matlab和C#混合编程的具体过程(环境为Window XP/SP3&Matlab7.04&Microsoft Visual Studio.NET 2003/SP1)。
1.1 Matlab编译环境的设置
为了能够使用Matlab的Complier将*.m函数文件编译为动态链接库DLL,必须对Matlab的环境做出相应的配置。具体做法如下:
在Matlab的Command Window下输入命令mbuild–setup,并根据Matlab的提示选择合适的编译器,笔者使用的是Microsof Visual C/C++7.1.过程如下:
1.2创建动态链接库(*.DLL)
主要步骤如下:
1.2.1建一个m文件(test.m)
例如:
1.2.2在matlab中输入comtool命令,就打开了matlab builder
如图1。点击file-new project,新建一个工程,在component name里输入名字点击ok就行了。然后点击project--Add files,将test.m添加入工程,然后点Build-Com Object,就会在comtestdistrib文件夹下生成一个test1_0.dll(它就是做好的com组件),Build时matlab已经自动将此dll在注册表中注册。
此时,我们还需做一个准备工作,进入
1.3在C#中使用Matlab生成的动态链接库(*.DLL)
新建一个c#项目,为体现面向对象的VC#组建界面的强大功能,建立主界面如图2所示。选中右边的解决方案资源管理器中的引用,点鼠标右键,选添加引用,在弹出来的窗口中选com,然后通过单击浏览也找到test_1_0.dll,单击选择,然后确定就可,此时此com组件也添加到工程里面去了。
1.4配置引用路径
同时,还需要要配置引用路径,选中“项目”下拉菜单中的“<项目名称>属性”,在弹出来的窗口中选择“引用路径”。
1.5在c#程序中使用动态连接库的方法
然后在.cs文件中按钮响应事件处编写添加以下程序:
test.testclassClass st=new test.testclassClass();
object m=1,n=2;
st.test(m,n);
编译一下,运行,点击模拟数据可视化按钮,在c#中就出现了我们调用MATLAB组件所得到的图形,如图3所示。
2发布
如果要发布的目标机器没有装MATLAB Component Runtime(MCR)(即目标机器上没有装MATLAB运行环境)。主要步骤如下:
1)把源机器..matlabtoolboxcompilerdeploywin32MCRInstaller.exe拷贝到目标机器上安装并将该安装的以下路径加入到系统变量PATH中..MATLAB Component Runtimev70binwin32。
2)将源机器下的..matlabbinwin32mwcomutil.dll拷贝到..MATLAB Component Runtimev70binwin32下并在此路径下注册该DLL(方法是:在DOS中该路径下输入regsvr32 mwcomutil.dll此方法对DOS不熟悉的读者会不习惯,笔者建议使用的方法是在该文件夹中创建一个*.bat文件,其中的命令是regsvr32 mwcomutil.dll保存后直接双击该.bat文件即可)。
3)以上两个步骤是在目标机器上第一次发布COM组建时必须的,以后再发布COM组建时就不用重复进行前两步的操作了。在目标机器上创建一个文件夹来放置COM,如..myMatCOM将源机器上将发布的COM组件文件夹中distrib文件夹下的_mcr文件夹的所有文件及*.EXE(*代表所要发布的COM组件的名字)copy到..myCOM在该目录下执行.EXE。
经笔者验证,发布到没有MATLAB运行环境的计算机上,vc#2008成功实现预定义的功能。说明COM发布成功。
3结束语
该文介绍的MATLAB与C#混合编程的实现方法接口简单,软件代码复用性强,具有很好的可操作性和可维护性。加速了从MATLAB仿真到实际应用中算法程序的转化,提高了应用开发是效率。同时,其设计方法具有较强的通用性,依据给出的组件调用的实现思路和关键代码只需稍微修改即可应用于同类系统设计中。
参考文献
[1]MATLAB Help Documenttation.MathWorks.
[2]须德.C#大学教程[M].北京:电子工业出版社,2004.
编程方法与思路 第10篇
1 产品图纸要求
图1是产品图纸对曲轴油孔的尺寸要求,在正视图中,此产品图纸轴向距离的要求基准是芯轴端止推面,图纸明确要求油孔入口及出口对芯轴端止推面的距离。同时还有曲轴油孔对垂直中心线的角度。在侧视图中,产品图纸要求的油孔距离是和曲轴中心线的垂直距离。同时还有曲轴油孔与连杆颈中心线的角度。
2 加工与测量设备的坐标系介绍
在正常生产中,加工设备通过A轴和B轴的旋转使油孔与刀的进给方向平行,再通过刀具的X、Y、Z轴的进给实现曲轴油孔的加工。
在三坐标测量仪中,测头伸入到曲轴油孔内部,扫描油孔一圈,虚拟出的圆心构成曲轴油孔。因为在曲轴的正视图中,曲轴油孔是偏斜的,所以三坐标测量仪虚拟与油孔平行的坐标系,以构成正交视图计算位置度。
综上所述,加工设备和测量设备均是以与油孔平行方向的轴向距离加工和控制的。因为油孔是使用深孔钻加工成型的,所以宏观上油孔是直的。通过采用本文介绍的方法,可以实现产品图纸对曲轴油孔的要求。
3 工艺参数计算
在使用CAD软件模拟加工过程前,需要计算曲轴在油孔加工工位的轴向距离。通过尺寸链计算影响油孔的尺寸,确保最终曲轴油孔符合产品图纸要求。以上汽通用五菱汽车股份有限公司其中一条曲轴线为例,计算在钻油孔工位对曲轴油孔加工油影响的尺寸。
3.1 加工工艺介绍
产品图纸对油孔的要求包括正视图中油孔两端距离芯轴端止推面的轴向距离、油孔与垂直中心线的角度、侧视图中油孔对中心的距离、油孔对垂直中心线的角度。
如图2所示,此曲轴线的油孔钻工位是在滚压校直工艺之后,因为滚压校直会使曲轴有伸长,所以在滚压校直后油孔钻工位不需要计算曲轴伸长量。
在钻油孔工位后,是重钻中心孔工位。因为中心孔也是曲轴油孔的基准,所以在此曲轴加工工艺中,要明确曲轴油孔工艺基准是在第一步的中心孔基础上的。
因为油孔的入口和出口均是在连杆颈和主轴颈上,在钻油孔后有精磨连杆颈和主轴颈的工序,产品图纸要求的是油孔入口和出口对止推面的距离,所以如果使用计算的方法确定油孔位置度,需要考虑此工序对油孔轴向距离的影响。
在后工序中,有一步工序是精车止推面和法兰端面。因为曲轴油孔的轴向距离的基准在产品图纸中明确要求是芯轴端止推面,所以需要计算芯轴端止推面的去除量确定在油孔加工工位的工件是否合格。
3.2 工艺参数计算
明确前后工序对曲轴油孔的影响后,需要根据工艺要求计算在钻油孔工位时零件的状态。
在图3中,第一连杆颈油孔的入口要求距离芯轴端止推面宽度为101.675 mm,与垂直中心线角度为27.45°,侧视图中要求油孔距离中心为13.4 mm,与垂直中心线角度为26.76。。
此油孔在钻油孔工位需要首先明确零件状态。零件已经滚压校直,整体轴向距离确定;未重钻中心孔,使用前工位加工的中心孔。
在后工序,精车止推面去除量为单边0.1 mm,精磨主轴颈和连杆颈工位去除量为单边0.3 mm。使用CAD软件模拟钻油孔的工艺参数,就不需要考虑精磨工位的影响,只需要计算精车止推面工位的去除量即可。
假设在钻油孔工位油孔距离芯轴端止推面距离为X,则X-0.1=101.675 mm,因此X=101.675+0.1=101.775 mm。
4 CAD软件模拟
在确定影响油孔尺寸的工艺,同时根据产品图纸计算出油孔的轴向距离后,即可在CAD软件中模拟出钻油孔的加工及工艺参数,同时此工艺参数可以作为加工程序编制基数。
4.1 初始位置
在CAD软件中,按照1:1的比例模拟出机床各原点以及曲轴在机床中的夹紧位置。如图4所示,通过机床图纸画出曲轴在机床的初始位置,曲轴的各尺寸要求按照前一步工艺参数计算为准。注意事项如下。
(1)在CAD软件中测量出的曲轴尺寸必须是通过工艺尺寸链计算后的尺寸。例如:第一连杆颈油孔入口距离芯轴端止推面的距离应为101.775 mm,这是通过工艺尺寸链计算得出的结果。
(2)俯视图的曲轴油孔方向必须同产品图纸要求一致。避免油孔反向造成油孔加工方向相反。
4.2 投影油孔
在根据产品图纸的要求绘制完成初始转换图后,即可模拟加工过程。
图5是先将俯视图的曲轴以曲轴中心为圆心旋转27.76°,至油孔水平,表示设备A轴旋转到位;然后将第一连杆颈油孔投影至正视图,模拟出正视图中的油孔。
图6是将正视图的曲轴以机床B轴中心为圆心旋转至油孔水平,表示设备B轴旋转到位。
通过以上两步,曲轴已经确定在正确的位置待加工。验证方法为在正视图中,测量曲轴中心线与旋转圆心的垂直线角度,正确的角度应该是产品图纸中要求的27.45°。
4.3 确定工艺及编程参数
通过以上两步,确定了曲轴的加工位置,测量油孔入刀点到各轴原点的距离,即可确定油孔在程序中的基本程序参数。
同时,在此基础上,可以根据产品图纸的要求,以及加工与测量设备的需求,设定合理的工艺控制参数。
图7为编程参数图。在正视图与俯视图中,测量第一连杆颈油孔距离X和Y轴原点的距离,即可确定加工此油孔的程序中X轴和Y轴的位置,即X1和Y1。此参数可以作为新加工程序的基础参数。对于不同设备,由于设备精度等原因,初加工的零件会出现超差,因此只需要微调即可确保加工程序合格。
图8为工艺控制参数图。以上汽通用五菱汽车股份有限公司的工艺控制参数为例,由于三坐标测量仪可以在虚拟的坐标系中模拟油孔距离远点的距离合成位置度,同时三坐标测量仪测量的轴向距离L1和径向距离L2在加工设备中与X轴和Y轴平行,所以油孔工艺控制参数设为图8中的L1和L2。
在工艺控制参数中,产品图纸中的角度要求不变。用上述方法可以简便、快捷地确定工艺控制参数及编程参数。
5 总结
通过模拟加工过程,应用简单的尺寸链计算及CAD软件制图基础,即可完成工艺控制参数及编程参数的确定,此方法省略了繁杂的直径尺寸链计算,简便快捷,同时避免大量计算造成的错误。对于不同工艺控制参数及编程参数的生产工艺,只需要合适的转化即可实现目的。
参考文献
[1]李海国,王华立.曲轴斜油孔加工工艺参数的计算与应用[J].机械制造,2001(11).
高考古代诗歌鉴赏的思路与方法 第11篇
福建省高考语文《考试说明》对“鉴赏文学作品的形象、语言和表达技巧”等能力提出了要求。自2016年开始,福建省高考又转为使用全国卷,诗歌鉴赏的分值由6分提高到11分,诗歌鉴赏的重要性不言而喻。在高考诗歌复习中,我们常常遇到学生这样的疑问:“老师,应该怎么做才能在诗歌鉴赏题上拿高分?”“老师,诗歌题得分太考验运气了,运气好的时候分数就高,运气不好的时候甚至只得一二分。怎么做才能保持高分?”“老师,我明明熟练掌握了诗歌各种题型的答题技巧,为什么分数还是不高?”细究原因,很多学生并没有读懂诗歌,或者说没有完全读懂,只能凭借注释的提示或是诗歌中看懂的一些词句断章取义地来揣摩诗歌的情感内涵,于是就出现不完整甚至与诗歌的本意完全相反的答案。
一、古代诗歌鉴赏中存在的问题
在一次高考模拟考试中考查了唐代诗人韦应物的诗。
新秋夜寄诸弟
韦应物
两地俱秋夕,相望共星河。高梧一叶下,空斋归思多。方用忧人瘼,况自抱微痾。无将别来近,颜鬓已蹉跎。
注:①此诗作于公元783年。这一年初夏韦应物外调为滁州刺史,因秋来思念诸弟,感秋有此作。②人瘼:人民的疾苦。③无将:不要。
这首诗抒发了作者哪些情感?请简要分析。
参考答案:①对诸弟的思念之情。②对百姓疾苦的忧虑之情。③对自己的劝勉之情:珍惜时光,勤政爱民,有所作为。
阅卷后分析学生的解答,发现存在的问题很多:
其一,没有读懂诗歌。读懂是鉴赏诗歌内容与情感的基础。很多学生在考试中往往忽视了这个基础,而一味追求方法、手法等,在没有理解诗歌的情况下就匆忙做题,其结果可想而知。在《新秋夜寄诸弟》试题解答中,很多学生都只答出了第一点,忽略了后两点,究其原因是因为没有看懂全诗,尤其是没看懂诗歌的后两联。
其二,断章取义。很多考生没有抓住诗歌的整体,只看到了诗歌中的只言片语,只了解了部分意思或者表面意思,没有考虑其深层次含义。很多学生只从《新秋夜寄诸弟》题目中看到了“诸弟”,或者有的学生看到了诗人对人民疾苦的关心,但忽视了诗人对自己的劝勉这层理解。
其三,没有把握情感内涵。情感是中国古代诗歌的灵魂。古代诗歌都是诗人在心灵自由、思维活跃、情感奔放时创作的,集中表现了诗人当时的心情心态。没有把握作者的情感内涵,就不能真正把握整首诗歌,而把握作者的思想情感离不开对景物的分析。《新秋夜寄诸弟》中,“秋夕”“星河”“高桐”“空斋”都渲染上了作者的思念之情。
二、读懂古代诗歌的思路与方法
学生的困惑和存在的问题提醒了我们,在教学中我们或许过于注重诗歌答题的形式和技巧,忽略了更为本质的内涵。如果一首诗,学生根本没看懂,哪里能够准确地答对题目呢?可见,读懂诗歌才是解答各种题型的关键和基础。那么,如何引导学生读懂诗歌呢?
1.读标题
阅读题目对于帮助我们了解诗歌内容、体悟作者情感具有重要的作用。可以说标题是诗歌内容的重要提示。有的标题直接概括了诗歌的内容,揭示了时间、地点、人物、事件和主旨等,如2014年新课标全国卷《含山店梦觉作》即点明了时间——夜里、地点——含山店,和诗人的精神状态。有的标题则揭示了诗歌的感情基调,如陆游的《书愤》诗题点出了整首诗的感情基调是“愤”。还有的标题则点出了诗歌的题材,如2013年高考福建卷《送何遁山人归蜀》,“送”字说明了这是一首送别诗。
诗歌的题目使我们首先对诗歌有了一个直观的认识,带着这样的认识来阅读诗歌,作答题目,避免了一无所知的茫然。《新秋夜寄诸弟》这个标题点出了时间——秋夜,点出了人物——兄弟,还点出了事件——在秋天的晚上写诗给兄弟。
2.读注释
诗歌的注释无外乎有以下几类。
一是作者介绍,包括作者的籍贯、成就、流派、经历等。学生最“喜欢”这一类,尤其是遇上作者有贬官的经历时,答怀才不遇、壮志难酬等总是能捞上几分。韦应物《新秋夜寄诸弟》的注①就属于这种。
二是时代背景。如一道关于曾几《发宜兴》的鉴赏题,注:“①曾几:南宋爱国诗人,曾因触忤秦桧去职。作此诗时,岳飞被秦桧谋害,抗金形势急转直下。②阳羡:宜兴。③张公、善权:分别指张公洞、善卷洞,都是宜兴境内的游览胜迹。”
第一和第二点就是我们平时在诗歌教学中尤其强调的知人论世。了解诗歌的作者经历和创作年代,有助于我们更好地理解诗人的情感。
三是影响诗歌理解的字词的解释。如韦应物《新秋夜寄诸弟》的注②和注③。
四是典故的运用。如李商隐的《菊》中“陶令篱边色,罗含宅里香”,注释是《晋书·罗含传》:“及致仕还家,阶庭忽兰菊丛生,以为德行之感焉。”学生多数会知道“陶令”是指陶渊明,但如果不看注释,“罗含”估计学生就基本不会知道。
3.读关键词
在通读诗歌的过程中,要有意识地寻找一些关键字词。何谓关键字词?在这里指的是诗歌中直接抒情的词,如喜、怒、哀、乐、愁、愤、忧等;以及能表现喜怒哀乐的原因的词,如“飘零”“烽火”等,我们可以称这些词为气氛词。如韦应物的诗《新秋夜寄诸弟》中“忧”就是直接抒情的词,“归思多”“人瘼”和“蹉跎”就是提示情感的气氛词。
4.读意象和意象的修饰词
王国维在《人间词话》中说:“以我观物,万物皆着我之色彩。”这句话是说当我们心情好的时候,看到的就是“天朗气清,惠风和畅”;而当我们心情不好的时候,看到的就是“黑云压城城欲摧”,听到的就是“寒蝉凄切”。可见诗人描写的外部环境是自己内心的投射。基于此,我们可以根据诗歌中描绘的景物以及景物的修饰词来理解诗人的情感。
如韦应物《新秋夜寄诸弟》诗中:“高梧一叶下,空斋归思多。”高梧是指高高的梧桐,是眼前景物的描写。在古代诗歌中,梧桐很多时候还是离情别恨的象征,如白居易《长恨歌》中“春风桃李花开日,秋雨梧桐叶落时”,就是描写唐明皇与杨贵妃离别之后的情景。诗人在此特别选取“梧桐”作为情感的载体,与下一句 “归思”形成呼应。
5.注意诗句的结构
诗歌的语言非常简短,诗歌的魅力就在于蕴藉,“文已尽而意有余”。这就要求我们在读诗的时候要充分展开想象,找到诗句之间的联系,从而理解诗人的情感。如何找到诗句之间的联系?我们可以从诗歌的结构入手。
格律诗一般遵循“起承转合”的结构特点。所谓“起”是说从题目写起,大部分的格律诗首句都照应标题。如韦诗中首句“秋夕”照应标题“秋夜”,“相望”与“诸弟”相关,首联从题目秋夜对诸位兄弟的寄语写起,点明诗人与诸位兄弟分隔两地,思念对方。“承”是承接,是对首句诗意的展开,颔联承接首联,因为心中的思念,诗人看到的情景是高高梧桐树上飘下的落叶,还有空空荡荡的房间,于是空斋和思念形成了强烈对比。“转”指的是转折,与上联思念的意境不同,诗歌的颈联“忧人瘼”点明了诗人的第二种情感忧国忧民之情,以及自己身染微恙。“合”指的是卒章显志。对于这首诗,很多学生都反应诗歌的尾联“无将别来近”没有看明白,这就说明他们没有明白句和句之间的关系。诗歌的尾联应该是承接颈联而来,颈联由思念之情转为忧民之情,而尾联的后半句“蹉跎”指的是时光白白过去而无所作为。联系诗人“外调为滁州刺史”,以及上联忧民的情感来看,“无将别来近”的意思就应该是不要因为短暂的分别,沉溺于思念,而应该将心思放在为民办事上。所以,尾联要表达的是对自己的劝勉之意。
编程方法与思路 第12篇
关键词:凹槽类零件,走刀轨迹,刀具偏置,数控编程,宏程序
1 问题的提出
在数控编程与加工教学过程中, 涉及到凹槽类零件加工, 对此类零件, 数控系统 (FANUC 0i Mate) 有循环指令G73进行加工, 但该指令需在零件毛坯为铸造成型、锻造成型或已粗车成型的场合下体现加工效率, 对教学过程中, 由于毛坯多采用圆棒料, 若采用该指令会走很多空刀, 影响加工效率。
如图1所示, 零件的毛坯为准45×100圆棒料, 零件图中, 对于圆弧ABC, 可采用数控系统循环指令G73进行加工, 也可采用改变刀具几何偏置方法进行加工。本文论述比较这两种方法。
2 加工方法比较
2.1 循环指令G73加工
采用该指令加工时, 走刀轨迹如图2。
从走刀轨迹可知, 由于零件毛坯为圆棒料, 采用G73指令加工, 会出现较多空刀现象 (轨迹1、2、3大部分空刀) , 影响加工效率。
2.2 改变刀具几何偏置方法加工
FANUC 0i Mate数控系统中, 四位数指令T地址 (如T0101) , 前两位数字表示刀具号, 后两位数字表示刀具磨损和刀具几何偏置号。在实际加工过程中, 操作者可以应用刀具几何偏置方法, 人为改变刀具与工具的相对位置, 让刀具由外向里切削工件, 形成类似图1中的走刀轨迹。就上述零件按如下方法加工。
2.2.1 用G71 (外径粗车复合循环) 加工如图3所示零件
采用G71循环粗车工件外圆, 留0.5mm (直径) 余量, 图3刀具轨迹与图1刀具轨迹比较, 空刀数少。
2.2.2 用改变刀具几何偏置方法加工零件圆弧ABC
(1) 将圆弧ABC轮廓轨迹G代码指令编写出:
N10 G01 XAZA
N20 G03 XBZBR12
N30 G03 XCZCR18
(2) 在刀具偏置表中输入偏置值, 再按下列步骤加工: (1) 在刀具偏置表中输入初始值为12 (直径量) , 调圆弧BC加工程序运行, 刀具轨迹如图4中的轨迹1; (2) 在刀具偏置表中输入值为9 (直径量) , 调圆弧BC加工程序运行, 刀具轨迹如图4中的轨迹2; (3) 在刀具偏置表中输入值为6 (直径量) , 调圆弧ABC加工程序运行, 刀具轨迹如图4中的轨迹3; (4) 在刀具偏置表中输入值为3 (直径量) , 调圆弧ABC加工程序运行, 刀具轨迹如图4中的轨迹4; (5) 在刀具偏置表中输入值为0.5 (直径量) , 调圆弧ABC加工程序运行, 刀具轨迹如图4中的轨迹5。
图4圆弧加工刀具轨迹与图2刀具轨迹比较, 空刀数少。但该方法停机辅助时间较多, 为此可以将上述5个步骤用宏程序编辑 (编程方法时讲述) , 让程序控制刀具依次由外往里车削。节约辅助时间, 提高加工效率。
(3) 零件按图示轮廓精加工至成。
教学过程中, 由于毛坯多采用圆棒料, 通过比较, 得知采用改变刀具几何偏置方法加工效率高。下面介绍应用该加工方法的程序编制。
3 程序编制
3.1 G71循环粗车工件外圆
外径留0.5mm (直径) 余量。程序如下:
3.2 宏程序偏置刀具加工圆弧ABC
刀具为35°尖刀, 留0.5mm (直径) 余量。程序如下:
程序说明:
(1) 编辑宏程序的步骤如下: (1) 确定宏指令编程语句 (一般用循环WHILE语句) 。 (2) 确定循环语句的条件, 确定变量的初值。 (3) 条件的运算, 实现有条件逼近。 (4) 曲线上各点坐标值转换到工件坐标系下对应的坐标。 (5) 逐点逼近, 刀具进给。
其流程图如图5所示。 (2) 参数 (变量) 设置:参数#1, #1=13为刀具偏置初始值, #1在执行完每一次循环后被重新赋值:#1=#1-2 (#1自减) , 如此执行刀具逐层切削工件 (X值逐层减小, X[32+#1]X[34.07+#1]X[42+#1]) 。相关变量值如表1所示。
可见, 执行至第7次时, 圆弧ABC余量为0.5mm (直径) , 当第7次执行完后#1被新赋值为-1.5, 判别条件不成立, 跳出循环体, 往后执行指令。
3.3 按图示轮廓精加工
刀具为35°尖刀, 程序如下:
4 结语
通过上述比较, 在数控车床教学过程中, 对于毛坯材料为圆棒料的凹槽类零件, 应用刀具偏置方法加工能获得较高的工作效率。针对不同加工情况, 应在教学中引导学生在保证质量前提下比较不同加工方法, 应用最优方法获得加工效率, 进而培养学生分析问题、比较问题、解决问题的能力。
参考文献
[1]黄华.数控车削编程与加工技术[M].北京:机械工业出版社, 2008.
【编程方法与思路】相关文章:
编程方法08-18
面向方面编程方法研究08-14
机械手控制编程方法09-03
学习编程语言的有效方法有哪些05-13
计算机编程语言课程教学方法的相关分析09-11
职业学校单片机课程中的编程方法探讨12-11
编程思路07-11
让编程教学摆脱枯燥——谈行为引导型教学方法在编程教学中的运用11-21
Java面向对象编程的教学思路12-07
数控车削编程与操作05-08