模块化的驱动程序

2024-06-28

模块化的驱动程序(精选十篇)

模块化的驱动程序 篇1

在地铁环境与设备监控系统 (BAS) 中常见的通讯接口有以下几种:

(1) 冷水系统;

(2) 不间断电源 (UPS) ;

(3) 应急电源 (EPS) ;

(4) 给排水系统;

(5) 自动扶梯系统;

(6) 变频风机;7

(7) 智能照明。

各条地铁上BAS系统对上述接口实现方式不同, 可能采用通讯方式, 也可能采用硬接线方式等。无论通讯接口数量多与少, 一般都会优先考虑采用同一种通讯协议, 同时考虑存在不同协议的可能性。BAS系统中的核心控制是PLC控制系统, 其所包含的通讯模块的功能、性能指标影响着通讯的质量与效率。从通讯模块的实现方式来分, 可分为简单配置、命令串、协议报文。简单配置方式由于实现通讯的主体功能都是由模块厂家封装好, 用户只需对通讯节点地址, 读写数据地址和长度进行配置即可, 对于使用者来说很方便, 但对通讯理解上往往会收获甚微。协议报文方式, 往往用于非标协议, 虽然可以比较全面理解通讯是如何实现, 但各非标协议不同, 协议报文往往大不相同, 这增加了记忆的复杂性, 其代表意义不佳。本文通过对命令串方式的通讯阐述, 既对通讯的基本思路做介绍, 同时也可以理解通讯中主要代码的含义。 本文主体思路是用GE PLC IC200CMM020 模块对上述BAS系统接口的Modbus RTU串口半双工通讯程序开发的过程[1]。

1 通讯流程

对构建的串口通讯创建简易流程图, 如图1所示。

1.1 初始化

串行通讯模块一般需要设置通讯接口类型 (RS232、RS485、RS422) 、波特率、奇偶校验等参数。完成模块设置后, 对通讯协议需要进行软件初始化。主要初始化内容有协议类型、节点功能、等待模式、状态地址、指定端口、通讯速率、奇偶校验、控制流、超时响应时间。要设定以上参数, 需用初始化命令码对模块的端口进行软件初始化。初始化成功则反馈字AI00将返回标志数值2。若初始化命令未成功, 以超时时间做为判断标准, 在超过响应时间仍未收到正确的反馈值, 则重新触发初始化命令, 方法为初始化命令执行次数的计数值加1, 如此反复初始化直到成功, 初始化查询命令成功时, AI00将返回标志数值1。初始化流程如图2所示。

1.2 读取数据

初始化成功后, 优先对设备读取数据操作。只有知道设备目前处于什么状态, 才能知道设备可进行何种动作以及设备如何响应动作请求。读取数据命令主要注意以下参数:命令长度、命令功能码、状态字类型, 后面则是Modbus RTU通用代码:设备地址、功能码、数据起始地址、数据长度、存储数据地址、CRC校验码等。形成一条查询命令行后, 发送至目标设备, 等待目标设备的响应。若反馈计数与查询计数相等, 此时判断反馈字AI00, 值为1 表示执行成功, 若值为大于2 的数表示执行失败, 该值为故障代码, 关于故障问题在后面进行讲解。读取成功则判断是否需读多段地址, 读多段只需判断该地址仍有读请求则成功标志位重新触发查询命令, 查询计数值大于反馈计数值, 成功与失败判断位失效, 等待目标设备响应。如此反复查询, 直至完成该设备的所有查询命令。读取失败则无论是否有写要求都跳过该节点所有命令请求, 执行下一个节点命令。在读成功时查询的反馈数据需要传递实际控制设备参数, 采用读成功的上升沿触发方式, 可减少解析代码在周期性运行中的重复调用, 提高程序运行效率。读程序流程如图3所示。

除数据解析外, 在总线轮询过程中, 对同一节点地址多次读未成功, 则判断为该节点通讯故障, 需检查该设备和通讯链路。通讯成功则清除通讯故障标志位。

1.3 写数据

只有在完成对这个设备的读情况下, 才对设备进行写操作。若读失败, 将不进行写操作。读成功后判断目标设备是否有写需求, 可用两种方式实现, 第一种目标状态字与期望状态不同, 则产生写请求, 该方法需对目标的状态字进行解析, 优点保证命令准确送达, 缺点所有控制字都需与状态字进行比较, 若控制要求中为模式控制之类, 则反馈的状态数据比较多, 且组合比较困难。第二种方法是采用临时存储方法, 临时存储字保存上一次的写命令值, 只有在写成功后才将命令字赋值给临时存储字, 优点是不需要读太多的反馈数据, 缺点是如系统数据被清零, 或是第一次执行, 由于临时存储字里数据为零, 则必将执行非零命令, 同时需提供一片临时字存储区域, 对内存提出了要求, 可通过编程方式优化或避免该类情况。两种方式都可实现写数据动作, 也可以结合来实现, 根据编程设备的实际存储和通讯量吞吐量而定。当进行写命令时, 读命令将禁止产生, 并且使读成功和失败标志位失效, 置位写标志, 这样可清晰地知道设备在写状态。同样在读的过程中, 不产生写的成功或是失败标志位。写命令与读命令成功与失败判断相同, 在写计数值与反馈计数值相同的情况下, 判断反馈字AI00, 值为1表示执行成功, 值为大于2的数表示执行失败 (该值为故障代码) , 关于故障类在后面做讲解。无论写成功与失败都产生标志位, 写成功则判断是否需写多段区域, 写失败则直接进入地址轮询。在同一地址里只要写请求还存在, 则写成功标志位重新触发新的写命令, 写计数值大于反馈计数值, 成功与失败判断位失效, 等待目标设备响应。如此反复直至完成该设备所有写动作。写数据流程如图4所示。

同读数据对目标地址的通讯情况做出判断一样, 多次写未成功需生产警告, 以提醒开发人员对通讯代码的检查。

1.4 地址轮询

一条串行通讯链路上往往存在多个设备, 对设备地址交替轮询的判断至关重要。

以下4种情况触发地址变换:

(1) 读成功并且没有写请求;

(2) 读失败;

(3) 写成功并且完成该设备所有写请求;

(4) 写失败。

在地址规划方面, 同类设备采用连续地址, 不同设备分不同区段, 以便提高代码执行效率和可扩展性。

地址轮询采用脉冲触发方式, 中断之前的读请求、写请求, 从而开始新的设备的读写命令。

2 故障诊断

在通讯开发过程中遇到故障问题是在所难免的, 如何分析与解决故障是需要认真考虑的。

2.1 初始化故障诊断

在初始化过程中如果一直未能实现成功初始化。首先检查硬件设备, 比如安装情况、供电情况、接线情况等。若未能完成软件初始化, 在排除硬件的可能性后, 着重考虑程序是否正确调用, 初始化命令参数是否正确, 初始化程序是否合理。比如命令长度太长或太短、指定端口不支持该协议、参数值超出了有效范围等。

2.2 读写数据诊断

在开发读写数据过程中也可能经常报错, 比如命令不正确、数据长短不匹配、读取数据类型不匹配、节点地址不存在等。

在通讯程序测试能过后, 在通讯中随机产生的错误如何去分析成为要点。在协议中往往自带了错误响应代码, 解读该类代码, 将帮助开发人员快速解决问题。

2.3 设备故障

有时会遇到内部通讯程序虽在执行, 但对外的通讯指示灯已经不再闪烁, 表示对外并无数据请求。该类问题可能是设备命令地址区的数据溢出或是死锁。通过诊断命令调用命令地址区, 对其数值进行分析, 若确实为命令地址区造成无法通讯, 则通过执行通讯地址区清空命令, 使设备回到初始化或未初始化状态。

3 结语

本文通过一个比较有特色的通讯模块的通讯程序讲解, 给大家提供一种常规串口通讯开发方法, 希望在串口通讯开发上对大家有所帮助。

参考文献

模块化的驱动程序 篇2

应用型本科教育是要培养有创新意识、具有实践能力的高级应用型人才,也是目前国内外多所高校人才培养模式研究的重要课题.合肥学院计算机科学与技术系借鉴德国的`人才培养模式,对计算机专业“程序设计语言基础”课程进行模块化教学改革,努力达到应用型人才的培养目标.

作 者:项响琴 汪彩梅 马保卫 XIANG Xiang-qin WANG Cai-mei MA Bao-wei 作者单位:项响琴,XIANG Xiang-qin(合肥学院,计算机科学与技术系,合肥,230601;安徽大学,计算机科学与技术学院,合肥,230039)

汪彩梅,马保卫,WANG Cai-mei,MA Bao-wei(合肥学院,计算机科学与技术系,合肥,230601)

模块化的驱动程序 篇3

【关键词】第二课堂  项目驱动法  内容重组与整合  项目设计

【基金项目】1.安徽省教育厅重点项目:面向“电气信息类”专业现代电子设计技术模块建设20100934;2.2013安徽省振兴计划人才基金项目:基于CMOS光学影像触控技术的多点触摸方式的研究:2013SQRL075ZD。

【中图分类号】G64 【文献标识码】A 【文章编号】2095-3089(2015)05-0248-01

模拟电子技术课程是电子信息与电气类专业学生必修专业基础课程,是学习其他后续课程的基础,并且是一门理论性和实践性都很强的课程,它涵盖了多门专业基础课程的内容。随着电子技术的迅速发展,新概念、新技术和新设计方法不断涌现,使电子技术基础课程的教学面临着新的挑战,传统的教学方法和教学模式将不能适应现代教学的要求。

一、以第二课堂为依托进行的项目驱动教学模式

以“第二课堂为依托的项目驱动”的模拟电子技术基础课程的模块化建设强调理论知识系统的应用;提供理论联系实际的载体;搭建动手实践、开拓创新平台;激发学生学习主动性、积极性。

这项工作近几年已经落到实处,合肥学院电子设计竞赛从2005年开始,已经连续举办了八届,合肥学院multisum电子仿真大赛也已经到了第二届,大二的学生参加这两项赛事的时候也只学习了模拟电子技术基础和电路基础这两门专业基础课,其余的专业课程还没开始学习,所有的设计概念及设计的理念也只有从模电的基础概念出发。在模拟电子基础课程的教授过程中,一定要理论联系实践,实行以第二课堂为依托,以项目驱动为落脚点进行课程的模块化学习才能让学生学以致用,夯实基础,培养创新意识和创新能力,才能在后续的电子设计竞赛中发挥自己的电路应用及电路设计的能力。

(一)课程内容如何调整和整合

参考德国应用型大学电子技术的教学经验,我们在讲授模拟电子技术课程时把课程划分为两个大的模块电子器件模块和电子线路模块,器件模块包括二极管、三极管和场效应管。对应着教材上的三章内容,学生在学习的时候重点掌握三种器件的结构与特点,三种器件的工作原理以及输入与输出特性曲线,并且讲课的时候通过类比,掌握三种器件相同点与不同点,以及三种器件在电路中不同组态对应不同的性质。在此基础上讲授第二个模块,电子线路模块,此模块由前面讲授的模块作为基础讲授起来相对简单,学生理解起来更具有系统性,这个模块的主要内容有模拟集成放大电路、运算放大电路、反馈放大电路、滤波电路及振荡电路,最后电路的综合应用直流稳压电路。全书的内容涵盖在这两个模块里了。

后面的电子线路是在器件的基础上为了解决不同的问题而引入的。模拟集成放大是如何提高电路的增益,直流偏置的提供的方式,输入电路的模型以及输出电路的模型。运算放大电路是在理想运算放大器的基础上实现了信号的各种运算,反馈放大电路以牺牲电路的增益为前提提高了电路的稳定性,拓展了信号的频带,更好地在输入端匹配了信号源,在输出端匹配了输出电路,实现了电路的稳定输出,为设计各种类型的电路提供了整体思路。

(二)项目的设计方法

在讲授这门课的过程中,依托第二课堂,实行项目驱动的方法来进行组织教学工作。在做好模电课程的实验的基础上,给学生精心设计了6个项目,让学生先用multisim进行仿真,然后自行买器件进行实物的制作,教学的过程实际上也是学生完成项目的过程,这六个项目的设计的知识点如下。

A.直流稳压电源的设计(因为后续的作品都需要用电源)——综合知识。

B.用分立元件搭建基极分压式射极偏置电路,实现信号的放大;

C.利用运放设计仪用放大器的前置放大电路;

D.设计功率管设计功率放大电路,驱动负载;

E.设计一个二阶低通有源滤波电路,上限频率为10KHz.

F.设计振荡电路,产生1kHz的正弦波信号和三角波信号。

二、项目驱动的实施方法

教学关注的重点是学生达到的程度,教师的任务是根据学生已有的经验、知识、水平和兴趣来选取适合他们的项目,从根本上将传统课堂中老师满堂灌转变为“学生为主体,教师为主导”的教学模式。

项目驱动法在模拟电子技术课程中的具体的实施是:在讲授理论时或讲授理论之前,给学生设计出具体的项目,让学生带着问题有针对性地去学习理论,带着问题去思考,然后通过所学的理论知识经过自己的理解、分析、归纳、总结完成项目。通过项目驱动,不仅使学生很好地掌握理论知识,激发学习兴趣,消除电子技术基础课程的神秘感。而且深刻理解学习的目的就是为了应用,能够把枯燥的理论和实际的应用结合起来。

三、项目驱动教学方法的实施效果

在模拟电子技术课程中实施项目驱动法,可最大程度发挥学生主观能动性,激发学生的学习热情。因为学生在做项目时,不仅要理论部分的理解和计算,还要涉及到画电路图,电路仿真,实物制作等实践环节,所有的这些环节都要自己根据理论去考虑、设计。当学生看到自己做出的实物时,肯定能进一步激发学生学习的兴趣和热情。学生在学习的过程中,时间、精力的投入主要源于兴趣,有了学习兴趣,就能理性的深入学习,对教学内容理解得更深刻,学习更扎实,反过来会使学习兴趣更浓,步入良性循环的学习过程。

四、第二课堂已取得的成绩

以“第二课堂为依托的项目驱动”模拟电子技术的模块化教学方案,学生完成第一课堂各课程模块和实践教学模块学习的同时,积极参与到以学生为主体的“第二课堂”活动中,以项目驱动方式,完成各项活动中的项目,很好的将所学的理论知识进行了系统的应用,在知识、能力、素质协调发展的同时,又在教育部倡导的“全国大学生电子设计竞赛”、“全国智能车赛”、“挑战杯赛”等专业赛事中取得骄人的成绩。

参考文献:

[1]康华光主编.电子技术基础.模拟部分[M].第5版.北京:高等教育出版社,2006.

[2]何克抗.建构主义——革新传统教学的理论基础,学校教育现代化建设[M].北京:中央广播电视大学.1998,54-73.

[3]陈旭远,张捷.新课程实用课堂教学艺术[M].长春:东北师范大学出版社.2005

作者简介:

模块化的驱动程序 篇4

作为一种全新的照明技术, 发光二极管 (LED) 是利用半导体芯片作为发光材料、直接将电能转换为光能的发光器。LED照明由于具有寿命长、节能、色彩丰富、安全、环保的特性, 被誉为人类照明的第三次革命。LED手术无影灯具有亮度高、颜色纯、发热度低、寿命长、耗能低、省电、反应快等多项优点。在医疗领域, LED照明是最优良的医疗照明方式。优质光源最接近自然光的完美, 无频闪、无升温、无热辐射、是最佳人性化、完美的医疗照明。随着大手术、高难度手术的不断增多, 垂直层流的高洁净度化手术室的建立, 各级医院都装备更高质量的新型无影灯。而可调色温LED手术无影灯正好满足现代医院的要求, 除了它自身已有的节能、长寿等优点之外, 更有能调节光源色温提高医生对不同组织器官的分辨力、节省手术室净化系统的建设与运行成本等一系列突出优点。

1LED无影灯的特点

1.1优质光源——最接近自然光的完美无影效果

(1) 以直流供电的LED无影冷光源, 无频闪, 以纳米级的响应速度杜绝了传统灯具的延迟现象, 以最接近自然的冷光360°照射, 以极高的清晰度避免了观察物体上的虚影。

(2) 随着温升消除、灯体体积的大幅度减小, 辅以流线外型提高手术室净化效果, 改善手术室层流净化效果, 避免传统手术灯在医生头部产生的温区, 极大程度地减轻手术医生在大型、长时间手术中的视觉疲劳。

(3) 传统的手术灯与无影灯, 由于其温度容易随着使用时间增加而提高, 造成患者伤口失水而影响伤口愈合并增加感染风险, 对于伤口的愈合带来负面的影响。相对地, LED因是冷光源、低色温, 完全避免了传统手术灯超高的红外热辐射, 除了不会对伤口有影响外, 并能忠实地呈现患部和器官的色泽, 有助于手术时的快速辨别。

(4) 具备色温可调技术及优异的色彩还原度, 可根据操作者对光线的适应度及观察物体的特性自主调节, 保障对观察物体的明查秋毫, 成为最佳人性化的设备。

(5) LED手术灯与无影灯发光部位体积小、能完全封装, 不但可变焦、可变形, 甚至还有防尘、防菌的功能。

1.2节能环保——无干扰, 无环境污染, 高效节能

(1) 固体封装的LED照明具备抗震、耐冲击的特点, LED医疗照明不会对工作区域设备产生谐波干扰, 无汞等其它环境污染, 是真正环保产品。

(2) 具有90%的节电率, 使用寿命10×104h, LED医用照明在同样亮度下, 耗电量仅为白炽灯的1/10, 荧光灯的1/2, 寿命是普通无影灯的100倍。

(3) 后续费用低, 可称为无耗材产品。节省了传统照明的耗材支出及日常检测, 极大地节约照明用电及手术室空调用电 (据不完全统计传统手术灯的后续耗材支出是手术灯购买时的3~5倍) 。

1.3引领新的医疗照明标准和医疗层流净化标准

(1) 创造新的医疗照明标准:实现色温连续可调技术, 有效缓解医生视觉疲劳, 突显优势, 对手术照明是一次革命性的变革;基于大功率LED芯片技术的手术无影灯, 降低了手术照明的光照度, 改变了传统的手术照明技术, 创造一种手术照明的新技术、新方法和新标准。

(2) 创造新的医疗层流净化标准:采取集成大功率LED芯片作为医疗照明的光源减小了医疗照明系统的体积, 改善了医疗照明系统的外型, 有利于提高手术室净化效果, 降低了手术室的造价和运行成本, 同时改善手术室层流净化效果和手术伤口部位无菌环境。

对于某些特定的场合, 如医院、煤矿等不允许中断照明的场合, 驱动电路的高可靠性显得尤为重要。为此, 要提高电源系统的容错性, 一种非常合适的措施是采用冗余电源的供电方式。

2LED模块化冗余电源驱动电路设计

所谓冗余电源, 是指用多个电源装置以并联方式对系统供电, 各电源装置平均分担系统的负荷量, 而一旦其中某个装置出现故障问题而停止供电时, 其它装置便会及时将多出来的电源负荷用平均分配的方式进行分担, 而且在这种自动接替过程中, 不会导致系统工作失常, 从而有效避免了电源子系统发生故障导致供电中断的情况, 以高度的容错性来提高供电可靠性。

本文模块化电源设计的基本思想是采用N+l冗余电源原理, 将电源分为N+1个子模块, 每个模块的容量都不大。以多模块并联的形式组成一个大容量电源。这样不但可以在一个模块因故障失效时由其余的模块分担其负荷, 而且各个模块中开关器件的电流应力大大减小, 发热量减小, 这样从根本上提高电源的可靠性, 并且降低了产品的成本。

如图1所示为N+l冗余电源的电路图, 每一个子电源以模块化的形式并联在电路中。

电路依然采取电流型双闭环控制, 每个子模块的内部结构相同, 如图2所示。冗余系统的设计类似于总线式, 输出电压反馈量和负载电流反馈量分别通过两条总线输送到每个子模块。系统中每个模块的额定容量为系统总容量的1/N, 在正常情况下每个模块分担输出电流的l/ (N+1) 。当由于某些原因其中一个模块失效时, 输出电流减小, 导致电流反馈量减小, 其余正常模块立刻动作, 同时增大各自的电流输出值, 直到输出电流重新回到额定大小。每个模块内部安装失效报警指示灯, 失效后立刻报警, 同时继电器常开触点断开, 使故障模块迅速退出运行并与系统隔离。

模块化电源能够实现多个中小功率电源的并联, 构成分布式电源系统以承担大功率的输出。与传统的集中式电源系统相比, 它可以通过改变并联模块的数量来满足不同负载的功率需求, 而且各个模块电源具有承受的应力小, 功率密度高, 响应快等优点。

但是各个模块电源特性并不完全一致, 若将其直接并联, 会使其承受负载不均衡, 导致有的模块轻载运行, 有的模块重载甚至过载运行, 降低了系统的可靠性, 因此需要通过均流技术来平衡各个模块的输出电流。开关电源并联系统常用的均流法有:输出阻抗法、主从设置法、按平均电流值自动均流法、外加均流控制器法以及最大电流自动均流法。

输出阻抗法通过调节开关变换器的输出阻抗以达到并联模块接近均流的目的, 但是这种方法均流精度太低。主从设置法是在并联的所有变换器中指定一个作为主模块, 其余的作为从模块, 从模块的电流跟随主模块电流变化。这种设计方式一旦主模块出现故障, 便会使整个系统无法运行。按平均电流值自动均流法是将所有模块的输出平均值作为均流母线的电压。这种方法的弊端在于任意一个模块发生故障都会影响均流母线的电压, 使整个系统无法正常运行。很显然主从设置法和按平均电流值自动均流法无法实现冗余技术。外加均流控制器法控制精度较高, 但是一旦均流器出现故障也会使系统无法运行。最大电流自动均流法又称为自主均流法, 在所有运行的模块中自动选择输出电流最大的模块作为主模块, 其余的模块作为从模块跟随主模块的电流进行变化。

图2中的UC3902是根据自主均流法的特点开发的8管脚集成芯片。该芯片可通过精确的调整变换器的输出电压以匹配所有的数值电流, 图3所示为UC3902的内部结构。图3中电流检测放大器的增益为40, 均流驱动和均流检测放大器的增益为1, 跨导式误差放大器的跨导为4.5 ms, 辅助工作电路用以提供内部偏置和芯片内部参考电压。UC3902的工作电压为2.7~20 V, 该电压可直接由模块电源分压提供。

均流过程为:电流检测电阻, 在模块的负输出端检测到一个与模块输出电流成比例的信号送入电流检测放大器的负输入端, 电流检测放大器的输出与模块输出电流成正比, 并且作为均流驱动放大器和误差放大器的输入, 均流驱动放大器的输出与电流检测放大器的输出相等。当该电压相对于所有模块的输出电压最高时, 该模块成为主模块。由于串联在均流驱动放大器输出端二极管的作用, 主模块均流驱动放大器的输出决定了均流母线电压, 从模块的均流输出放大器输出不与均流母线相通。从模块的均流检测放大器检测到均流母线电压, 并把输出信号作为误差放大器的正向输入端。跨导式误差放大器稳定状态的输出电压是均流母线电压与模块检测电压差值的函数, 当工作在主模块状态时电压差为零, 但所有从模块都会产生非零的误差电压。该误差信号用于驱动缓冲三极管, ADJ越大, 调整电阻ADJ上的电压就越大, 从而使得模块的输出电流变大, 实现了各个模块之间的均流。为确保跨导式误差放大器正确的输出状态, 有50 mV的偏置电压串联在它的反向输入端, 以增加主从模块之间的转换裕度。

3结束语

通过对介入手术室LED驱动电路采用冗余技术改造一年来, 系统更加稳定。多个电源装置以并联方式对系统供电, 一旦其中某个装置出现故障问题而停止供电时, 其它装置便会及时将多出来的电源负荷用平均分配的方式进行分担, 避免了电源子系统发生故障导致供电中断的情况, 利用系统的容错性来提高供电可靠性。

摘要:发光二极管 (LED) 作为一种全新的照明技术在医疗领域得到广泛的应用, 为确保其稳定工作, 其电源驱动电路采用模块化冗余设计技术, 以高度的容错性来提高了供电的可靠性。

关键词:发光二极管 (LED) ,模块化电源,冗余技术,可靠性

参考文献

[1]田大荣, 马训福, 关世菊.新型光源LED照明技术[J].农村电气化, 2007, 238 (03)

[2]周志敏, 周纪海, 纪爱华.LED驱动电路设计与应用[M].北京:人民邮电出版社, 2006

[3]杨恒.LED照明驱动电路设计与实例精选[M]、北京:中国电力出版社, 2008

模块化的驱动程序 篇5

使用Tkinter模块来创建简单的GUI程序,

Tkinter的Widgets有:Button、Canvas、Checkbutton、Entry、Frame、Label、Listbox、Menu、Menubutton、Message、Radiobutton、Scales、Scrollbar、TEXT、Toplevel等。

例:

代码如下:

# This program displays an empty window.

import Tkinter

def main:

main_window = Tkinter.Tk()

Tkinter.mainloop()

main()

例2:

代码如下:

import Tkinter

class MyGUI:

def __init__(self):

# Create the main window widget.

self.main_window = Tkinter.Tk()

# Enter the Tkinter main loop.

Tkinter.mainloop()

# Create an instance of the MyGUI class.

my_gui = MyGUI()

例3:

代码如下:

# The program displays a label with text.

import Tkinter

class MyGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

# Create a Label widget containing the text ‘Hello world‘

self.label = Tkinter.Label(self.main_window, text=‘Hello World!‘)

# Call the Label widget‘s pack method.

self.label.pack()

# Enter the Tkinter main loop.

Tkinter.mainloop()

# Create an instance of the MyGUI class.

my_gui = MyGUI()

例4:

代码如下:

import Tkinter

class MyGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.label1 = Tkinter.Label(self.main_window,text=‘Hello World!‘)

self.label2 = Tkinter.Label(self.main_window,text=‘This is my GUI program.‘)

self.label1.pack()

self.label2.pack()

Tkinter.mainloop()

mygui = MyGUI()

例5:

代码如下:

import Tkinter

class MyGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.label1 = Tkinter.Label(self.main_window,text=‘Hello World!‘)

self.label2 = Tkinter.Label(self.main_window,text=‘This is my GUI program.‘)

self.label1.pack(side=‘left‘)

self.label2.pack(side=‘left‘)

Tkinter.mainloop()

mygui = MyGUI()

例6:

代码如下:

import Tkinter

class MyGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.top_frame. = Tkinter.Frame(self.main_window)

self.bottom_frame. = Tkinter.Frame(self.main_window)

self.label1 = Tkinter.Label(self.top_frame,text=‘Winken‘)

self.label2 = Tkinter.Label(self.top_frame,text=‘Blinken‘)

self.label3 = Tkinter.Label(self.top_frame,text=‘Nod‘)

self.label1.pack(side=‘top‘)

self.label2.pack(side=‘top‘)

self.label3.pack(side=‘top‘)

self.label4 = Tkinter.Label(self.bottom_frame,text=‘Winken‘)

self.label5 = Tkinter.Label(self.bottom_frame,text=‘Blinken‘)

self.label6 = Tkinter.Label(self.bottom_frame,text=‘Nod‘)

self.label4.pack(side=‘left‘)

self.label5.pack(side=‘left‘)

self.label6.pack(side=‘left‘)

self.top_frame.pack()

self.bottom_frame.pack()

Tkinter.mainloop()

mygui = MyGUI()

按钮Widget和信息对话框

使用tkMessageBox模块的showinfo函数来显示信息对话框。

例:

代码如下:

# the program demonstrates a Button widget.

# when the user clicks the button, an info dialog box is displayed.

import Tkinter

import tkMessageBox

class MyGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.my_button = Tkinter.Button(self.main_window, text=‘Click me!‘,command=self.do_something)

self.my_button.pack()

Tkinter.mainloop()

def do_something(self):

tkMessageBox.showinfo(‘Response‘,‘Thanks for clicking the button.‘)

mygui = MyGUI()

例2:

代码如下:

import Tkinter

import tkMessageBox

class MyGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.my_button = Tkinter.Button(self.main_window, text=‘Click me!‘,command=self.do_something)

self.quit_button = Tkinter.Button(self.main_window,text=‘Quit‘,command=self.main_window.quit)

self.my_button.pack()

self.quit_button.pack()

Tkinter.mainloop()

def do_something(self):

tkMessageBox.showinfo(‘Response‘,‘Thanks for clicking the button.‘)

mygui = MyGUI()

用Entry Widget得到输入

Entry Widget是一个矩形区域,用户可输入其中,

可使用Entry Widget的get方法取回输入的数据。

例:

代码如下:

import Tkinter

import tkMessageBox

class KiloGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.top_frame. = Tkinter.Frame(self.main_window)

self.bottom_frame. = Tkinter.Frame(self.main_window)

self.label = Tkinter.Label(self.top_frame,text=‘Enter a distance in kilometers:‘)

self.entry = Tkinter.Entry(self.top_frame,width=10)

self.button1 = Tkinter.Button(self.bottom_frame,text=‘Convert‘,command=self.convert)

self.button2 = Tkinter.Button(self.bottom_frame,text=‘Quit‘,command=self.main_window.quit)

self.label.pack(side=‘left‘)

self.entry.pack(side=‘left‘)

self.button1.pack(side=‘left‘)

self.button2.pack(side=‘left‘)

self.top_frame.pack()

self.bottom_frame.pack()

Tkinter.mainloop()

def convert(self):

kilo = float(self.entry.get())

miles = kilo*0.6214

tkMessageBox.showinfo(‘Result‘,str(kilo)+‘ kilometers is equal to ‘+str(miles)+‘ miles.‘)

mygui = KiloGUI()

例2:

代码如下:

import Tkinter

import tkMessageBox

class KiloGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.top_frame. = Tkinter.Frame(self.main_window)

self.mid_frame. = Tkinter.Frame(self.main_window)

self.bottom_frame. = Tkinter.Frame(self.main_window)

self.label1 = Tkinter.Label(self.top_frame,text=‘Enter a distance in kilometers:‘)

self.entry = Tkinter.Entry(self.top_frame,width=10)

self.button1 = Tkinter.Button(self.bottom_frame,text=‘Convert‘,command=self.convert)

self.button2 = Tkinter.Button(self.bottom_frame,text=‘Quit‘,command=self.main_window.quit)

self.label2 = Tkinter.Label(self.mid_frame,text=‘Converted to miles:‘)

self.value = Tkinter.StringVar()

self.label3 = Tkinter.Label(self.mid_frame,textvariable=self.value)

self.label1.pack(side=‘left‘)

self.entry.pack(side=‘left‘)

self.button1.pack(side=‘left‘)

self.button2.pack(side=‘left‘)

self.label2.pack(side=‘left‘)

self.label3.pack(side=‘left‘)

self.top_frame.pack()

self.mid_frame.pack()

self.bottom_frame.pack()

Tkinter.mainloop()

def convert(self):

kilo = float(self.entry.get())

miles = kilo*0.6214

self.value.set(miles)

mygui = KiloGUI()

Radio按钮和Check按钮

例:

代码如下:

import Tkinter

import tkMessageBox

class MyGUI:

def __init__(self):

self.main_window = Tkinter.Tk()

self.top_frame. = Tkinter.Frame(self.main_window)

self.bottom_frame. = Tkinter.Frame(self.main_window)

self.radio_var = Tkinter.IntVar()

self.radio_var.set(1)

self.rb1 = Tkinter.Radiobutton(self.top_frame,text=‘Option 1‘,variable=self.radio_var,value=1)

self.rb2 = Tkinter.Radiobutton(self.top_frame,text=‘Option 2‘,variable=self.radio_var,value=2)

self.rb3 = Tkinter.Radiobutton(self.top_frame,text=‘Option 3‘,variable=self.radio_var,value=3)

self.rb1.pack()

self.rb2.pack()

self.rb3.pack()

self.ok_button = Tkinter.Button(self.bottom_frame,text=‘OK‘,command=self.show_choice)

self.quit_button = Tkinter.Button(self.bottom_frame,text=‘QUIT‘,command=self.main_window.quit)

self.ok_button.pack(side=‘left‘)

self.quit_button.pack(side=‘left‘)

self.top_frame.pack()

self.bottom_frame.pack()

Tkinter.mainloop()

def show_choice(self):

tkMessageBox.showinfo(‘Selection‘,‘You selected optioin ‘+str(self.radio_var.get()))

模块化的驱动程序 篇6

【关键词】建造工序和工艺;海洋钻机模块;建造工期影响

进入21世纪以来,我国的工农业发展水平不断提升,对于石油的需求量因此也越来越大,海洋是石油的一个巨大的产地,能够采集出大量的石油资源,因此,在这样的背景下,人們也将很多海洋工程装备研制了出来,其中海洋钻机模块工程就是其中的重要代表,这样,对于建造工程和工艺对这方面带来的影响我们有必要予以重视。

一、对建造工期带来影响的重要因素

要有业主的基本设计存在于模块钻机建造项目中,采办设备、建造现场、总包商的详细设计、加工设计及海上安装等程序,关键步骤中的各个关键活动对项目工期的总长度有着重大的影响,就是各项重要互动的总工期和。采办阶段的重要设备采办为此类项目中周期最长的,尤其是一些大型供应商们的产品,在进口设备中,柴油机发电机组的周期是最长的。泥浆泵和井架等一般长期的设备,我们国家已经能够自行的完成生产和制造,相关部分的设备型号规格书在设计中完成了之后,实施采办,之后在设备到来之后进行组装,与整体模块的进度结合起来,有效的调试建造过程中的系统,防止在海洋上在对设备进行安装和调整,这就是对工期进行确定的有一种方式。因此,对于对建造能够带来影响的一些重要因素我们一定要高度的重视起来,如下所示:

1、采办设备和物料

项目的建造工期在很大程度上是由设备的采办周期所决定的,由于在施工建造中,配管、电气的连接和机械的安装会受到设备的影响。如若不能够按时的运进一些大型尺寸的设备,围壁封仓和舱室间的封顶工作就很难进行,一旦对设备进仓的通道进行预制,对此部位和别的专业施工就会带来一定的影响和伤害。

项目工期受到材料采办的影响是非常显著的,特殊规格的产品和一些特殊的材料,是海洋模块钻机项目中最长的几种重要的物料,例如,玻璃钢管线和镍铜管线等到货的具体时间会严重的影响到项目的具体工作,并且,对选择建造程序上就会带来极大的影响。

2、预制车间

在选取建造程序的时候,在对建造项目带来的众多影响中,车间预制将是其中一个重要的因素。项目在建造的时候,也会受到天气因素的影响,建造工程的一些作业会受到风或者雨的影响,特别是一些关键的涂装和焊接施工。比如,喷漆和喷砂施工就是将较高的要求抛向空气的湿度,不然,对于质量的规定就很难给予实现,一旦将较高效率的气体保护焊应用到了焊接的过程中,对于风带来的影响应该努力降低下来,进而将焊接的质量提升上来。

同时,在预制车间时,可以对车间中的资源进行使用,例如自动化焊接设备和大型起重设备等,建造的工艺和方案都会受到这些因素的影响。一旦用充分的资源条件存在,可以往大一些对模块钻机分片进行制作,对于其他的专业在车间单片上的预制能够将完成的程度提升上来,比如,电缆马脚和管支架等。

3、设计进程因素

项目建造的工期也会受到设计工作的影响。在详细设计的过程中,就会产生材料和设备的规格书,每种清册和料单全是详细设计的结果。而在加工设计时,作业施工不能缺少的施工程序和有关的图纸等重要的文件就是对建造进度带来影响的关键因素所在,一定要及时的完成设计工作,才可以确保依据设计去施工。

项目工程进度也会受到设计工作准确性的影响,返工的设计一旦不出现,就能够大大的节省时间,将工作效率提升上来。传统设计结构位置同别的专业互相影响的情况在很多项目中都有可能出现,对相同部位的相同施工,就是此种设计工作带来的影响。

4、对工艺和程序要正确的进行选择

根据大型施工设备、施工机具、人力资源和现有场地能够制定出建造程序,对于建造工期会带来非常巨大的影响。项目建造的原则即为一个项目的建造方案,就是通过天、还是月确定建造工期的单位。建造成本和建造的进度在很大程度上也会受到建造工艺的推动和制约,当将那些为专业协作厂家和配套厂制定的分清出了之后,对于施工中采用何种设备就会非常的明确,合理的取舍上述的几个重要因素,对于将建造工期项目进行缩短都会带来非常巨大的帮助,一旦不具备充足的条件或者对资源没有充分的进行利用,对于短期内完成建造施工时很难给予保证的。

二、介绍我国钻机模块建造的重要方式和程序

在建造模块钻机时,有较大的钢结构工作,在结构上附着进行施工为其他专业的主要形式。完成了这个专业的施工之后,也就在一定程度上完成了项目的主要框架和主体,为以后的工作的进行也就打下了坚实的基础,这样也就可以直接的去安装一些预制的设备和部件。

1、正、反造法

在传统制作顺序与安装方式的基础上进行的制造即为正造,在建造模块的时候,先将最下一层的甲板制作出来,就是对框架先进行组装,之后将板铺设到框架上,结束后对立柱进行安装,之后在制作第二层的甲板,并且向着上一层中进行安装,将模板就可以按照这样的顺序制作出来,之后,施工各层次中的其他专业。

所谓反造,就是向下摆放甲板面,向上摆放各个甲板片底面,对甲板进行制作和组对,之后对框架进行安装,对于别的专业的安装制作,在下一步中同时进行,在完成了单片后,在翻身时,对大型设备进行使用,在按照一定的顺序安装各片甲板。

2、开孔进舱和晴天吊装

开孔进舱和修船施工时的侧向开舱时非常类似的,从侧面进入了物料和设备之后去施工。结束之后,在封堵开舱的位置,此种施工策略效果会非常显著。

晴天吊装,指的是在建造模块的时候,在上下不存在阻挡的情况下完成此项工作,将吊装作业在竖直方向上予以完成。在施工中,这是一种非常理想的施工方式,因为有着非常简单的施工工序,较小的风险,低成本,控制方便。

3、替换和设计

替换和设计,指的是有着相同投入的基础上,对各种方式进行使用来完成替换,进而将建造进度提升上来,将建造的成本降低下来。比如,会有较长的供货周期存在于那些进口的货物中,因此,可以按照相关的设计规定来加工一些组合部件,进而对型材进行代替。

结语

模块钻机建造项目在我国海洋石油开采中发挥着重要的作用,但是,会有很多因素会对其带来影响,其中建造工艺和建造程序就是其中的一个重要的组成部分,要按照项目不同的环境资源和不同的要求,不断的去创新传统的建造工艺和程序,在建造施工中将新工艺合理的应用进去,进而对于工程的顺利完成必将会带来非常巨大的帮助。

参考文献

[1]温良波.建造程序和工艺对海洋钻机模块建造工期影响的研究[J].工艺管理,2011(07).

[2]冯定,唐海雄,周魁,胡泽刚,徐杰,黄朝斌,柳进,李寿勇.模块钻机的现状及发展趋势[J].石油机械,2008(09).

模块化的驱动程序 篇7

在数控车削加工中,经常需对加工零件某部分的形状进行反复切削或对某零件上具有相同结构的部分进行编程加工,此时利用子程序编程效果较好。但对于具有相似形状的同族零件的加工,子程序就无法满足要求,此时可利用宏程序实现模块化编程,以提高程序的通用性和灵活性。

宏程序主体中可使用变量,可对变量进行赋值和运算等。从模块化加工的角度看,宏程序具备了模块化的思想和条件,编程者只需要根据零件几何信息和不同的数学模型即可完成相应的模块化加工程序设计,应用时只需将零件加工参数等信息输入到相应模块的调用语句中,就能完成形状相同但规格不同的零件加工,减少繁琐而重复的编程工作。本文主要研究宏程序模块化编程在实现规格不同的轴加工中的应用。

2 用宏程序编程实现同族相似轴加工

在数控车削加工中,对于形状相似但规格不同的各类零件,可以巧用宏程序将其编写成通用加工程序,实现宏程序的模块化编程,以提高编程效率。

如图1所示轴,以FANUC 0i数控系统为例,利用宏程序功能编写该同族相似轴的数控车通用加工程序。

2.1 零件图的工艺分析

加工图1所示同族轴时,由于轴各级外圆的加工余量不同,有的外圆余量较多,有的外圆余量较少,因此需根据实际情况分级分层粗车余量,最后再统一进行精车加工。图中W点为工件坐标系的原点,P点为起刀点。

2.2 实现同族相似轴加工的用户宏程序参考

(1)自变量含义

(2)主程序

(3)宏程序

3 结语

用户宏程序是带变量的手工编程,是手工编程的精髓。其程序具有很好的易读性和易修改性,编程效率高,程序内存小。宏程序编程不仅能完成形状及尺寸有规律的非圆曲线类零件的加工,而且通过改变变量值能实现形状相似但规格不同的同族轴零件的加工等,实现模块化编程,使程序使用灵活,通用性强。

参考文献

[1]禹诚.数控车削项目教程[M].武汉:华中科技大学出版社,2008.

[2]冯志刚.数控宏程序编程方法、技巧与实例[M].北京:机械工业出版社,2008.

[3]罗瑞琳.浅谈宏程序在数控加工中的优势[J].装备制造技术,2008(8):90-92.

模块化的驱动程序 篇8

关键词:宏程序,编程,程序

在数控车床上加工曲线的零件是企业生产及数控大赛经常涉及到的,这些曲线包括了椭圆、双曲线、抛物线和正弦曲线等。当采用不具备非圆曲线插补功能的数控机床加工非圆曲线轮廓的零件时,在加工程序的编制过程中,常需要用若干直线或圆弧拟合非圆曲线,加工出近似轮廓形。其近似程度取决于拟合误差的大小,数值计算和编程的复杂程度取决于逼近线段的形式、数量和逼近方式。如何避免数控程序的重复冗长,使数控机床更好的发挥效益,设计利用宏程序并将其模块化是有效途径之一。

编程时需要采用数控系统自带的一种编程方法:FANUC系统采用宏程序编程,下面主要介绍FANUC 0i-Mate系统中的宏程序。

1 宏程序

数控程序中含有变量的程序称为宏程序。宏程序可以让用户利用数控系统提供的变量、数学运算、逻辑判断和程序循环等功能,来实现一些特殊的用法,从而使得编制同样的加工程序更加简便。

1.1 变量

普通加工程序直接用数值指定G代码和移动距离,例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。如:#1=#2+100或G01 X#1 F300。

1)变量的表示及类型

一般编程方法允许对变量命名,但用户宏程序不行。变量用变量符号“#”和后面的变量号指定。例如:#1、#10等。表达式可以用于指定变量号。

2)变量的运算变量常用算术、逻辑运算和运算符(如表1、2所示)。

运算符右边的表达式可包含常量,或由函数或运算符组成的变量。表达式中的变量“#j”和“#k”可以用常数赋值。左边的变量也可以用表达式赋值。函数正弦、余弦、正切、反正弦、反余弦和反正切的角度单位是度(°),括号最多可以嵌套使用5级,包括函数内部使用的括号。

1.2 功能语句

1)无条件转移(GOTO)语句转移到有顺序号n的程序段。

格式为:GOTO n,其中n表示程序段号。

例:GOTO1,表示转移到第一程序段。

再如:GOTO#10,表示转移到变量#10决定的程序段。

2)条件转移(IF)语句在IF后指定一条件,当条件满足时,转移到顺序号为n的程序段,不满足则执行下一程序段。

格式为:IF[表达式]GOTO n。

3)循环(WHILE)语句在WHILE后指定一条件表达式,当条件满足时,执行DO到END之间的程序(然后返回到WHILE重新判断条件),不满足则执行END后的下一程序段。

格式为:WHILE[条件式]DO m;(m=1,2,3循环执行范围的识别号,)……END m;其中m只能是1、2和3,否则系统报警。DO———END循环能够按需要使用多次,即循环嵌套。

2 编程实例分析

2.1 典型零件1

如图1所示零件,该零件编程时以椭圆右端中心O点作为编程原点,由于加工的椭圆极角θ为90°,所以可以采用将椭圆极角设为自变量,当椭圆极角从O点(0°)逐渐增加到A点(90°)时,根据椭圆参数方程求得椭圆OA段上每个点所对应的短轴值和长轴值,然后再算出椭圆OA段上每个点在工件坐标系中所对应的X值和Z值,从而加工出椭圆。编程中采用条件转移(IF)语句。该椭圆的参数方程:X=39*COSθ,Y=25*SINθ,其中X表示椭圆长轴值;Y表示椭圆短轴值;θ表示椭圆极角。

其加工程序为:

2.2 典型零件2

如图2所示零件,从零件图给出的尺寸可知椭圆长轴值为40mm,我们可以将椭圆长轴设为自变量,数值由22mm逐渐减少到-22mm,然后根据椭圆标准方程,求得所对应的长轴变化值,最后再算出椭圆每个点在工件坐标系中对应的X值和Z值,从而加工出该零件的椭圆部分。编程中采用循环(WHILE)语句。由该椭圆的标准方程:X2/402+Y2/232=1

得:X=40*SQRT[1-Y*Y/529]。其中,X表示椭圆长轴值;Y表示椭圆短轴值。

以下是加工图4的外椭圆轮廓的程序:

3 小结

上述两个实例在编程中都使用了宏程序,但是选择了两个不同的参数作为自变量,例1以椭圆极角作为自变量,例2以椭圆长轴作为自变量,这主要由椭圆在工件坐标系中的位置及图样中给出的尺寸而定。通过两个实例可以看出,编写加工椭圆的宏程序首先要选择正确的参数作为自变量,然后依据自变量和椭圆方程求得椭圆上每个点所对应的短轴值和长轴值,再计算出椭圆上每个点在工件坐标中的X值和Z值,最终加工出椭圆。以上只是零件的精加工程序,粗加工时由于机床操作系统、零件的加工性质等因素,我们可以采用灵活的粗加工编程方式,如把精加工程序加入到G73指令中,或者单独编写粗加工的宏程序,还可以修改刀具中的磨耗值等不同方法来满足粗加工的要求。

在数控车床中,非圆曲线的编程具有一定的难度。通过以上对宏程序模块化编程的探讨,可以方便快捷地完成零件上椭圆曲线的程序编制,由此可以推广到其它诸如抛物线、双曲线等非圆方程曲线的宏程序编制。

参考文献

[1]蓝玉红.数控技术[M].北京:高等教育出版社,2005.

[2]赵长明,刘万菊.数控加工工艺及设备[M].北京:高等教育出版社,2003.

[3]顾京.数控机床加工程序编制[M].北京:机械工业出版社,2003.

模块化的驱动程序 篇9

当今,企业对生产设备的要求是设备生产成本越来越低,但同时能够提供越来越高的生产效率。SINAMICSS120伺服驱动模块因恰恰能满足这些方面的要求而被广泛应用于自动化系统中。对于自动化系统集成商而言,伺服系统的好处虽然很多,但其与中央控制器的融合过程往往因工程师经验不足等原因而变得比较困难。本文以S7-300与S120通讯的111报文为基础,对其进行深入解读,设计出一款专用通讯控制程序模块。为S120伺服驱动模块在以S7-300为核心的自动化系统中的应用带来了极大的便利。

1 模块设计的硬件配置及软件环境

通讯控制程序模块的设计是基于S7-300的PLC与S120通讯111报文的,因此模块环境平台的搭建如下:在S7硬件中配置S120硬件(如图1硬件配置),在整个项目中集成S7-300CPU作为整个系统的核心控制器、S120伺服驱动模块、MP277人机交互触摸屏系统(如图2项目配置),以图3网络连接所示的方式通过PROFIBUS网络组成统一的系统。

软件环境需要使用SIMATIC Manager V5.5、Starter、SIMATIC Win CC flexible 2008等编程软件。

2 软件程序模块Servo120设计

1)输入输出接口设置

输入接口包括设备的上电状态、安全状态、极限开关状态、维修插销状态、以及设备的运行状态等状态信息;报警复位按钮、抱闸模式选择、HMI点动行选择、移动指令、移动模式设定等指令模式信息;系统丝杠导程、每转的脉冲数等系统参数信息。方便调试工程师各种输入信息的调整,如图4所示。

输出接口包括反馈的伺服系统运行状态、错误报警信息、控制状态字信息、消息报错代码以及伺服当期位置等基本信息。从而帮助调试工程师通过输出反馈进行诊断,便于设备调试,如图5所示。

2)模块内部时钟设置

模块内置单独脉冲驱动时钟,不占用系统定时器资源,减少了模块程序使用时由于定时器的使用导致的系统内部冲突,如图6所示。

3)模块控制字状态字解析

程序模块内部将控制字和状态字以二进制变量形式进行逐点解析,便于以更详细的状态展示当前系统的问题。可以更好的便于调试工程师进行状态分析,如图7所示。

4)模块操作模式设定

程序模块根据输入设定及最广泛的应用方式设定伺服驱动模块的工作状态,修改相应参数将可以修改伺服的运行模式状态,如图8所示。

5)伺服移动位置给定及位置到达判定,如图8所示。

3 程序模块的使用

将多种功能融为一体的程序模块Servo120,最多可实现16个可变位置的伺服定位控制;可以手动切换抱闸工作模式;能实现多点联动,并按照预设位置自动切换移动速度;同时实现HMI行的自动配置,点动前后移动控制;以及丝杠导程、单转脉冲的单独配置;同时对报警状态、控制字状态字及实际位置进行实时显示。

伺服驱动模块使用之前,应先设置当前系统需要的所有位置及速度信息(即需首先完成图10Target参数数组的赋值)。设置完成后,即可启动移动指令,如图11所示)。

Target数组可存储16个位置和速度数据,能满足大多数自动化设备专机使用。Action_position移动指令数组可接收对应的移动指令,并在Present_position数组中反馈当前移动位置。

简单给程序模块Servo120赋值即可完成位置和速度的设定,把设定值作为变量关联到HMI人机界面上将实现位置和移动速度的可视化修改,为设备的调整提供了便利条件。给Servo120程序模块发出伺服移动指令Action position[n],Servo120程序模块将控制伺服驱动模块以设定速度移动到相应设定位置n,并反馈到位信号。

4 结论

本文设计了一种基于西门子111报文的S7-300的PLC与S120伺服驱动模块通讯控制模块Servo120。该模块在大众211项目中得到验证并广泛应用。程序模块Servo120运行稳定可靠、兼容性好、并且扩展性强。项目中广泛的应用使得项目调试进度大大提高,并减少了出错率,提高了控制系统伺服驱动部分的稳定性,充分体现了模块化程序的优越性。该模块会为带有S120伺服驱动模块的项目,在实施中提供了一条快捷、可靠的解决方案。

摘要:针对自动化系统中集成S120伺服驱动模块时遇到的控制及通讯难题,设计了基于111报文的S7-300通讯控制程序模块Servo120。使得从事自动化工作的工程师可以通过该模块简单、快捷的实现S7控制系统与S120伺服驱动模块的通讯,并通过报文方式实现S7-300PLC对S120伺服驱动模块的速度与位置控制。模块对报文中的控制及状态字进行详细解析,大大提高了调试诊断效率。并设置了多点联动,速度转换等模式,极大的方便了现场应用,提高了系统集成过程的效率并降低了操作难度。

关键词:S120伺服驱动模块,111报文,程序模块

参考文献

模块化的驱动程序 篇10

怎样在教学过程中提高《计算机网络》课程的教学效果及怎样在课堂教学中调动学生的积极性,让学生从被动接受知识,到主动将相关知识系统化条理化地组织在一起,并能有效地利用已掌握的知识解决实际操作中的问题,是每位教师都要面对的挑战。

1 计算机网络课程教学中存在的问题

《计算机网络》课程是集知识和技能于一体、实践性很强的课程,要求学生既要学好理论知识,又要掌握实际操作技能。目前,在计算机网络课程教学过程中存在以下主要问题:

第一,教材不易选择。目前计算机网络方面的教材种类较多,但是要找到一本恰当的教材却很困难。该文选择吴功宜编著的《计算机网络(第2版)》为教材。该教材吸取了国内外知名大学使用教材和实践环节安排的优点,并结合国内普通高校计算机及相关专业的实际情况,教材内容定位适中,配套教材齐全。该文所选教材以Internet技术为主线组织知识点,有利于调动学生学习的积极性和主动性,有助于引导学生从感性认识出发,结合基本理论,逐步掌握网络技术中处理问题的基本方法,逐步培养将网络技术应用到各种行业的意识和能力。

第二,以教师为中心,完全由教师主宰课堂,忽视学生的认知主体地位。大部分院校在《计算机网络》课程教学中采取的方法主要是课堂多媒体演示教学与上机模拟实践练习相结合的方法。学生只能被动地接受知识,难以调动学生的积极性。对不同基础的学生不能区别对待,造成有些学生营养过剩,有些学生消化不良。

第三,对计算机网络实验的重视不够,实验设备缺乏。传统观念认为计算机网络实验主要是验证性实验,实验课依附于理论教学,导致实验内容不系统,形式松散,随意性大。势必造成学生学习过程中理论和实践的脱节,不能在实际环境中学以致用。

如果教学方法不当,教学很难达到预期的目标和效果。[2]

因此,我们要彻底改变传统的教学方法,教学观念和教学行为,在《计算机网络》教学中更自觉地推进素质教育,注重实践教学的作用,以期达到更好的教学效果。笔者通过阅读大量的文献发现,模块化教学法、任务驱动教学法在职业教育中应用普遍,能够增强学生的实践性、自主学习能力和创新能力。笔者拟以模块化教学思想为指导对《计算机网络》教材内容进行模块化划分,并基于任务驱动原理对具体的各模块进行教学设计研究。

2 计算机网络课程性质

计算机网络是计算机技术与通信技术相互渗透、密切结合而形成的一门交叉科学。《计算机网络》课程具有应用广泛、实用性强、概念众多,理论复杂、技术发展迅速及其知识更新快等特点。根据这些特点在计算机网络课程教学的组织中需要协调处理好计算机技术知识与通信知识的关系、计算机网络知识体系与新技术学习的关系以及计算机网络基础知识的学习与继续学习能力培养的关系。该文所选教材教学内容知识点分为4个部分[3]。第1个部分主要讨论计算机网络的基本概念、发展与应用,以及网络体系结构与网络协议的基础知识。

第2个部分在数据通信基础知识与概念的基础上,对广域网的物理层、数据链路层的基本概念与协议进行系统地讨论。在介绍介质访问控制子层的基础上,对局域网、城域网技术发展、应用进行讨论,同时讨论交换局域网、虚拟局域网、无线局域网技术与基本组网方法。

第3个部分对TCP/IP协议体系中的网络层、传输层与应用层进行系统地讨论,对网络互联、分布式进程通信、客户/服务器模型进行深入地分析,并以典型应用层协议的分析为例,对网络服务的基本概念、协议与协议动作、协议与协议数据单元等基本问题进行总结,帮助学生能够将知识融会贯通,加深对网络工作原理与实现技术的理解。

第4个部分研究目前技术发展的热点问题已经网络安全与网络管理技术,涉及网络安全技术研究的基本问题、网络安全策略的设计,加密与认证、入侵检测、防火墙、网络防病毒、网络文件备份与恢复技术等。

该文所选教材的教学内容知识点的组织关系如下图所示:

3 模块化教学

模块化教学法(MES)是20世纪70年代初由国际劳工组织研究开发出来的以现场教学为主,以技能培训为核心的一种教学模式。模块化教学法的思想在职教界已被普遍接受,模块化教学法可显著增强学生理论学习的直观性,提高操作技能,激发学习兴趣。但是在学术界对模块化教学的理解在本质与内涵存在一定差异,在实践中也存在一些问题。“模块化教学法”似可定义为按照教学过程的基本环节,把课程结构、教学内容按多元目标进行系统划分的方法。它旨在把一个复杂、相互交叉的课程结构分成若干个基本教学模块。[4]

模块化教学不仅是坚持按需施教的必然要求,也是深化教学改革的基本环节,同时还是培养教研骨干的重要平台。模块化教学的建立更好地提升了教学过程的科学化水平。首先,制度的建立是为了使行为更加规范,使得教学流程有了规章制度可循,更加规范,细到每一个环节都有专人的负责。其次,在内容方面,注重教学内容的布局,内容更加系统性,理论更加完整,从微观上,教学布局变得十分的严谨。此外,可实现教学资源的最优化,共享优质的教学资源,在教学管理、教学方式方面都能发挥最大的潜能。

该文依据模块化教学基本原理将所选教材的4部分知识点拟划分为3模块,即计算机网络概论、网络体系结构和网络安全与管理等。如下图所示:

4 任务驱动

任务驱动教学法是借鉴了建构主义学习理论的“抛锚式”教学法“双主模式”的教学思想[5]。教师首先明确所要教授的教学课程的教学内容,以及所需要达到的教学目标,围绕这单个教学子目标,设立教学任务情景,使学生产生产生强烈的问题驱使动机,按照任务驱动的步骤,帮助学生发现、探索、解决问题。教师是整个学习过程的引导者,同时教师和学生都是参与者,在学习过程中,学生通过主动应用学习资源,可自主探索,也可以与老师和周围同学互动协作学习,学生的“求知欲”、“主题意识”、“实践和创新能力”是任务驱动教学方法对学生所要突出的培养的目标。

任务驱动起源于建构主义学习理论。建构主义教学设计原则强调:学生的学习活动必须与任务或问题相结合,以探索问题来引导和维持学习者的学习兴趣和动机[6]。有些人把它称为“单刀直入法”或“黑箱方法”[7]。任务设计是任务驱动教学过程中最为关键的环节,它的难易程度和课操作性决定着整节课的教学教学效果和目标的实现。因此,任务设计应当避免一些误区,应当避免任务庸俗化,将任务仅仅看成是是一次练习或者作业,在任务设计中逻辑和层次模糊,要求学生简单片面完成任务,这样不仅不能激发学生的求知欲和培养学生自主学习的能力,所以,任务驱动设计应当遵循以下一些原则。

1)精选任务。教师根据教学目标的要求,深刻把握教学目标和教材内容的深度、难度及广度,按照教师主导学生主体这个理念,是否具有综合性,是否具有创新点,能激发学生的求知欲和主动积极性,从而培养学生的学习及思考问题的能力,并兼顾到团队合作精神和创新能力的提高。

2)创设情境。教师是任务驱动情境的创设者,创设情境的过程是按照任务目标,由表及里,由浅入深的一个过程,这就需要情境具有趣味性,侧重点和针对性,更好引导在自主学习和协作学习的过程之中,营造一个良好的相互讨论和学习的氛围,它改变了传统教师讲学生听的教学模式,教师不断激励学生前进,通过真实性的交流,可以有效改变学生传统的学习观。

3)协作、交流互动。在任务设计的环节,教师首先围绕主题设置一些能够引发争议的话题,也可以随着教学进程的改变,教师关注到学生的讨论,认真倾听和引导学生完成任务,选取学生不会解答的有代表性的问题,也可以根据自己灵感临场发挥,交流中教师进行问题错误纠正,难点点拨。在共同完成任务的过程中,学习者发挥各自的认知特点,相互争论、相互帮助、相互提示或是进行分工合作。[8]教师需要强调团队合作精神,培养学生的沟通能力协作能力,关注和关心一些胆小、内向不爱发言的同学的情绪,鼓励他们与同伴交流,对一些爱抢话题和不懂得聆听他人意见的同学要适当引导,通过讨论与互动,相互交流,形成不同观点的交锋,思想火花的碰撞,学生能不断认识加深对问题的理解和解决,还能培养倾听与交流等良好的个人素养。

4)总结及评价。由于分组讨论和分段完成任务,学生在一节课程结束之后头脑里储备的知识是零散的,教师需要引导学生对一节课的内容进行归纳总结,以回归知识的系统性和完整性。或与旧的知识点相互联系,以加深对问题的理解与认识。或相互评价,以提高改进,教师选取表现突出的学生进行表扬与鼓励。每一节课的结束都能够为下一门课开好的头,最后基本能达到学生的对任务的自我设计、自我组织、自我总结和评价。

5 小结

“模块化”教学思想指导下可以将零散的复杂的计算机网络知识体系进行系统有序的梳理。“任务驱动”教学法不仅“授之以鱼”,更强调“授人以渔”,强调自主学习和创新能力的培养,是对传统教学的发展。“任务驱动法”比较适合于《计算机网络》课程教学。使用这种方法,只要任务安排得恰当,学生就能够根据所布置的任务去积极准备,从而充分调动学生学习的积极性,既实现了教学要求又能挖掘不同层次学生的潜力,使学生能够积极主动地学好本门课程。[9]该文着重分析计算机网络课程教学过程中的问题及其课程性质以及模块化教学、任务驱动等思想的脉络而较少关注具体的教学设计案例及其效果的研究,这将在后续的研究中得到深化。

参考文献

[1]吴功宜.计算机网络(第二版)[M].北京:清华大学出版社,2007.

[2]胡树玮.任务驱动教学法在《计算机网络》课程中的应用[J].科技信息,2010(16).

[3]吴功宜.计算机网络课程设计[M].北京:机械工业出版社,2005.

[4]王素玉,刘桦.模块化教学的应用设计与实践[J].山东工业大学学报社会科学版,2000(5).

[5]杨悦民,何军妹.任务驱动教学法应用研究[J].镇江高专学报,2005(1).

[6]冯毅.任务驱动教学法的应用[J].成都教育学院学报,2003(7).

[7]伍文庄“.任务设计”教学法初探[J].现代教育技术,2002(3).

[8]郑茸.应用“任务驱动”教学培养师范生教育技术素养的研究[D].广西师范大学硕士学位论文,2007,5.

上一篇:地方高水平大学下一篇:行驶的优雅