PLC可编程逻辑器件的选择方法_工科论文十篇
PLC可编程逻辑器件的选择方法_工科论文十篇
【法学论文】导语,你眼前所阅览的本篇文章共有37403文字,由廉丽兴用心订正,上传到【美文档www.meiword.com】!计数是一种最简单基本的运算。计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品PLC可编程逻辑器件的选择方法_工科论文十篇感谢大家一起来学习参考!
PLC可编程逻辑器件的选择方法_工科论文 第一篇
摘要:介绍了在控制系统中选择PLC的一般方法,详细说明了在PLC机型的多样性,以及在PLC的输入输出点数功能等方面作如何选择。
关键词:PLC I/O 选择 开关量 模拟量 数字量
随着PLC的推广普及,PLC产品的种类和数量越来越多,而且功能也日趋完善。近年来,从美国、日本、德国等国引进的PLC产品及国内厂家组装或自行开发的产品已有几十个系列、上百种型号。PLC的品种繁多,其结构型式、性能、容量、指令系统、编程方法、价格等各不相同,适用场合也各有侧重。因此,合理选择PLC,对于提高PLC在控制系统中的应用起着重要作用。
1 机型的选择
PLC机型选择的基本原则是,在功能满足要求的前提下,选择最可靠、维护使用最方便以及性能价格比的最优化机型。
在工艺过程比较固定、环境条件较好(维修量较小)的场合,建议选用整体式结构的PLC;其它情况则最好选用模块式结构的PLC。
对于开关量控制以及以开关量控制为主、带少量模拟量控制的工程项目中,一般其控制速度无须考虑,因此,选用带A/D转换、D/A转换、加减运算、数据传送功能的低档机就能满足要求。
而在控制比较复杂,控制功能要求比较高的工程项目中(如要实现PID运算、闭环控制、通信联网等),可视控制规模及复杂程度来选用中档或高档机。其中高档机主要用于大规模过程控制、全PLC的分布式控制系统以及整个工厂的自动化等。根据不同的应用对象,表1列出了PLC的几种功能选择。
表1 PLC的功能及应用场合
序 号应用对象功 能 要 求应 用 场 合1替代继电器继电器触点输入/输出、逻辑线圈、定时器、计数器替代传统使用的继电器,完成条件控制和时序控制功能2数学运算四则数学运算、开方、对数、函数计算、双倍精度的数学运算设定值控制、流量计算;PID调节、定位控制和工程量单位换算3数据传送寄存器与数据表的相互传送等数据库的生成、信息管理、BAT-CH(批量)控制、诊断和材料处理等4矩阵功能逻辑与、逻辑或、异或、比较、置位(位修改)、移位和变反等这些功能通常按“位”操作,一般用于设备诊断、状态监控、分类和处理等5高级功能表与块间的传送、校验和、双倍精度运算、对数和反对数、平方根、PID调节等通信速度和方式、与上位计算机的联网功能、调制解调器等6诊断功能PLC的诊断功能有内诊断和外诊断两种。内诊断是PLC内部各部件性能和功能的诊断,外诊断是处理机与I/O模块信息交换的诊断--7串行接口(RS-232C)一般中型以上的PLC都提供一个或一个以上串行标准接口(RS-232C),以例连接打印机、CRT、上位计算机或另一台PLC--8通信功能现在的PLC能够支持多种通信协议。比如现在比较流行的工业以太网等对通信有特殊要求的用户对于一个大型企业系统,应尽量做到机型统一。这样,同一机型的PLC模块可互为备用,便于备品备件的采购和管理;同时,其统一的功能及编程方法也有利于技术力量的培训、技术水平的提高和功能的开发;此外,由于其外部设备通用,资源可以共享,因此,配以上位计算机后即可把控制各系统的多台PLC联成一个多级分布式控制系统,这样便于相互通信,集中管理。
2 输入/输出的选择
PLC是一种工业控制系统,它的控制对象是工业生产设备或工业生产过程,工作环境是工业生产现场。它与工业生产过程的联系是通过I/O接口模块来实现的。
通过I/O接口模块可以检测被控生产过程的各种参数,并以这些现场数据作为控制信息对被控对象进行控制。同时通过I/O接口模块将控制器的处理结果送给被控设备或工业生产过程,从而驱动各种执行机构来实现控制。PLC从现场收集的信息及输出给外部设备的控制都需经过一定距离,为了确保这些信息的正确无误,PLC的I/O接口模块都具有较好的抗干扰能力。根据实际需要,一般情况下,PLC都有许多I/O接口模块,包括开关量输入模块、开关量输出模块、模拟量输入模块、模拟量输出模块以及其它一些特殊模块,使用时应根据它们的特点进行选择。
2.1 确定I/O点数
根据控制系统的要求确定所需要的I/O点数时应再增加10%~20%的备用量,以便随时增加控制功能。对于一个控制对象,由于采用的控制方法不同或编程水平不同,I/O点数也应有所不同。
表2列出了典型传动设备及常用电气元件所需的开关量的I/O点数。
表2 典型传动设备及常用电气元件所需的开关量的I/O点数
序 号电气设备、元件输入点数输出点数序 号电气设备、元件输入点数输出点数1Y-起动的笼型异步电动机4312光电管开关2-2单向运行的笼型异步电动机4113灯-13可逆运行的笼型异步电动机5214拨码开关4-4单向变极电动机5315三档波段开关3-5可逆变极电动机6416行程开关1-6单向运行的直流电动机9617接近开关1-7可逆运行的直流电动机12818制动器-18单线圈电磁阀211机-19双线圈电磁阀3220位置开关2-10比例阀3521单向运行的绕线转子异步电动机3411按钮1-22可逆运行的绕线转子异步电动机452.2 开关量输入/输出
通过标准的输入/输出接口可从传感器和开关(如按钮、限位开关等)及控制(开/关)设备(如指示灯、器、电动机起动器等)接收。典型的交流输入/输出为24~240V,直流输入/输出为5~240V。
尽管输入电路因制造厂家不同而不同,但有些特性是相同的。如用于消除错误的抖动电路;免于较大瞬态过电压的浪涌保护电路等。此外,大多数输入电路在高压电源输入和接口电路的控制逻辑部分之间都设有可选的隔离电路。
在评估离散输出时,应考虑熔丝、瞬时浪涌保护和电源与逻辑电路间的隔离电路。熔丝电路也许在开始时花费较多,但可能比在外部安装熔丝耗资要少。
2.3 模拟量输入/输出
模拟量输入/输出接口一般用来感知传感器产生的。这些接口可用于测量流量、温度和压力,并可用于控制电压或电流输出设备。这些接口的典型量程为-10~+10V、0~+10V、4~20mA或10~50mA。
一些制造厂家在PLC上设计有特殊模拟接口,因而可接收低电平如RTD、热电偶等。一般来说,这类接口模块可用于接收同一模块上不同类型的热电偶或RTD混合。
2.4 特殊功能输人/输出
在选择一台PLC时,用户可能会面临一些特殊类型且不能用标准I/O实现的I/O限定如定位、快速输入、频率等。此时用户应当考虑供销厂商是否提供有特殊的有助于最大限度减小控制作用的模块。有些特殊接口模块自身能处理一部分现场数据,从而使CPU从耗时的任务处理中解脱出来。
2.5 智能式输入/输出
当前,PLC的生产厂家相继推出了一些智能式的输入/输出模块。一般智能式输入/输出模块本身带有处理器,可对输入或输出作预先规定的处理,并将处理结果送入CPU或直接输出,这样可提高PLC的处理速度并节省存储器的容量。
智能式输入/输出模块有高速计数器(可作加法计数或减法计数)、凸轮模拟器(用作绝对编码输人)、带速度补偿的凸轮模拟器、单回路或多回路的PID调节器、ASCII/BASIC处理器、RS—232C/422接口模块等。表3归纳了选择I/O模块的一般规则。
表3 选择PLC的I/O接口模块的一般规则
I/O模块类型现场设备或操作(举例)说 明离散输入模块和I/O模块选择开关、按钮、光电开关、限位开关、电路断路器、接近开关、液位开关、电动机起动器触点、继电器触点、拨盘开关输入模块用于接收ON/OFF或OPENED/CLOSED(开/关),离散可以是直流的,也可以是交流的离散输出模块和I/O模块器、控制继电器、风扇、指示灯,扬声器、阀门、电动机起动器、电磁线圈输出模块用于将传递到ON/OFF或OPENED/CLOSED(开/关)设备。离散可以是交流或直流模拟量输入模块温度变送器、压力变送器、湿度变送器、流量变送器、电位器将连续的模拟量转换成PLC处理器可接受的输入值模拟量输出模块模拟量阀门、执行机构、图表记录器、电动机驱动器、模拟仪表将PLC处理器的输出转为现场设备使用的模拟量(通常是通过变送器进行)特种I/O模块电阻、电偶、编码器、流量计、I/O通信、ASCII、RF型设备、称重计、条形码阅读器、标签阅读器、显示设备通常用作位置控制、PID和外部设备通信等专门用途3 PLC存储器类型及容量选择
PLC系统所用的存储器基本上由PROM、E-PROM及PAM三种类型组成,存储容量则随机器的大小变化,一般小型机的最大存储能力低于6kB,中型机的最大存储能力可达64kB,大型机的最大存储能力可上兆字节。使用时可以根据程序及数据的存储需要来选用合适的机型,必要时也可专门进行存储器的扩充设计。
PLC的存储器容量选择和计算的第一种方法
一种用CPLD实现视频xx运动检测的方法_工科论文 第二篇
摘要:介绍了一种采用CPLD外加SRAM存储芯片,对ITU601格式数字视频进行运动检测的方法。在此基础上,给出了一个实现这种检测方法的例子。在这个例子中,用Philips公司的视频处理芯片SAA7113的输出作为数字视频源,用Lattice公司的CPLD芯片LC4128V对视频进行运动检测。
关键词:运动检测 CPLD 数字视频
在数字录像、数字监控等领域内,人们通常只对场景内存在的物体运动感兴趣。在这种情况下,需要对输入的视频进行预处理,识别场景中是否存在物体运动,也就是进行运动检测,然后再决定是否做进一步的处理,例如录像、等。对于录像系统,通过运动检测,能够避免不必要的数字录像,有效地减少系统所需存储空间;同时可以加快检索速度,提高资料有效性。对于监控系统,运动检测是一种监视场景信息的有效手段。
很多数字视频处理系统通常会选用DSP芯片作为主处理芯片。由于DSP对数字的处理是通过编程实现各种算法的,只通过软件就可以方便地加入某些功能,因此没有必要添加额外的硬件来完成运动检测。但是有很多系统,由于各种原因需要选用其它芯片来完成视频的处理,例如华邦的W9968x系列芯片,由硬件完成的处理,其算法已经被固化在芯片的内部电路中,不能随意更改。这一类芯片功能比较单一,但速度快、价格便宜,通常可以作为某些系统的专用芯片。对于这种情况,就需要考虑用另外的方法来实现运动检测。本文介绍的用CPLD进行运动检测的方法就是针对这一类情况的。该方法是通过附加一片CPLD芯片和一片SRAM芯片构成一个低成本的运动检测模块的。
1 运动检测原理
运动检测的实现方法有硬件实现的也有软件实现的,但基本思想大同小异,都是对相隔一定时间的两帧视频数据进行抽样,并对抽样数据进行比较,如果比较结果显示这两帧数据存在比较大的差异,那么就认为数据输入场景中存在物体的运动,反之就认为没有运动存在。
本文介绍的用CPLD实现运动检测的方法也是基于这种思想,但和一般的实现方法有所不同,其实现方法有一定的特色。
通常情况下,在实现上述思想的过程中,需要两个缓存区分别存放两帧抽样数据,然后对这两帧数据进行比较并对比较结果进行统计,最后得出比较结果。这样做需要较大的SRAM作为缓存,而且往往需要单片机或者DSP对CPLD进行控制,并将其作为两帧数据的比较器。这样,运动检测模块的性会受到限制,而且CPLD的功能只是一个抽样控制器。
本文提出的方法只对一帧抽样数据进行缓存,在对第二帧数据进行抽样时读取第一帧中与此刻抽样的数据相对应的缓存数据,并将两者进行比较,用一个计数器记录比较结果,如果差值超过阈值,计数器加一,否则不加。当这个计数值超过某一个规定数值的时候,就认为输入视频数据中存在着物体运动。这样做的好处是需要的缓存区较小,而且CPLD可以单独对数据进行处理,提高运动检测模块的性,运动检测模块可以单独调试。
2 用CPLD实现运动检测
下面通过实例说明用CPLD实现运动检测的过程,并给出部分VHDL程序。在这个实例中,模拟视频从CCD摄像头输入,经过SAA7113芯片预处理后,输出数字视频。该分作两路:一路输入到CPLD进行运动检测,另一路则输入到芯片W99682,对进行JPEG压缩等进一步处理。
示例中用到的CPLD是Lattice公司的LC4128V-75T100C,它具有128个宏单元、7.5ns的延时。SRAM芯片是ISSI公司的63LV1024,其容量为128K×8bit,具有10ns的延时。CPLD检测到运动后,通过中断,要求W99682对做进一步处理。其系统结构图如图1(省略了部分与运动检测无关的元件)所示。
2.1 SAA7113的输出
SAA7113是Philips公司推出的一款功能强大的视频预处理芯片,最基本的功能是模/数转换,输出的数字视频符合ITU601标准。ITU601是长宽比为43和169的数字电视标准,它对数字电视的各项参数进行了详细的描述和规范。在我国,通常采用的都是422采样格式、PAL制式、长宽比为43的数字电视。SAA7113的输出就是指这一格式的。这种格式的主要特征是:
(1)有三个正交分量:亮度分量Y、色度分量Cb和Cr。
(2)25帧/秒的帧率,每帧两场,每帧扫描625行。
(3)对于亮度分量Y,每行抽样864次,对于色度分量Cr和Cb,每行抽样432次。
(4)8bit或者10bit的PCM编码。
(5)量化:0和255用于同步;1到254表示抽样结果的PCM码;对于亮度分量Y,16表示黑色,235表示白色;对于色度分量Cb或者Cr,128表示没有色度。
(6)有三个用于同步输出数据:行同步SHS(15.6kHz)、场同步SVS(50Hz)和象素数据同步SPCLK(27MHz)。
包括消隐期在内,每帧数据扫描625行,每行抽样864个象素,因此总的分辨率是864×625。一帧数据分作奇偶两场,从上一帧的624行到本帧的310行是奇场,其中上帧624行到本帧22行是奇场消隐期,从23行到310行是奇场有效行;从本帧311行到623行是偶场,其中311到335行是偶场消隐期,336到623行为偶场有效行。图2是一帧的示意图。
对于帧内的每一行,共有864个象素,其中从第0个到第719个为有效象素,共计720个,从720个到863个为消隐期象素。每个象素都抽取Y分量,每两个象素则抽取一个Cr和一个Cb分量。图3是帧内一行以及象素抽样数据排列格式的示意图。表格第一行是亮度分量Y,第二行是色度分量Cr,第三行是色度分量Cb。
2.2 抽样
从SAA7113视频输出数据格式的介绍可以看到,保存完整的一帧数据(包括消隐期数据在内)需要864×625×2=1.08×106Byte的SRAM,需要1M以上的存储空间,这显然是不可取的,必须对帧数据进行抽样。本文介绍的方法的抽样规则如下:
(1)抽取一帧数据的奇场或者偶场。做比较的两场抽样数据必须取自相同的场次,或者同为奇场或者同为偶场,否则就没有可比性。
(2)对连续的8帧抽取第2帧和第8帧进行比较。被抽样的两帧之间必须有一定的时间间隔,间隔太短或者太长都会影响检测的灵敏度。
(3)对一场数据抽取有效行中的奇数行,从场同步有效边沿开始对行同步计数,直到下一个场同步为止。从23行到310行是有效行,共144个奇数行。
(4)对被抽取的行,取其亮度分量Y。根据图3中象素数据的排列顺序,从象素数据有效开始,偶数的象素数据脉冲同步的是亮度分量Y。
对于以上的抽样规则,有必要说明一下。最终的抽样数据并非全部都是有效数据,其中还包括了一部分消隐期的数据。这样做是可以理解的,因为运动检测的结果是根据两帧被抽样数据的差值来判定的,虽然消隐期的数据是无效的,但是每次消隐期的数据是相同的,两次抽样数据相减结果是零,并不会影响结果的判定。之所以对一场的行进行抽样,主要是为了减小抽样数据量,使数据总量不超过128K SRAM的容量。
如果要保证抽样数据全部都是有效数据,那么必须利用输入的象素数据同步脉冲SPCLK、场同步SVS和行同步SHS对抽样时刻做严格的同步。这需要消耗额外的CPLD资源,而效果却不一定好。
根据以上规则,实际抽样的数据量为:864×144=124416Byte,需要的SRAM容量为128K。
2.3 程序
下面给出实现以上过程的一部分VHDL程序。
sram_write_controlprocessstore_fieldvalidspclk2line_counter
begin
writing<=valid and spclk2 and spclk and store_field and lin
变频器制动新思路、新方法_工科论文 第三篇
The New Way and New Method of Inverter Brake
台州富凌机电有限公司技术部 刘文兵
山东风光电子有限公司总工 李瑞来
Liu Wenbing Li Ruilai
摘要:简要介绍了动力制动、回馈制动的特点,较详细的说明了电容反馈制动的原理、特点及应用场合等。
Abstract:The characteristic of the energy brake and feed back brake is briefly introduced , and
detailed introduction on the operation principle ,characteristic and application of the
electrolyte capacitance brake is given.
关键词:变频器 能量回馈 电容反馈制动
Key words:Inverter Energy feedback Eectro-capacitance feedback brake
TP273 [文献标识码]B 文章编号 1561-0330(20xx)06-00
1引言
在通用变频器、异步电动机和机械负载所组成的变频调速传统系统中,当电动机所传动的位能负载下放时,电动机将可能处于再生发电制动状态;或当电动机从高速到低速(含停车)减速时,频率可以突减,但因电机的机械惯性,电机可能处于再生发电状态,传动系统中所储存的机械能经电动机转换成电能,通过逆变器的六个续流二极管回送到变频器的直流回路中。此时的逆变器处于整流状态。这时,如果变频器中没采取消耗能量的措施,这部分能量将导致中间回路的储能电容器的电压上升。如果当制动过快或机械负载为提升机类时,这部分能量就可能对变频器带来损坏,所以这部分能量我们就应该考虑考虑了。
在通用变频器中,对再生能量最常用的处理方式有两种:(1)、耗散到直流回路中人为设置的与电容器并联的“制动电阻”中,称之为动力制动状态;(2)、使之回馈到电网,则称之为回馈制动状态(又称再生制动状态)。还有一种制动方式,即直流制动,可以用于要求准确停车的情况或起动前制动电机由于外界因素引起的不规则旋转。
在书籍、刊物上有许多专家谈论过有关变频器制动方面的设计与应用,尤其是近些时间有过许多关于“能量回馈制动”方面的文章。今天,笔者提供一种新型的制动方法,它具有“回馈制动”的四象限运转、运行效率高等优点,也具有“能耗制动”对电网无污染、可靠性高等好处。
2 能耗制动
利用设置在直流回路中的制动电阻吸收电机的再生电能的方式称为能耗制动,如图1所示。
其优点是构造简单;对电网无污染(与回馈制动作比较),成本低廉;缺点是运行效率低,特别是在频繁制动时将要消耗大量的能量且制动电阻的容量将增大。
一般在通用变频器中,小功率变频器(22kW以下)内置有了刹车单元,只需外加刹车电阻。大功率变频器(22kW以上)就需外置刹车单元、刹车电阻了。
3 回馈制动
实现能量回馈制动就要求电压同频同相控制、回馈电流控制等条件。它是采用有源逆变技术,将再生电能逆变为与电网同频率同相位的交流电回送电网,从而实现制动如图2所示。
回馈制动的优点是能四象限运行,如图3所示,电能回馈提高了系统的效率。其缺点是:(1)、只有在不易发生故障的稳定电网电压下(电网电压波动不大于10%),才可以采用这种回馈制动方式。因为在发电制动运行时,电网电压故障时间大于2ms,则可能发生换相失败,损坏器件。(2)、在回馈时,对电网有谐波污染。(3)、控制复杂,成本较高。
4新型制动方式(电容反馈制动)
4.1主回路原理
主回路原理图如图4所示。
整流部分采用普通的不可控整流桥进行整流(如图中的VD1——VD6组成),滤波回路采用通用的电解电容(图中C1、C2),延时回路采用接触器或可控硅都行(图中T1)。充电、反馈回路由功率模块IGBT(图中VT1、VT2)、充电、反馈电抗器L及大电解电容C(容量约零点几法,可根据变频器所在的工况系统决定)组成。逆变部分由功率模块IGBT组成(如图VT5—VT10)。保护回路,由IGBT、功率电阻组成。
(1) 电动机发电运行状态
CPU对输入的交流电压和直流回路电压νd的实时监控,决定向VT1是否发出充电,一旦νd比输入交流电压所对应的直流电压值(如380VAC—530VDC)高到一定值时,CPU关断VT3,通过对VT1的脉冲导通实现对电解电容C的充电过程。此时的电抗器L与电解电容C分压,从而确保电解电容C工作在安全范围内。当电解电容C上的电压快到危险值(比如说370V),而系统仍处于发电状态,电能不断通过逆变部分回送到直流回路中时,安全回路发挥作用,实现能耗制动(电阻制动),控制VT3的关断与开通,从而实现电阻R消耗多余的能量,一般这种情况是不会出现的。
(2) 电动机电动运行状态
当CPU发现系统不再充电时,则对VT3进行脉冲导通,使得在电抗器L上行成了一个瞬时左正右负的电压(如图标识),再加上电解电容C上的电压就能实现从电容到直流回路的能量反馈过程。CPU通过对电解电容C上的电压和直流回路的电压的检测,控制VT3的开关频率以及占空比,从而控制反馈电流,确保直流回路电压νd不出现过高。
4.4系统难点
(1)电抗器的选取
(a)、我们考虑到工况的特殊性,假设系统出现某种故障,导致电机所载的位能负载自由加速下落,这时电机处于一种发电运行状态,
再生能量通过六个续流二极管回送至直流回路,致使νd升高,很快使变频器处于充电状态,这时的电流会很大。所以所选取电抗器线径要大到能通过此时的电流。
(b)、在反馈回路中,为了使电解电容在下次充电前把尽可能多的电能释放出来,选取普通的铁芯(硅钢片)是不能达到目的的,最好选用铁氧体材料制成的铁芯,再看看上述考虑的电流值如此大,可见这个铁芯有多大,素不知市面上有无这么大的铁氧体铁芯,即使有,其价格也肯定不会很低。
所以笔者建议充电、反馈回路各采用一个电抗器。
(2)控制上的难点
(a)、变频器的直流回路中,电压νd一般都高于500VDC,而电解电容C的耐压才400VDC,可见这种充电过程的控制就不像能量制动(电阻制动)的控制方式了。其在电抗器上所产生的瞬时电压降为 ,电解电容C的瞬时充电电压为νc=νd-νL,为了确保电解电容工作在安全范围内(≤400V),就得有效的控制电抗器上的电压降νL,而电压降νL又取决于电感量和电流的瞬时变化率。
(b)、在反馈过程中,还得防止电解电容C所放的电能通过电抗器造成直流回路电压过高,以致系统出现过压保护。
4.5主要应用场合及应用实例
正是由于变频器的这种新型制动方式(电容反馈制动)所具有的优越性,近些来,不少用户结合其设备的特点,纷纷提出了要配备这种系统。由于技术上有一定的难度,国外还不知有无此制动方式?国内目前只有山东风光电子公司由以前采用回馈制动方式的变频器(仍有2台在正常运行中)改用了这种电容反馈制动方式的新型矿用提升机系列,到目前为止,这种电容反馈制动的变频器正长期正常运行在山东宁阳保安煤矿及山西太原等地,填补了国内这一空白。
随着变频器应用领域的拓宽,这个应用技术将大有发展前途,具体来讲,主要用在矿井中的吊笼(载人或装料)、斜井矿车(单筒或双筒)、起重机械等行业。总之需要能量回馈装置的场合都可选用。
参考文献
[1] 韩安荣.通用变频器及其应用(第2版)[M].:机械工业出版社,
作者简介
刘文兵(1981—) 男 从事过变频器的应用工作,现在台州富凌机电有限公司,从事变频器的设计与制造。
摘自《变频器世界》20xx年第6期
colspan="2" align='right' class="Article_tdbgall">
谈中学语文教学法学科的理论研究与应用训练_语言教育论文 第四篇
回顾改革开放以来教学法的学科建设与教学实践,一方面我们高兴地看到这门学科的教材建设取得了突飞 猛进的发展;另一方面我们也惊奇地发现教学法教学没能如期完成其教学任务。这门学科在理论研究方面发展 较快而在培养与训练学生掌握语文教学技能方面却相应地滞后,即学科的“理论”与“应用”失衡,两者没能 得到同步发展,中学语文教学法走上了重理论轻实践的路。
一
研究中学语文教学法改革开放以来的发展轨迹,便不难明白其重理论研究轻实践应用的原因。
中学语文教学法是从实践应用起步的。改革初期,教学法课程刚刚恢复的时候,这门课程被叫做“中学语 文教材教法”或“中学语文教材”课。那时的教学目的比较单一,即引导学生熟悉中学语文教材,学习掌 握几种常用文体的特征,教材、明确教学内容、熟悉教学过程、掌握基本的教学方式方法。由于教育界长 期忽视教育学、心理学的研究,教学法学科的理论研究先天不足、所以那时的理论显得十分薄弱甚至苍白,相 比之下在“应用”方面却十分重视,教学中练就语文教学的“三招两式”,毕业后便能分解教材、编写教案并 按部就班地开始教学。也许那时很少理论约束,毕业生在初上讲台开始语文教学时顾虑很少。从这个角度看, 可以说改革开放以来,中学语文教学法是从实践应用起步的。
1978和1979年在筹建语文教学法研究会和编写12院校《中学语文教学法》教材过程中,从事教学法教学与 语文教育研究的同行们的共同苦恼是;这门学科的基础理论太薄弱!中学语文教学法不能停留在“怎样教语文 ”的教学描述阶段,必须全力以赴地加强语文教育的基础理论研究,广泛借鉴教育学、心理学的研究成果,汲 取国外语文教育理论,以丰富这门学科,当时这已成为语文教学法教师与语文教育工作者的共识。
中学语文教学法基础理论落后由来已久。建国前最早的一部教学法教材,是1924年黎锦熙先生的《新著国 语教学法》,但那是一部小学语文教学法。1929年王森然先生的《中学国文教学概要》才是第一部中学语文教 学法。三、四十年代以阮真和蒋伯潜先生为代表的中学语文教学法教材或专著有过几部。遗憾的是建国之后, 这些语文教育理论没能得到继承。中学语文教学法从建国以后到1978年以前,一直是一门不受重视的课程,时 开时停,没有教学大纲、没有专门教材,大多数学校没有专职教师,十年则完全被取消。这就是中学语文 教学法理论薄弱的历史原因。建国后到结束的30年间,中学语文教学法的研究对象——中学语文教 学也一直处于风雨飘摇的变动中。中学语文科的性质、目的、任务,一直处于争论状态中;没有一套语文教材 完成一个使用周期;没有一套教学大纲能成为指导语文教学的权威性文件;语文教师总是处于“年年新教材, 岁岁新老师”的被动状态。做为反映语文科教学规律与总结其施教方式的中学语文教学法的理论研究、根本无 法跟上中学语文教学千变万化的形势,所以许多院校不得不停开这门课程。这是这门学科基础理论薄弱的现实 原因。中学语文教学法是教育学的分支学科,它是教育学、心理学发展的边缘性学科。纵观建国后至文化大革 命结束前,教育学、心理学学科的发展,也处于相对停滞状态。当时国外先进的教育学、分科教学法与心理学 教育理论也不可能正确引进。这是中学语文教学法理论薄弱的客观原因。
经过十几年的辛勤耕耘,中学语文教学法的理论研究取得了前无古人的进步。仅就教材建设而言,就有50 部左右之多。相对改革开放前30年无一部教材的历史,这一进步是惊人的。这一学科的进步不只在于数量,其 理论基础构架也初具规模。纵观50部左右的教材内容,不难发现诸多的论述不仅摆脱了“教材教法”时期只能 对语文教学做现象描述的稚嫩,而且对诸多的根本问题做出了相当的理论阐释。诸如:对语文学科性质、目的 、任务的探讨;对读、写、听、说能力结构与教学心理的研究;对语文教学活动中智力的开发与非智力因素的 作用的论述;以及关于语文学习的考核、课外语文活动的组织、语文教学现代化、中学语文教师的修养与工作 等等;近些年来关于语文教育史的研究、语文教育比较研究也已经有了相当的基础。应当说,教学法的理论研 究不仅跟上了十几年语文教学的改革实践,有些方面的理论研究亦能超前指导语文教学了。中学语文教学法已 跨越“中学语文教材研究()”、“中学语文教学法”的研究阶段,而开始跃进到“语文教育学”研究的 新的高度。随着中学语文教学法理论研究的逐步深入,人们认识到“教材教法”、“教学法”研究的重点是语 文教学的内容、过程、方法以及相关的理论而与之密切相关的语文教育心理研究、学习心理研究、语文教育中 的德育智育美育的研究、语文教育史、教育见习实习等更广泛的内容则是中学语文教学法这一名称无法涵盖的 ,尽管人们对教学法中的“法”做了外延扩大的解释,认为“法”可指“法则”、“原理”,也已经显得捉襟 见肘不能自圆其说了。显然,中学语文教学法在理论研究上有了更上一层楼的客观要求。于是发展学科教育学 的问题引起了语文教学法工作者的普遍注意。语文教育学的研究,标志着中学语文教学法的理论研究有了突破 性的进展。尽管当前关于语文教育学的提法尚有不同意见,但从已经出版的《语文教育学》专著来看,无论从 内容上还是从效果方面看。都有了相当广泛和深刻的影响。此外,由于对中学语文教育研究的逐步深入,语文 教学法学科又逐步孕育了自己学科的分支,诸如关于阅读学、文章学、板书学、语文教育风格流派学的研究。 这里不打算展望学科发展的未来。在展开说明中学语文教学法学科,十几年在理论研究方面,取得日新月异发 展变化的同时,却又突出了另一方面的问题,即先前理论贫乏的中学语文教学法学科,经过十几年的研究探索 之后,在理论研究有了相当深入发展之后,做为本学科不可分割的另一部分——“应用”方面,是否也得到了 同步的发展呢?回答是否定的。作为“应用理论”学科的中学语文教学法,在“给高师中文系学生指出一条从 事中学语文教学工作的途径和方法”的目标,却被严重地忽视了。语文教学法研究中的“理论”研究与“应用 ”研究失去了平衡。
二
改革开放以来,教学法学科用了极大的努力研究探索基础理论,并在十多年时间内取得了空前的发展以满 足教学需要,这一成就是应当充分肯定的。任何一门学科,如果基础理论薄弱,若想充分得到发展,几乎都是 不可能的。我们说中学语文教学法理论建设取得了可喜的成就,决不意味着这一学科的理论建设已经取得了完 全令人满意的发展。随着对读、写、听、说诸项能力理论研究的深入;随着对智力、非智力等思维科学的移植 与消化;随着大语文教育观的深入研究,中学语文教学法工作者已经清晰地意识到,本学科理论研究的各项成 果,依然是阶段性的。我们说教学法研究失去了平衡,是从学科整体建设角度说的。即本学科的理论建设与应 用实践研究的关系失去了均衡。或者说,回顾改革开放以来本学科发展变化的历史发现:在理论研究方面取得 了重大突破的同时,却忽略了本学科在语文教学的应用方面,在培养训练学生掌握与形成语文教学技能方面, 远远落后于学科的理论研究,落后于社会发展的需要了。如果说结束时期,中学语文教学法的理论研 究空白是突出的问题,今天与日渐雄厚的理论研究相比,教学法在应用方面的研究,在对学生语文教育技能训 练方面的研究也出现了空白——中学语文教学法的理论有脱离实际的危险!之所以这样认为的理由如下:
首先,从学科自身理论研究和实践应用相比较来说,其实践应用的职业技能训练明显薄弱。以教材中阅读 教学部分为例,理论比十几年前的“教材教法”时期,明显地系统了、深化了。论述了什么是阅读与阅读教学 、阅读的价值与意义、阅读教学的目标、阅读能力的结构、阅读教学的过程、阅读教学过程的历史变迁等等, 均属于理论研究。阅读教学的内容与方法则属于实践应用范畴,其间介绍了教学导语、背景介绍以及字、词、 句、章等基础知识教学,归纳了改革开放以来有影响的语文教学模式。比起“教材教法”时期,该部分除了几 种新课型的介绍外,几乎没什么变动。所不同的是,先前“教材教法”时期的教学,教学的理论,而在对提高学生进行阅读教学的职业技能训练方面却蜻 蜓点水一带而过。相比之下,理论认识加深加厚了,应用能力训练没能落到实处。比如对“六步教学法”、“ 三主四式语文导读法”、“问题教学法”等有影响的教学模式,虽然简单描述了它们的教学过程。但究竟如何 开展教学却不甚明了,缺乏可操作的训练,结果也只能做为常识死记硬背。
其次,从教学效果看。“教材”时期尽管理论水平低下,但由于重视教学技能训练,学生在实习期间 凭课堂上训练的“三招两式”。教学中并不感到有太大的压力。毕业后亦能初步适应教学。尽管由于理论水平 的低下常常影响其后来的发展。但应付当时的教学还是可以的。现在,不少高师中文系毕业生,尽管其语文教 育的理论水平比先前大有提高,但由于教学技能训练不足,不仅实习期间遇到的困难大,毕业之后常常眼高手 低,由于如今竞争激烈的语文教学对语文教师的水平要求越来越高
粗集方法在KDD系统中的应用与研究_工科论文 第五篇
粗集方法在KDD系统中的应用与研究<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
周波
(西安电子科技大学多媒体研究所 西安 710086)
本文论述了粗集方法性质及特点,提出了粗集方法在KDD系统中的应用模型,同时给出了应用这一模型对一个数据库实例进行数据挖掘的过程。另外,从精确性、鲁棒性等方面对KDD系统中的粗集方法的适用范围进行了。
【关键词】粗集 KDD 数据挖掘
Application and Research of Rough Set in KDD System
Zhou bo
(Multimedia Technology Institute ,xidian University xi’an710086)
Abstract: In this paper, we discuss the character of rough set, and put forward the application model of rough set in KDD system. Also, by an example ,the advantage and disadvantage of rough set in KDD system is ysed in detail.
Key Word: Rough Set KDD Data Mining
1.前 言
数据库中的知识发现技术(Knowledge Discovery in Database, KDD)是随着数据库和人工智能的发展而产生的,它是“从大量数据中提取出可信的、新颖的、有效的并能被人理解的模式的非平凡过程”。通过KDD,人们可以将知识发现的研究成果应用于实际数据处理中,为科学决策提供支持。KDD系统中的知识学习阶段被称为“数据挖掘”(Data Mining,DM),它的算法是KDD系统的核心。近年来,粗集理论(Rough Set Theory)开始逐渐应用到DM的领域中,在对大型数据库中不完整数据进行和学习方面取得了显著的效果,因此,以粗集为代表的集合论方法是今后KDD技术的一个主要研究方向。
2. KDD系统中粗集方法的基本特征
粗集(Rough Set)理论和模糊集(Fuzzy Set)理论都是针对不确定性问题提出的,它们既相互,又相互补充。粗集方法与传统的统计及模糊集方法不同的是:后者需要依赖先验知识对不确定性的定量描述,如统计中的先验概率、模糊集理论中的模糊度等等;而前者只依赖数据内部的知识,用数据之间的近似来表示知识的不确定性。用粗集来处理不确定性问题的最大优点在于,它不需要关于数据的预先或附加的信息,而且容易掌握和使用。粗集中不精确的要领包含下近似和上近似两个定义,前者指的是所有对象都一定被包含,后者指的是所有对象可能被包含。
粗集的一些理论和方法可用来从数据库中发现分类规则。其基本思想是,将数据库中的属性分为条件属性和结论属性,对数据库中的元组根据各个属性不同的属性值分成相应的子集,然后对条件属性划分的子集与结论属性划分的子集之间的上下近似关系生成判定规则。
粗集理论中的信息系统可用一个四元组来表示:S={R,A,V,f}。其中R是一个非空集合,表示数据库中的所有记录(Record);A表示数据库中的全部属性(Attribute);V是属性值组成的集合;f是属性和记录的函数,f(a,e)的值确定记录e关于属性a的取值。对于属性集 数字悬浮控制系统中的降噪方法及实现_工科论文 第六篇 摘要:为抑制电磁噪声对悬浮控制系统的影响,介绍了一种通过避开噪声持续时间进行A/D采样的方法,详细讨论了该方法的原理与实现。实践表明,它能有效地防止噪声引入控制系统,提高系统的性能 关键词:悬浮控制 降噪 A/D采样 FPGA 在磁浮列车的工程实践中,电磁噪声的存在明显降低了悬浮控制系统的性能,导致列车转向架振动,同时电磁铁因为电流变化迅速会产生很大的噪声,因而必须采取措施减小噪声的影响。但是,一般的滤波器设计并不能很好地解决问题。本文在传感器中噪声特性的基础上,提出了通过避开主要噪声持续时间进行A/D采样的方法。实验证明了该方法的有效性和实用性。 1 系统组成 悬浮控制系统由DSP、FPGA、A/D转换器、传感器、功率斩波器和电磁铁等单元组成。控制的目的是保持电磁铁与轨道之间的距离恒定,为磁浮列车提供稳定的支撑。系统结构见图1。其中A/D转换器采用MAxIM公司的MAx125,它是一种带同步锁存的14位4输入A/D转换芯片,4路同时工作时最高采亲友速率为76ksps,用于采样传感器的输出。DSP采用ADI公司的ADSP2181,用于控制算法的计算。FPGA采用ALTERA公司的EPF6016,用于产生PWM波和实现一些辅助功能。传感器包括间隙传感器和电流传感器。功能驱动彩IGBT组成的半H桥网络,如图2所示。功率管T1、T2由PWM波形驱动。PWM波为高电平时导通,低电平时关断,功率管关断时通过功率二极管D1、D2续流。图中的A是吸引网络,防止反冲电压过高损坏器件。该电路的特点是:当一个周期内T1、T2导通时间小于50%时,电磁铁上电流为0。 2 降噪算法原理 在悬浮控制系统中,噪声具有其自身的显著特片。观察间隙、电流等传感器的输出可以看到,除了幅值不大的白噪声外,主要是与斩波器PWM频率相关的脉冲噪声。图3是试验中示波器测量到的波形,其中2通道显示的FPGA输出的PWM驱动波形,1通道显示的是间隙传感器的输出波形。从该图可以看出二者之间的对应关系:传感器输出上的噪声在每个PWM周期内出现两次,分别在PWM电平翻转(低-高,高-低)1μs之后开始出现,时间大约持续3μs. 该噪声是由功率管开关动作引起的,幅值很大是影响悬浮性能的主要噪声。它并不是白噪声,在时域上它是具有很大能量和一定宽度的脉冲,一旦被采样到,就会对控制性能产生较大影响,甚至会导致系统失控;在频域上,它的频谱分布在从低频到高频的较大范围内,一般的滤波方法对其无能为力。 通常采用多次采样取中间值的办法来消除强噪声的影响。这种方法在克服噪声方面是有效的,但存在两个缺点:(1)采集所需时间长,影响总的计算时间;(2)得出的序列不是等间隔的,无法对进行差分运算。这些缺点直接影响了控制器的设计,因而必须寻找新的解决途径。 如前所述,悬浮控制系统中强噪声出现的时刻与PWM波驱动密切相关。下面FPGA中PWM波的产生机理。FPGA中设置了两个计数器,计数器1(TM1)产生固定频率的脉冲,即PWM波的频率,系统中是20kHz;计数器2(TM2)的计数值由DSP写入,对应PWM波的高电平宽度,即控制量。参照图4,当TM1计满时会同时触发下列动作:(1)PWM波的输出翻转为高电平,驱动IGBT;(2)启动TM1从0开始计数;(3)启动TM2从0开始计数。而当TM2计满后,会触发PWM波的输出翻转为低电平,关断IGBT。 从图4中可以看出两点:(2)对应TM1的计满脉冲P11、P12...的噪声是周期性的,且与PWM周期相同;(2)对应TM2的计满脉冲P21、P22...的噪声也是每个PWM周期出现一次,但由于TM2每次计数的值不同,噪声不是周期性的。 基于以上,本文提出了如下A/D要样算法: (1)在每个PWM周期内对进行一次A/D采样。 (2)在FPGA内设置第三个计数器TM3。 (3)当TM1的计满脉冲到来时,启动TM3从0开始计数。 (4)TM3的计数值设为5μs,用它的计满脉冲去启动A/D转换。 (5)A/D芯片完成转换后,通过中断通知DSP读取数据。 该算法的优点是: (1)每个PWM周期采样一次,则采样频率为20kHz。而磁悬浮控制系统的频带比较窄,ff system<< fsample成立,可见这样的采样频率充分满足控制的要求。 (2)PWM波的上升是周期性的,因而A/D芯片启动转换的时间也是周期性的,采样到的数据是等间隔的。 (3)A/D芯片MAx125有锁存功能,锁存模拟大约需要1μs,在算法中,锁存动作在PWM上升沿后的第5μs开始,第6μs结束。从图3可以看出,这个时间段内模拟上的强噪声已经消失,不会被采样到。这就是算法的核心思想——避开强噪声再进行采样。 那么,会不会出现由于PWM的有效电平持续时间过短,导致A/D采样到IGBT关断动作产生的强噪声呢?存在这种可能。但这可以通过在控制算法中采取措施避免。当PWM波的高电平占空比小于50%的时候,电磁铁上没有电流。因此可以在控制算法中设定一个PWM波高电平占空比的下限,这里取30%。这样丝亮不会影响控制结果。PWM频率为20kHz,则每个PWM周期最少输出15μs的高电平。而A/D芯片在PWM波翻转成高电平后的第5μs到第6μs之间进行获取,完全避开了IGBT关断动作的影响。 3 算法实现 在FPGA中设置一个定时器,设置计数周期为5μs。当PWM电平由低到高翻转时,启动计数器开始计数。计满5μs以后启动A/D转换。A/D转换完成以后通过中断通知DSP读取A/D转换的结果。具体设计见图5。 图5 FPGA电路逻辑说明: 输入为pwm、data、wr_addr1、clk_20m,输出为ad_start。其中pwm为频率20kHz的PWM波,data[7..0]是dsp的低位数据总线,初始化的时候通过它向寄存器写入数值0x64(即十进制的100,1s 20Mх100=5μs),wr_addr1是写出地址,clk_20m是频率为20MHz的时钟。输出ad_start用于启动A/D转换。 在一个PWM周期到来的时候,依次产生以下动作:(1)pwm由低变高,触发D触发器,使能计数器,开始计数。(2)当计数器计到100时,它的输出q[]全部变为0,从而触发与其相连的D触发器,Q输出变为0。(3)下一个clk_20m的时钟将该触发器的Q输出恢复成1。这样就在ad_start线上形成了一个脉冲,用于启动A/D转换。(4)与此同时,Q变使得与cnt_en相连的D触发器输出1,禁止计数器计数,直到下一次pwm波形变高。 本文所讨论的降噪算法及其硬件实现在磁浮列车单转向架上进行了试验。通过对比可以看出,采用降噪算法以后悬浮系统的振动明显降低,噪声也减小到能够承受的范围。以上通过系统中的噪声特性,设计了一种通过避开主要噪声持续时间进行采样的降噪算法,并通过FPGA进行了实现。通过实验,证明该方法明显降低了噪声对系统的影响。通过实验,证明该方法明显降低了噪声对系统的影响,提高了控制性能。该方法适用于采用半桥驱动拓扑结构一类的功率放大电路。
CNC系统巨量NC程序解释实现的方法_工科论文 第七篇
熊清平 张正勇 李作清
在数控加工中,对于复杂零件的加工,如水轮机叶片,用CAD/CAM生成的基于微小直线段的NC程序能达到几兆。对于这些程序量非常大的NC程序,称之为巨量NC程序。
对于专用体系结构的CNC系统,NC程序存储空间有限,在解释巨量NC程序时,一般采用RS-232通讯接口,边传送边加工,加工复杂零件较不便,同时也增加了数控加工系统的成本,降低了数控加工的可靠性。对于基于工业PC平台的CNC系统,只有640k的基本内存,由于操作系统和CNC系统控制软件占用一定的内存空间,当要解释运行巨量NC程序时,一般将巨量NC程序分成多个程序块,系统根据每块程序大小进行内存分配,如分配不合理,则需重新分块,这给操作带来不便。华中Ⅰ型CNC系统以工业PC为平台,对于巨量程序的加工,通过使用系统的扩展内存实现巨量NC程序的解释,同时要兼容处理类似高级语言BASIC编写的NC程序。根据用户的加工程序的最大需要,来配置系统的扩展内存。系统使用扩展内存,充分利用PC的软件资源,使用扩展内存设备管理程序EMM386.ExE,用DOS的67H号中断对高端内存的物理页的读写,完成对扩展内存的逻辑页操作[1]。CNC系统运行前,需在CONFIG.SYS文件中装载:
DEVICE=C:\HIMEM.SYS
DEVICE=C:\EMM386.ExE
1 NC程序的装载
在NC程序装入之前,检测程序检测有多大的扩展内存,能运行多大的NC程序,根据所要求加工的NC程序判断能否装载。
无论是手工编制的NC程序还是巨量NC程序,运行时统一采用扩展内存进行装载。为了使用系统的扩展内存,需调用DOS的67H中断的多项子功能。首先申请一个包含一定逻辑页数的句柄,然后把这些扩展内存清空,清空后再把NC程序调入扩展内存,这样所要加工的NC程序的大小与系统的基本内存无关,只与系统的扩展内存有关。只要CNC系统的扩展内存满足就能把NC程序装入并投入运行。NC程序首先装入高端内存的物理页,再通过物理页和逻辑页的映射关系,把NC程序装入扩展内存逻辑页。程序开始运行以后,可以根据提示的剩余的内存选择所要编辑的程序。
2 巨量NC程序的解释
程序装入扩展内存的逻辑页后,对程序的解释操作在高端内存的物理页中进行,这时要把扩展内存逻辑页的内容分页映射到高端内存的物理页,再对物理页中的NC程序进行解释。对高端内存的物理页进行操作,必须不断地考虑程序指针的变换中所涉及的逻辑页的转换以及程序指针的逻辑页数是否超过这个句柄所拥有的总的逻辑页数等问题[2]。这就要求在程序指针变换时记录下程序指针所对应的扩展内存上的逻辑页中的逻辑位置,称为程序逻辑指针。把程序指针在高端内存物理页中的实际物理位置称作程序实际指针。程序逻辑指针在扩展内存中从逻辑低地址移向逻辑高地址,程序实际指针只是在物理页中往复地从头至尾地移动,直到所有的程序行解释执行完毕。程序逻辑指针和程序实际指针有一种对应关系,设计一个结构体来代替基于系统S基本内存的程序解释器的程序指针,用来记录程序的逻辑位置。
struct Page ProgPtr{
charhugeProgPtr;.∥物理页中程序实际指针
int NumOfCurPage;∥当前的逻辑页
int PagenumOfHandle;∥句柄所拥有的逻辑页数
unsigned int Handle;∥当前程序句柄}
在具体的解释器实现中要考虑到程序实际指针和程序逻辑指针处于页首和页末的情况。当程序实际指针和程序逻辑指针在页首时,程序逻辑指针的下个位置可能在前一逻辑页末尾,程序实际指针可能要退到物理页的末尾。而当程序实际指针和程序逻辑指针在页末时,程序逻辑指针的下个位置可能在后一逻辑页首,程序实际指针可能从物理页的页尾移到物理页的页首。针对这2种情况进行处理,设计了2个处理函数:
struct PageProgPtr TreatOfFrameEnd(struct PageProgPtr);
struct PageProgPtr TreatOfFrameStart(struct PageProgPtr);
通过这种处理保证程序实际指针在物理页中和程序逻辑指针在扩展内存的逻辑页中的准确性。
由于在程序解释时程序实际指针只在物理页中来回变化,而程序逻辑指针在扩展内存的逻辑页中移动,在解释器的设计中必须把程序实际指针和程序逻辑指针结合在一起考虑。解释器通过解释高端内存中物理页的内容来完成扩展内存的NC程序的解释任务。
解释器解释NC程序所得到的数据送到一个环形缓冲队列中,当填满缓冲队列后,解释任务就停止。当插补器从解释器中取走数据,使缓形队列中有空单元时,通过任务调度把解释器再次激活,这样解释器和插补器就能协调工作。
3 关于巨量NC程序和类似高级语言BASIC编写的NC程序兼容处理
在一般NC代码解释器中,只能进行ISO代码的NC程序解释,而对于带有高级语言特性的一些NC语句如DO—WHILE语句、IF语句、GOTO语句等和宏变量不支持。对于带有高级语言特性的NC语句的解释有2种方法:第1种方法是做2个解释器分别对ISO代码的NC程序和类似高级语言编写的NC程序进行解释;第2种方法是做1个兼容的通用解释器,它对2种程序都能处理。第1种方法思路简单,解释器编程容易,由于ISO代码的NC程序和类似高级语言编写的NC程序只能分别编写,NC程序的处理能力不强;第2种方法解释器编程较难,但程序的解释功能较强,在ISO代码的程序中可以带有一些高级语言特性的语句如DO—WHILE语句,这样用户所编写的NC程序的处理功能可以很强。
在华中Ⅰ型CNC系统的解释器中,采用的是第2种方法,进行巨量NC程序和类似高级语言编写的NC程序进行兼容处理,保证在巨量NC程序中也能加入一些高级语言的特性,这就要进行类似高级语言的表达式计算、子程序的调用和程序跳转等高级语言处理过程。
在基于基本内存的NC程序解释器中,对于类似高级语言BASIC编写的NC程序的子程序标号和跳转标号的处理一般先通过扫描整个程序而形成子程序表和标号表,再每次遇到NC调用子程序或执行跳转程序时,通过查表来找到子程序的地址或跳转的目的地址。这样不仅浪费内存,而且影响解释任务的执行速度。如果NC标号非常多,就会占用较多的基本内存,而且解释程序的速度非常慢,特别是CAD/CAM所生成的巨量NC程序,基本上每行都有N标号,更容易出现这样的问题。由于使用扩展内存不仅要对一般的手工编制的较短NC程序进行处理,而且要对巨量NC程序进行处理,采用直接寻址,每次遇到子程序和跳转程序指令时,通过比较标号,找到目的地址执行,这样既节省系统的基本内存,又提高系统的处理速度和CNC运行的稳定性。通过2个函数来解决这个问题:
struct PageProgPtr Find_Nlabel(struct PageProgPtr);
struct PageProgPtr Find_Ocode(struct PageProgPtr);
4 扩展内存的资源竞争问题
为了节约基本内存,要编辑的程序也装入扩展内存,这也通过一个句柄进行操作。在程序的编辑时,所要编辑的程序从扩展内存的逻辑页轮流装入高端内存的物理页,所有程序的编辑都在高端内存进行,从而保证在程序编辑过程不占用基本内存。
由于所编辑程序和运行的程序都是通过高端内存对扩展内存进行操作,存在资源竞争的问题。在系统中,扩展内存都是通过句柄进行操作的,通过EMM386.ExE文件对扩展内存的逻辑页进行管理,只要能申请到相应扩展内存的句柄,就能保证扩展内存的逻辑页使用不发生冲突。在高端内存中,总共有每页16k的4页物理页,把这些物理页进行分配,程序解释运行使用第1页,而程序编辑使用第2页,由于EMM386.ExE程序本身能保证67H中断的重入问题,通过这样内存的分配方式,解决了扩展内存资源竞争问题[3]。
5 结束语
笔者利用系统的扩展内存实现了在CNC系统中解释巨量NC程序。基于系统扩展内存所做的NC解释器和编辑器使运行程序和编辑程序的大小与基本内存无关,而只与扩展内存有关。计算机可配置的扩展内存越来越大,现已能达到256M,而现阶段8M的扩展内存已能满足一般巨量NC程序运行和编辑的要求,这给更复杂零件加工程序一次装载解释运行提供更大的方便。同时,在多通道的CNC系统软件中,由于每增加一个通道大约要增加到最大20k到30k的内存开销,解释器和编辑器利用扩展内存也能让多通道CNC系统增加更多的通道数,控制更多的过程,这对FMS、CIMS的实现也有一定的意义。采用该方法所设计的NC代码解释器,已运用到华中Ⅰ型数控系统上。
参考文献
[1] 黄山,万玉丹.DOS的全部剖析与编程启示.:学苑出版社,1993:85~87
[2] [美]TerryDettmann著,熊桂喜,陆益民,黎军英等译.DOS程序员参考手册.:清华大学出版社,1996:158~162
[3] 熊清平,孙联胜,刘延巍.CNC实时多任务操作系统.机械与电子,1997(3):20~22
colspan="2" align='right' class="Article_tdbgall">
论提单法律适用的一般原则_法律论文 第八篇
龚婕
提单是海上货物运输中由承运人签发给托运人的一张单据。它在远洋运输和国际贸易中都发挥着重要作用,同时也是海商法学术界中争议最多的一个法律概念。围绕提单可能发生的纠纷主要涉及提单的债权关系、提单的物权关系以及提单法律行为的效力等。
我们通常所说的提单的准据法多指的是提单的债权关系的准据法,这是由于现实中关于提单的纠纷多集中在提单的债权关系方面,此外,关于提单的公约以及不少国家关于提单的立法多集中在提单的债权制度方面。同一般债权合同准据法的效力范围一样,提单债权关系的准据法的效力范围应该包括:债权的成立、效力、当事人的权利与义务以及债权合同的履行、违约责任、时效等等。至于提单的其他方面是否也适用同样的准据法是值得探讨的。
关于提单物权关系的准据法,在国际私法上向来也有两种不同见解。一种为“分离说”,即认为提单的物权关系和债权关系应适用不同的准据法,提单的物权关系应依“物之所在地法”决定。另一种为“统一说”,即认为若将提单法律关系分割为二,各有不同的准据法,适用上非常不便。提单的物权关系依从于债权关系而存在,因此其准据法应和债权法律的准据法相同。就实务而言,采用“统一说”比“分离说”方便;但从理论上而言,提单的物权关系和债权关系是分别的两种法律关系,认为二者之间有从属关系并无依据。如果采用“分离说”,国际私法上最常用的原则是“物权依物之所在地法”,但运输途中的物是移动的,在发生某种物权法律关系时,很难确定货物正通过哪个国家,即使能确定,这种关联完全是偶然发生的,是有关当事人无法预料的,因此也是不尽合理的。所以有学者认为由于运输途中的货物终极目的地是送达地,对在途货物进行处分行为,一般也要等到运输终了,才会发生实际后果,以交货地法确定运输途中货物物权关系的准据法较为合理。 笔者基本上同意“分离说”的理论,但运输终了未必是交货地。所以仍应以“物之所在地法”为原则,在物权行为发生地无法确认时,可以根据实际情况再以“交货地”、“货物扣押地”等为连接点确定货物物权关系的准据法。
提单的法律行为主要包括提单的签发、转让和注销。各国法律对此规定也是有所不同的。在提单的签发上,有的国家法律规定法人的签名可用盖章来代替,有的国家法律规定法人签名必须是法人代表手签;在提单的转让上,我国法律规定“记名提单:不得转让”,但日本、韩国和我国的法律均规定,记名提单可以背书转让。这样提单的法律行为是否有效有赖于地法对提单行为准据法的选择。按照传统的国际私法的“场所支配行为”原则,法律行为的效力适用行为地法。晚近发展的国际私法摒弃了那种固定的连接方式,而是采用了多种连接因素,以更为灵活、弹性的方法,来确定法律行为的准据法。如1946年《希腊民法典》第11条就规定:“法律行为的方式如果符合决定行为内容的法律,或者符合行为地法,或者符合全体当事人的本国法,皆认为有效”。同样,提单法律关系中的有关当事人在签发、转让提单时当然也是希望其行为在任何国家都是有效的,此外提单的流动性很强,其效力在整个国际贸易中的作用是至关重要的,因此对提单的法律行为的效力的法律适用也要尽可能采用积极、灵活的方式。比如可以采用选择式的冲突规范,规定:“提单法律行为的方式如果符合提单债权法律关系的准据法,或者符合提单行为地法,或者符合任何一方当事人的本国法,或者符合地法,皆认为有效”。
从上面的中,我们可以得知提单债权关系的准据法一般并不适用于提单物权关系和提单的法律行为的效力。这是我们在解决提单纠纷案件时应该注意的问题。在以下讨论的提单法律适用原则及其序列仅指的是提单债权关系的法律适用。因为几乎所有国际商事合同的法律适用原则都能适用于提单的债权关系,同时由于提单的特殊性,又使得这些原则在适用提单债权关系时又有独特的表现。而提单的物权关系和提单法律行为效力的法律适用相对而言就比较简单,本文就不再作展开论述了。因此在下面的讨论中,笔者所言及的提单的法律适用和准据法实际上指的是提单债权关系的法律适用和准据法。
在解决提单法律适用问题时,通常会提及某些“原则”,但提单法律适用究竟有多少原则应该遵循,它们适用的先后序列又如何,这方面的探讨并不多见。虽然每个国家或是不同的有关提单的国际公约的缔约国,或不是任何有关提单的国际公约的缔约国,同时他们的国内法律规定的国际私法规范也不同,不是什么原则都能适用。但各国在采纳提单法律适用的原则上还是遵循了一定的规律。本文拟探讨大多数国家都能适用的提单法律适用原则的序列以及这些原则的具体适用。
一、内国强制性规则最为优先原则
一般海上货物运输的国际公约和国内涉外法律都会有专门的条款规定本法的适用范围,如波兰海商法规定,本法是调整有关海上运输关系的法律;我国《海商法》第二条也相应规定了本法的适用范围。但这些条款都不是国际私法意义上的法律适用条款,也即它并没有规定那些案件必须适用本法。但也有国家直接在本国海上货物运输的法律中用单边冲突规范的形式规定了法律适用规范,其中主要是由于某些参加国际公约的国家,为使公约生效,将公约的内容列入各自的国内立法,在二次立法的过程中,往往根据本国的具体情况,对其法律的适用范围作出不同于公约规则本身规定的法律适用范围的强制性规定。
如澳大利亚1991年COGSA第11条规定:“提单或类似所有权凭证的当事人,凡与从澳大利亚任何地点向澳大利亚以外的任何地点运输货物有关的,……均被视为是有意按照起运地的现行法律订立合同的。”因此,从澳大利亚出口的提单和其它单据,只能适用该国法律,从而排除当事人选择适用其它外国法律或国际公约。英国1924年COGSA第1条亦规定,除本法另有规定的外,以英国港口为航次起运港的所有出口提单均适用该法。英国1971年海上运输法亦相应地把原来只管辖与适用出口签发的提单的条款改为也适用进口。 最典型的是美国1999年的COGSA(Carriage of Goods by Sea Act ),该法明确规定,对外贸易中作为进出美国港口的海上货物运输合同的证据---提单或其它权利单据受本法的约束。 关于其强制性,通过这样一个事实就可见,即世界各国的许多班轮公司在其经营美国航线的班轮运输的格式提单上专门列有地区条款(Local Clause),规定对于运自美国的货物,提单的条款受美国的COGSA约束。中远的提单也不例外,其背面条款第27条就是Local Clause 。当然,美国COGSA 的这个强制性法律适用规定,只在其本国发生诉讼时具有强制性,因为它毕竟是一国的国内法,班轮公司之所以要制定这样的地区条款,是为了使进出美国港口的海上货物运输纠纷案件即使不在美国行诉,也能用同样的法律解决提单的纠纷,因为其它国家不一定有这样的强制性法律适用规范,而可能遵循意思自治原则,因此可保证这类业务所引起的纠纷在法律适用上的一致性。除美国外,这类国家还有比利时、利比里亚、菲律宾等。在这些国家,只要外贸货物运输是进出其国内港口的,提单就须适用其国内法化的海牙规则,而不论提单签发地是否在缔约国。
因此这类国家在审理以上所言及的法律所规定的某些案件时,是直接适用这些法律适用规范所指向的国内法,一般是排除当事人的选择和其它法律适用原则的,因此具有强制性,这也是本文将这类规范命名为强制性法律适用规范的原因。
这些强制性法律适用规范所指向的法律被称为“强制性规则”,当事人是不能通过任何手段排除其适用的,对于某些案件,内国的国家将直接适用“强制性规则”,而不考虑当事人的法律选择。因此“强制性规则”在法国等国家通常又被称作“直接适用的法律”
此外,这类国家在依据所缔结或加入的国际公约制定内国法时,同时也是在履行公约所规定的义务,因此制定这些强制性法律适用规范,并没有违反公约的规定,只是在一定程度上扩大了国际公约的适用范围。
二、缔约国的优先适用国际公约原则
关于提单的三个公约均是实体法性质的国际公约,公约既然是国家制定的,按照“合约必须遵守”(pacta sunt servanda)的原则,缔约国负有必须实施其所缔结的国际公约的责任。缔约国在其域内实施其所缔结的统一实体法公约,在许多情况下都意味着缔约国的必须对于符合条件的案件适用该国际公约。但是也有例外,某些国际公约规定合同当事人可以全部或部分排除该公约的适用,如1980年《国际货物销售合同公约》中有这样的规定。但有关提单的三个公约没有“当事人意思自治”的条款,在法律效力上,属于强制性的国际统一实体法规范, 缔约国的有义务对符合公约适用条件的案件优先适用公约,也即这种情况下,缔约国的是排除当事人选择的其它法律的。1983年的“Morviken”一案就是如此,在该案中,货物是装在一艘荷兰的货船上,自苏格兰的一个港口起运,提单上是注明适用荷兰的法律,并且阿姆斯特丹的有管辖权。但本案的货方在英国提起诉讼,英国是《海牙—维斯比规则》的缔约国,而且本案符合该公约的适用条件,(货物从一缔约国起运,提单也是在一缔约国签发)。本案若适用荷兰的法律(荷兰当时还没参加《海牙—维斯比规则》,适用的是1924年的《海牙规则》),则降低了承运人的责任。因此本案以该理由驳回了承运人主张中止诉讼的请求。结果,承运人依《海牙—维斯比规则》进行了赔偿。
但这项原则的适用仍是有例外的,《海牙规则》 和《海牙—维斯比规则》 的第五条都规定:“承运人可以自由地全部或部分放弃本规则各条中规定的全部权利或豁免,或其中任何部分,或增加其所应承担的任何责任与义务。但是这种放弃和增加,需在发给托运人的提单上注明。”众所周知,就承运人的责任和义务而言,《海牙—维斯比规则》 比《海牙规则》重;《汉堡规则》 比《海牙—维斯比规则》 重。因此对于本应适用《海牙规则》 的提单,当事人同意《海牙—维斯比规则》
论侵权行为一般化和类型化及其我国侵权行为法立法模式选择_法律论文 第九篇
特别推荐
【关 键 词】侵权行为法/侵权行为/侵权行为一般化/侵权行为类型化/立法模式
我国在制定侵权行为法的过程中,争论的焦点问题之一就是究竟是借鉴大陆法系的立 法特点来制定中国侵权行为法,还是借鉴英美法系的侵权法特点来制定。这个问题的实 质在于,在制定中国侵权行为法的立法模式上,是坚持侵权行为一般化的立法模式(即 大陆法系侵权行为法的立法模式),还是采用侵权行为类型化的立法模式(即英美法系侵 权行为法的立法特点)。本文针对这个问题,提出中国侵权行为法的立法应采取融合大 陆法系和英美法系两种做法的模式,既坚持侵权行为的一般化,也实现侵权行为的类型 化,走侵权行为一般化和类型化相结合的立法道路。
一、侵权行为一般化
(一)侵权行为一般条款和一般侵权行为
在大陆法系国家的民事立法中,对侵权行为的规定采用的是一般化的立法模式。立法 在规定侵权行为的法律中,也就是在民法典的债法当中,专门规定侵权行为法内容。而 在侵权行为法的内容中,首先就要规定侵权行为一般条款,通过侵权行为的一般条款来 确定一般侵权行为。
这些侵权行为的一般条款的典型表现,就是《法国民法典》第1382条规定:“任何行 为使他人受到损害时,因自己的过错行为而致行为发生之人的该他人负赔偿的责任。” 以及《德国民法典》第823条:“(1)因故意或者过失不法侵害他人生命、身体、健康、 自由、所有权或者其他权利者,对他人因此而产生的损害负赔偿义务。(2)违反以保护 他人为目的的法律者,负相同的义务。如果根据法律的内容并无过失也可能违反此种法 律的,仅在有过失的情况下,始负赔偿义务。”我国地区民法典也是采用这种立法 方式,例如第184条:“因故意或过失,不法侵害他利者,负损害赔偿责任。故意 以背于善良风俗之方法,加损害于他人者,亦同。”“违反保护他人之法律,致生损害 于他人,负赔偿责任。但能证明其行为无过失者,不在此限。”这些立法的基本做法就 是规定侵权行为一般条款,通过对侵权行为的一般化来实现对绝大多数侵权行为法律关 系的调整。
什么叫做侵权行为的一般条款?学者有不同的理解。
有的学者认为,侵权行为一般条款就是在成文法中居于核心地位,成为一切侵权行为 请求权的请求基础之基础的法律规范。所有的基于侵权行为的请求权都要符合这一条文 ,也就是说,它是一个国家民法典调整的侵权行为的全部请求权的基础。在这个条文之 外,不存在另外任何侵权行为请求权的基础,这个条文一统天下(注:张新宝.侵权行为 法的一般条款.中国大学民商事法律科学研究中心民商法前沿系列讲座第22讲.) 。另一种意见将侵权行为一般条款理解为所有侵权行为的全面概括,将侵权行为一般条 款做了扩大解释。侵权行为一般条款就是规定一般侵权行为的条款。正像德国侵权行为 法专家克雷斯蒂安·冯·巴尔所说:在所有西欧国家的民法典中,尽管调整侵权行为的 一般规则有时是由几个部分构成的,但是侵权行为都是由一个一般规则调整的。作为主 要的和终极的规定,它涵盖了侵权行为的主要理论问题,以及绝大部分与侵权行为法有 关的实际案件。除了一个例外以外,这些基本规则都限于对自己个人的不当行为之责任 ,而对自己不当行为的责任又取决于造成损害的人的过错(注:[德]克雷斯蒂马·冯· 巴尔.张新宝译,欧洲比较侵权行为法[M].:法律出版社,20xx.16.)。德国学者的 这一解释是较为准确的。
这两种意见的分歧在于,前者认为侵权行为一般条款规定的是全部的侵权行为,列为 公式,则为:侵权行为一般条款 = 全部侵权行为;而后者认为,侵权行为一般条款不 过是规定了一般侵权行为,是90%以上的被一般化了的一般侵权行为,而另外的不到10% 的侵权行为则由特殊侵权行为补充,列为公式,则为:一般侵权行为 + 特殊侵权行为 = 全部侵权行为。
一般说来,第一种主张也是有道理的。可以作为证明的就是《欧洲统一侵权行为法典 》的草案以及《埃塞俄比亚民法典》的做法。因为这两部法律(其中有一部是草案)就是 采用的这种意见规定的侵权行为一般条款,这个一般条款概括的是全部侵权行为。
但是,正像克雷斯蒂安·冯·巴尔教授所讲的那样,在现行成文法国家的侵权行为法 立法中,规定的一般条款主要是后一种主张。例如,提出侵权行为一般条款是概括全部 侵权行为请求权的依据之一,就是法国侵权行为法规定侵权行为的三个条文。这就是第 1382条、第1383条和第1384条。将这三个条文都作为侵权行为的一般条款,实际上是对 侵权行为一般条款的扩大化。《法国民法典》的侵权行为一般条款就是第1382条,第13 83条是对第1382条的补充,而第1384条则是对准侵权行为的概括性规定,统管以下的第 1385条和第1386条。因此,《法国民法典》的基本结构,就是前两条规定的是一般侵权 行为,后三条规定的是准侵权行为。将这两个部分放在一起,都称为侵权行为的一般条 款,并不准确。这一点可以从《法国民法典》规定侵权行为的这一章的章名体现出来。 这一章的章名是“侵权行为和准侵权行为”,其中一定是包括侵权行为一部分和准侵权 行为一部分。如果将这个法律规定侵权行为的前三个条文都认定为侵行为一般条款,那 么,岂不是没有了准侵权行为的地位了吗?
最典型的、最具有说服力的是我国民法的规定。我国民法第184条开宗明义, 就将其称为“一般侵权行为之责任”,确切表明这一条文仅仅是规定一般侵权行为的条 文,而不是规定所有的侵权行为的条文。从其内容上说,本条文的法律来源就是《德国 民法典》的第823条和第826条。这里规定的也就是一般侵权行为的三种形式,第一,是 故意或者过失,第二,违反保护他人的法律,第三,是故意违背善良风俗。在德国法中 ,前两种是第823条规定的内容,后一种是第826条规定的内容,没有概括进来无过失责 任,因而说,这一条文概括的是全部侵权行为请求权的基础的说法是不够准确的,因为 还没有规定无过失责任的侵权行为。我国民法将这三种形式都规定为一般侵权行为 ,足以证明在德国法,侵权行为一般条款就是规定的一般侵权行为。因此可以说,将侵 权行为一般条款理解为规定的是一般侵权行为,就绝大多数大陆法系国家的侵权行为立 法的状况而言,是准确的理解。
还可以作为佐证的是我国《大清民律草案》和《民律草案》关于侵权行为一般条 款的规定。在《大清民律草案》中,关于侵权行为一般条款的上述内容,规定在第945 条至947条三个条文中,基本内容都是一样的。即:第945条规定:“因故意或过失侵他 人之权利而不法者,于因加侵害而生之损害,负赔偿之责任。前项规定,于失火事件不 适用之。”第946条规定:“因故意或过失违反保护他人之法律者,视为前条之加害人 ”。第947条规定:“以背于善良风俗之方法,故意加损害于他人者,视为第945条之加 害人”。第946条规定的:“因故意或过失违反保护他人之法律者,视为前条之加害人 ”至《民律草案》,则规定了两个条文,即将《大清民律草案》的前两个条文合并 为一个条文。第246条规定:“因故意或过失不法侵害他人之权利者,负损害赔偿责任 。故意以有伤风化方法侵害他利者,亦同”。第247条规定:“因故意或过失违背 保护他人之法律者,视为前条之侵权行为人”(注:在正式立法时候,则将这三个 内容完整的规定在一个条文中,作为侵权行为一般化的一个统一的条文。)。从《大清 民律草案》到《民律草案》一直到我国民法关于侵权行为一般条款的上述变化 ,也证明了这三个条文到最后的一个条文,才是真正的侵权行为一般条款(注:杨立新. 大清民律草案、民律草案[Z].长春:吉林出版社,20xx.123-124.)。
所以,从一般意义上说,侵权行为的一般条款并不是关于概括所有的侵权行为请求权 的条款,而只是关于一般侵权行为的概括性条款。其含义是,侵权行为法的一般条款, 是指概括一般侵权行为的特点和构成要件的侵权行为法条款,它将一般侵权行为的基本 构成要件和基本特征进行概括,作为一般侵权行为请求权的基础的条款。因此,侵权行 为一般条款实际上是关于一般侵权行为的条款,是为自己的行为负责的侵权行为的条款 ,是为过错或者违法性行为所造成损害承担责任的侵权行为条款,而不是概括所有的侵 权行为及其请求权的条款(注:其中,关于为自己行为负责的特征,是全部一般侵权行 为的基本特征,而概括的过错或者违法性的特征,分别
uC/OS-II实时操作系统在嵌入式平台上进行移植的一般方法和技巧_工科论文 第十篇
引言
---实时操作系统的使用,能够简化嵌入式系统的应用开发,有效地确保稳定性和可靠性,便于维护和二次开发。
μC/OS-II是一个基于抢占式的实时多任务内核,可固化、可剪裁、具有高稳定性和可靠性,除此以外,μC/OS-II的鲜明特点就是源码公开,便于移植和维护。
在μC/OS-II官方的主页上可以查找到一个比较全面的移植范例列表。但是,在实际的开发项目中,仍然没有针对项目所采用芯片或开发工具的合适版本。那么,不妨自己根据需要进行移植。
本文则以在TMS320C6711 DSP上的移植过程为例,了μC/OS-II在嵌入式开发平台上进行移植的一般方法和技巧。μC/OS-II移植的基本步骤
在选定了系统平台和开发工具之后,进行μC/OS-II的移植工作,一般需要遵循以下的几个步骤:
● 深入了解所采用的系统核心
● 所采用的C语言开发工具的特点
● 编写移植代码
● 进行移植的测试
● 针对项目的开发平台,封装服务函数
(类似80x86版本的PC.C和PC.H)
系统核心
无论项目所采用的系统核心是MCU、DSP、MPU,进行μC/OS-II的移植时,所需要关注的细节都是相近的。
首先,是芯片的中断处理机制,如何开启、屏蔽中断,可否保存前一次中断状态等。还有,芯片是否有软中断或是陷阱指令,又是如何触发的。
此外,还需关注系统对于存储器的使用机制,诸如内存的地址空间,堆栈的增长方向,有无批量压栈的指令等。
在本例中,使用的是TMS320C6711 DSP。这是TI公司6000系列中的一款浮点型号,由于其时钟频率非常高,且采用了超常指令字(VLIW)结构、类RISC指令集、多级流水等技术,所以运算性能相当强大,在通信设备、图像处理、医疗仪器等方面都有着广泛的应用。
在C6711中,中断有3种类型,即复位、不可屏蔽中断(NMI)和可屏蔽中断(INT4-INT15)。可屏蔽中断由CSR寄存器控制全局使能,此外也可用IER寄存器分别置位使能。而在C6711中并没有软中断机制,所以μC/OS-II的任务切换需要编写一个专门的函数实现。
此外,C6711也没有专门的中断返回指令、批量压栈指令,所以相应的任务切换代码均需编程完成。由于采用了类RISC核心,C6711的内核结构中,只有A0-A15和B0-B15这两组32bit的通用寄存器。
C语言开发工具
无论所使用的系统核心是什么,C语言开发工具对于μC/OS-II是必不可少的。
最简单的信息可以从开发工具的手册中查找,比如:C语言各种数据类型分别编译为多少字节;是否支持嵌入式汇编,格式要求怎样;是否支持“interrupt”非标准关键字声明的中断函数;是否支持汇编代码列表(list)功能,等等。
上述的这样一些特性,会给嵌入式的开发带来很多便利。TI的C语言开发工具CCS for C6000就包含上述的所有功能。
而在此基础上,可以进一步地弄清开发工具的一些技术细节,以便进行之后真正的移植工作。
首先,开启C编译器的“汇编代码列表(list)”功能,这样编译器就会为每个C语言源文件生成其对应的汇编代码文件。
在CCS开发环境中的方法是:在菜单“/Project/Build options”的“Feedback”栏中选择“Interlisting:Opt/C and ASM(-s)”;或者,也可以直接在CCS的C编译命令行中加上“-s”参数。
然后分别编写几个简单的函数进行编译,比较C源代码和编译生成的汇编代码。例如:
void FUNC_TEMP (void)
{
Func_tmp2(); //调用任一个函数
}
在CCS中编译后生成的ASM代码为:
.asg B15, SP // 宏定义
FUNC_TEMP:
STW B3,SP--(8) // 入栈
NOP 2
CALL _ Func_tmp2 //-----------
MVKL BACK, B3 // 函数调用
MVKH BACK, B3 //-----------
NOP 3
BACK: LDW ++SP(8),B3 // 出栈
NOP 4
RET B3 // 函数返回
NOP 5
由此可见,在CCS编译器的规则中,B15寄存器被用作堆栈指针,使用通用存取指令进行栈操作,而且堆栈指针必须以8字节为单位改变。
此外,B3寄存器被用来保存函数调用时的返回地址,在函数执行之前需要入栈保护,直到函数返回前再出栈。
当然,CCS的C编译器对于每个通用寄存器都有约定的用途,但对于μC/OS-II的移植来说,了解以上信息就足够了。
最后,再编写一个用“interrupt”关键字声明的函数:
interrupt void ISR_TEMP (void)
{
int a;
a=0;
}
生成的ASM代码为:
ISR_TEMP:
STW B4,SP--(8) // 入栈
NOP 2
ZERO B4 //---------
STW B4,+SP(4) // a=0
NOP 2 //----------
B IRP // 中断返回
LDW ++SP(8),B4 // 出栈
NOP 4
与前一段代码相比,对于中断函数的编译,有两点不同:
● 函数的返回地址不再使用B3寄存器,相应地也无需将B3入栈。(IRP寄存器能自动保存中断发生时的程序地址)
● 编译器会自动统计中断函数所用到的寄存器,从而在中断一开始将他们全部入栈保护——例如上述程序段中,只用到了B4寄存器。
编写移植代码
在深入了解了系统核心与开发工具的基础上,真正编写移植代码的工作就相对比较简单了。
μC/OS-II自身的代码绝大部分都是用ANSI C编写的,而且代码的层次结构十分干净,与平台相关的移植代码仅仅存在于OS_CPU_A.ASM、OS_CPU_C.C以及OS_CPU.H这三个文件当中。
在移植的时候,结合前面两个步骤中已经掌握的信息,基本上按照《嵌入式实时操作系统μC/OS-II》一书的相关章节的指导来做就可以了。
但是,由于系统核心、开发工具的千差万别,在实际项目中,一般都会有一些处理方法上的不同,需要特别注意。以C6711的移植为例:
● 中断的开启和屏蔽的两个宏定义为:
xxdefine OS_ENTER_CRITICAL() Disable_int()
xxdefine OS_ExIT_CRITICAL() Enable_int()
Disable_int和Enable_int是用汇编语言编写的两个函数。在这里使用了控制状态寄存器(CSR)的一个特性——CSR中除了控制全局中断的GIE位之外,还有一个PGIE位,可用于保存之前的GIE状态。
因此在Disable_int中先将GIE的值写入PGIE,然后再将GIE写0,屏蔽中断。而在Enable_int中则从PGIE读出值,写入GIE,从而回复到之前的中断设置。
这样,就可以避免使用这两个宏而意外改变了系统的中断状态——此外,也没有使用堆栈或局部变量,比原作者推荐的方法要好。
● 任务的切换:
前文说过,C6711中没有软中断机制,所以任务的切换需要用汇编语言自行编写一个函数_OSCtxSw来实现,并且
xxdefine OS_TASK_SW() OSCtxSw()
在C6711中需要入栈保护的寄存器包括A0-A15、B0-B15、CSR、IER、IRP和AMR,这些再加上当前的程序地址构成一个存储帧,需要入栈保存。
OSCtxSw函数中,需要像发生了一次中断那样,将上述存储帧入栈,然后获取被激活任务的TCB指针,将其存储帧的内容弹出,从而完成任务切换。
需要特别注意的是,在这里OS_TASK_SW是作为函数调用的,所以如前文所述,调用时的当前程序地址是保存在B3寄存器中的,这也就是任务重新激活时的返回地址。
● 中断的编写:
如前文所述,如果用“interrupt”关键字声明函数,CCS在编译时,会自动将该函数中使用到的寄存器入栈、出栈保护。
但是,这会导致各种中断发生时,出入栈的内容各不相同。这对于μC/OS-II是会引起严重错误的。因为μC/OS-II要求中断发生时的入栈操作使用和发生任务切换时完全一样的存储帧结构。
因此,在移植时、基于μC/OS-II进行开发时,都不应当使用“interrupt”关键字,而应用如下结构编写中断函数:
void OSTickISR (void)
{
DSP_C6x_Save(); // 服务函数,入栈
OSIntEnter();
if (OSIntNesting == 1) // v2.51版本新增加
{
OSTCBCur->OSTCBStkPtr
=(OS_STK) DSP_C6x_GetCurrentSP(); // 服务函数
} // 获取当前SP的值
// 允许中断嵌套 则在此处开中断
OSTimeTick();
OSIntExit();
DSP_C6x_Resume(); // 服务函数,出栈
}
DSP_C6x_Save和DSP_C6x_Resume是两个服务函数,分别完成中断的出、入栈操作。它们与OS_TASK_SW函数的区别在于:中断发生时的当前程序地址是自动保存在IRP寄存器的,应将其作为任务返回地址,而不再是B3。此外,DSP_C6x_Resume是一个永远不会返回的函数,在将所有内容出栈后,它就直接跳转回到中断发生前的程序地址处,继续执行。
进行移植的测试
在编写完了所有的移植代码之后,就可以编写几个简单的任务程序进行测试了,大体上可以分三个步骤来进行,相关资料比较详尽,这里就不多作赘述了。
封装服务函数
最后这个步骤,往往是容易被忽视的,但对于保持项目代码的简洁、易维护有很重要的意义。
μC/OS-II的原作者强烈建议将源代码分路径进行存储,例如本文例子中的所有源代码就应按如下路径结构存储:
\uCOS-II
├─SOURCE // 平台无关代码
│ OS_CORE.C
│ ......
└─TI_C6711 // 系统核心
├─CCS // 开发工具
│ OS_CPU.H
│ OS_CPU_A.ASM
本文地址:www.wordls.cn/zuowen/274822.html
猜你喜欢: