系统程序优化

2024-06-02

系统程序优化(精选九篇)

系统程序优化 篇1

我公司煤磨现场控制器为西门子S7 300, DCS控制系统为施耐德Quantum (昆腾) 140CPU 43412A, 煤磨控制器为窑头控制站的一个远程子站, 两者之间通过Profibus DP现场总线来实现通讯。在DCS控制系统端通过通讯卡, 实现主站和子站数据读写。

2012年3月, 我公司1号煤磨系统多次出现跳停。现场检查发现, 煤磨现场控制器CPU故障报警停止运行, 对CPU复位后故障消失, 开机所有设备运行正常, 但运行几小时或几个班后, 故障又会出现, 重复多次。

2 原因分析及问题查找

引起西门子S7 300CPU控制器故障报警停止运行的原因, 通常为程序错误故障或者外部通讯故障。程序错误故障往往发生在设备调试阶段, 正常运行时一般都是由外部故障譬如:卡件松动、线路老化、接触不良等引起。对此, 我们首先从以下几个方面查找问题原因。

(1) 卡件松动、接触不良是引起CPU跳停的常见原因, 煤磨控制系统可能会因震动使某些卡件或者接线产生松动, 从而引发故障。但对所有卡件和接线进行紧固后, 故障现象没有消失。

(2) 对窑头站卡件和接线进行检查紧固, 并试图监控其运行情况来查找问题, 但由于故障发生的不是很频繁, 很难实现长时间的不停监视, 对消除故障没有效果。

(3) Profibus DP现场总线布置在电缆沟内, 加之煤磨控制站距离窑头站约100m, 试图通过检查现场总线接触情况也非常困难。

基于上述过程, 我们通过上传煤磨现场控制站的程序, 对程序可能出现的问题进行查找。研究发现, CPU故障停机可以从优化程序着手来加以解决。一是对控制站的主控制程序加装处理运行异常的程序块。我公司主控制程序很长, 内容写入多, 有很多模拟量的处理和换算。其中OB1块可能会出现超时运行, 即引发CPU故障报警停止运行。但原程序没有创建相应的处理这种异常的程序块;二是对煤磨控制器加装处理信号异常和线路异常的不故障停机组织块。由于我公司煤磨控制器为窑头站子站, 通讯总线较长, 可能会出现某些时候通讯信号暂时不好或者中断而产生报警跳停故障。原程序也没有创建处理此类异常的组织块。

3 问题解决

为此, 针对原设计程序存在的问题, 我们采用加装程序块对相应功能进行优化。其作用原理为:

加装OB80块, 当OB1运行超时时, CPU不进入停止模式;

加装诊断中断块OB82, 具有诊断如断线、传感器电源丢失等中断模块的功能, 如果程序中没有创建OB82, CPU进入停止模式。诊断中断还对CPU所有内外部故障, 包括模块前连接器拔出、硬件中断丢失等作出响应。

加装插拔事件的中断处理OB83模块, 事件出现即CPU自动调用OB83报警。如果程序中没有创建OB83, CPU进入停止模式。

加装OB85块, 处理操作系统访问模块故障、更新过程映像区时I/O访问故障、事件触发但相应的OB没有下载到CPU等事件, 事件出现即CPU自动调用OB85报错。如果程序中没创建OB85, CPU进入停止模式。

加装OB86块, 处理PROFIBUS-DP主站、PROFIBUS-DP或PROFINET I/O分布I/O系统中站点故障等事件, 事件出现即CPU自动调用OB86报错。如果程序中没有创建, CPU进入停止模式。

加装上述功能模块, 均可利用控制系统的下拉菜单完成创建, 简单便捷。具体方法是, (1) 打开程序——打开程序中块窗口。在窗口中点击鼠标右键, 在出现的小窗口里选择插入新对象, 在出现的下拉菜单中选择组织块; (2) 在出现的小窗口“常规第一部分”的“名称”栏, 输入OB80, 其它不动, “常规第二部分”以及“调用”、“属性”都不作改动。最后点击确定, OB80块加装结束。

用同样的方法在块窗口里加入组织块OB82、OB83、OB85、OB86并保存。最后把修改的程序下载到CPU。

运行表明, 进行程序修改后, 同时对来自窑头站的开关量信息延时2秒钟进行断开处理, 我公司现场煤磨系统运行至今, 再没有出现跳车问题。

系统程序优化 篇2

随着航空技术的发展,安全、舒适、经济以及环保型客机成为了新的发展趋势,针对这一要求,波音公司与麻省理工大学科研团队共同提出了一种新的着陆进近方式(CDA):连续下降进近;文章以某机场为例,在国际民航组织PBN程序设计的规范下,设计符合标准的CDA运行模式下的PBN进近程序,并运用飞行性能的方法模拟计算,以数据化的方式体现CDA程序的优点,为之后国内实际运行CDA程序提供科学依据。

1技术综述

PBN(PerformanceBasedNavigation):基于性能的导航,国际民航组织的这一种新的运行理念是在整合了世界各国和地区的区域导航和各地的该方面导航的运行实践和技术标准的基础上提出的。“性能”,是源于性能的导航中,主要是说导航的功能、连续性、精度、可用性和完好性的要求。PBN运行需要三个技术方面的支持,分别为“导航应用”、支持系统运行的“导航设施”和“导航规范”。

连续下降进近是非精密进近的一种稳定进近方法。所谓稳定进近就是指在下降过程中飞行器保持稳定的进近速度、下降率、垂直航迹和航空器构型直到接地点。连续下降进近又称为固定下滑角进近,从起始下降点开始按照预定的下降梯度,持续下降到跑道入口空域15米,中间没有平飞阶段。

2程序设计及优化:

2.1进场程序方案分析

交通流进、离场分离的方案本来有利于实施CDA运行。因为,该程序分别为跑道设计了多条进场程序,在个别航路点规定了高度限制,是为了保证航路避免飞行冲突,在避开拥挤空域、保证飞行安全的前提下,突破了某机场长期以来空域紧张的制约。

2.2优化程序

融合点程序的构成主要包括:定位点、排序边和融合点等。航段上规定了多个已知的定位点,可以预设为转弯直飞点或者帮助管制员判断航空器间的间隔。定位点分为飞越点和旁切点。排序边最后一个定位点一般为飞越点,它的后面有一条用于特殊情况(如通讯失效)下延伸航段航空器自主直飞程序,其它的定位点是旁切点。

融合点用于整合和排序不同方向的交通流,该点是从不同的IAF到FAF共用航段间规定的一个定位点,排序边是用于进行航空器飞行路径的延伸或缩短的至融合点距离相等的近似圆弧的预设航段,对于管制员直观地对各航空器间的间隔做出判断,在不依赖其他地面支持工具,仅凭借程序结构标识的情况下,其等距特性非常重要。平行设计的多条排序边存在水平和垂直方向上的间隔。

2.3某机场PBN程序CDA运行优化评估

跑道进场方向分别为:共有5进场航线。

航段梯度的计算公式为:航路点之间的高度差航段距离×100%

3结束语

矿山副井提升系统控制程序优化 篇3

1 存在的问题

副井提升机在上下人员时, 多数情况是以不定时、多人次、多中段同时下放为主。为了提高提升机的效率, 在管理手段上可以采取集中时间、集中人员、分中段集中下放人员的办法来提升效率。但是这种管理模式仅仅适用于在特定时间集中上下班的井下生产人员, 对部分管理人员及维修人员来说, 由于副井提升机在下放人员时的低效率, 也导致了他们自身工作效率的降低, 主要表现在故障处理不及时、隐患检查不到位等方面。并且这种运行方式由于启动和加减速次数较为频繁、尖峰负荷较大、低速爬行时间过长等使得该运行方式能耗较大, 很不经济, 同时这种运行方式对乘罐人员和提升设备本身来说也有一定的不适或不良反应。

2 原因分析

由于矿山副井提升机在井下运输人员或物料时需要停靠的中段较多, 其在井筒中的运行方式与主井提升机完全不同。主井提升机在正常情况下, 只是在地表卸矿站和井下装载站两个终端中段之间往返运行, 其速度完全可以达到设计的最高速度并以此最高速度匀速运行至减速点, 然后减速停车卸载或装载。而副井提升机除在两个井筒终端之间运行外, 还需要在井下中段与中段之间运行, 由于国内多数井下矿山 (特别是老矿山) 中段与中段之间的距离仅在50~70m之间, 所以特别是在接近终端中段或相邻的两个中段之间运行时, 出于安全运行的考虑及客观实际距离的限制, 副井提升机在运行时多数情况下都是速度加不到全速就要减速运行, 低速爬行时间过长, 这样就大大限制了提升机提升效率的发挥, 图1为主副井提升机及副井提升机在不同中段之间运行时的速度模拟曲线, 可以明显看出其差异。

3 行程控制及其算法

由以上的原因分析可知, 出于安全运行的考虑, 设计单位在设计副井提升系统的控制程序时, 各个中段的减速点都是以速度为全速而设计的, 虽然在井筒中间的几个中段减速距离要小于井筒终端的减速距离, 但减速点处的速度也是按全速设计的。在手动条件下, 即使给定速度低于全速, 系统也是按全速设置的减速点来自动减速停车的。现场调试人员在调试提升机程序时也是以全速速度作为调试的速度, 在此基础上设定减速点的位置, 并未考虑实际运行时的不同状况, 致使在相邻两个中段, 特别是接近终端中段运行时, 提升机无法充分发挥其效率也间接地影响了员工的工作效率。

以金川公司龙首矿2#副井大罐提升机为例, 针对上述存在的问题, 结合现场实际运行状况, 提出以下针对副井提升系统控制程序优化方案———行程控制及其算法。

3.1 提升系统基本参数

该副井提升系统共有7个中段, 分别为1729m L、1703m L、1460m L、1400m L、1340m L、1280m L、1220m L, 地表标高为1729m, 井底终端标高1220m。其中1729m L及1703m L为主要下放人员中段, 多数集中在1703m L井口。1703m L至1460m L之间无中段, 1460m L以下, 各中段之间的距离为60m。

该提升机的设计全速速度为8m/s, 下放人员时规定最高速度为5m/s, 由提升机司机手动操作, 系统的平均加速度为0.65m/s。

3.2 运行状况分析计算

其中:Vm=8m/s, V0=0.4 m/s, a=0.65m/s2, S为加速段距离。

由上式可知, 该系统达到全速时, 加速距离为49m, 相应地, 其减速距离略小于49m。加上在井筒两端的爬行距离1m, 其减速点按理论应设置在距离井口50m的位置。

在手动条件下升降人员时, 虽然给定速度限制在Vm=5m/s, 但在井筒两端的减速距离仍然是50m, 在井筒中间的几个中段其减速距离要相应地比50m小点, 但是减速点的设计也是根据全速速度设计的, 是程序内部根据安全停车的要求设定的定值。所以当提升机需要在相邻的两个中段 (60m) 之间运行, 特别是相邻中段向井筒终端中段运行时, 为了保证足够的安全减速距离 (50m) , 加速段距离也就是10m, 所以在速度很低的时候就进入了按全速预设的减速段。

在相邻中段向井筒终端运行时 (如:从1280m L向1220m L运行) 的理论时间为:

式中:t1———加速时间;

t2———减速并运行至爬行点的时间;

t3———预设的爬行时间。

井筒终端爬行距离为1m, 爬行速度为0.4m/s, 所以预设的爬行时间t3=s/v=1/0.4=2.5 (s) 。

假设:在此状况下所能达到的最大速度为Vt, 则:

其中:V0=0, a=0.65m/s2, S=10m, 由此可知:t1=5.5 (s) , Vt=3.58 (m/s) 。也就是说, 在相邻中段向井筒终端运行时, 该系统的最高速度只能上升到3.58m/s, 用时5.5s。当副井罐笼在井筒中的位置达到程序内部设定的减速点时, 就进入减速阶段, 确保速度降至0.4m/s的爬行速度并运行至预设的爬行点。所以这段时间本身包括两部分:一是实际减速时间;二是减速至0.4m/s后, 以此速度运行至预设的爬行点的时间。

根据公式2:Vt=0.4m/s, V0=3.58m/s, a=-0.65m/s2可知, 实际的减速时间t=4.9 (s) , 实际的减速距离S=9.7 (m) 。

然后系统就以0.4 (m/s) 的速度运行至预设的爬行点, 这段距离为49-9.7=39.3 (m) , 运行时间为S/V=39.3/0.4=98 (s) , 所以减速并运行至爬行点的时间t3=4.9+98=102.9 (s) 。由此可知该系统从相邻中段向井筒终端运行时的理论时间T=t1+t2+t3=111 (s) 。

虽然系统从井筒终端向相邻中段运行或在井筒中间的相邻中段之间运行时, 减速距离要小于井筒终端的减速距离 (50m) , 运行时间要短于111s, 但效率还是不能满足使用单位的实际要求。可以得出如下结论:提升机在手动模式下运行时, 提升机司机在全速以下可以控制速度的给定值, 也可以实现提前减速的要求, 但无法实现滞后减速以提高人员材料等下放时的提升机效率。

3.3 行程控制的设计思路

根据以上得出的结论, 在满足各种安全规定和运行要求的前提下, 针对不同的运行状况对控制程序进行如下优化以实现提升机效率的最大化。

1) 提升机运行模式为手动模式, 有人/料信号和目的地信号;

2) 根据目的地信号和提升机当前的停车位置信号, 计算出运行距离即行程;

3) 根据计算出的行程和目的地中段的位置自动给出此次运行时的最大速度, 并保证在该速度下提升机能够匀速运行一定的时间且该速度在井筒终端速度限制范围以内;

4) 根据限制的最大速度自动调用此次运行到达目的地的减速距离。判别流程如图2所示。

其中的子程序为不同条件下, 系统自动调用的最大给定速度及相应的减速距离, 即行程控制算法。在手动条件下, 最大速度和减速距离, 由行程控制判别程序根据行程距离自动给出, 也就是提升机司机所能给出的最大速度。图3和图4中的Vm为最大速度, D为此次行程目标中段的减速距离。

4 改造前后比较

以在相邻中段向井筒终端 (如:从1280m L向1220m L) 运行为例, 比较改造前后的理论时间差异:

式中:t1———加速时间;

t2———匀速运行时间;

t3———减速并运行至爬行点的时间;

t4———爬行时间。

改造前后爬行时间不变, 所以:爬行时间t4=2.5 (s) , 爬行距离为1m。

根据公式2可知:Vt=Vm=3m/s, V0=0, a=0.65m/s2, 所以加速时间t=t2=4.6 (s) , 加速距离为6.9m, 按7m计算。

同理, 根据公式2可知:Vt=0.4m/s, V0=3m/s, a=0.65m/s2, 从3m/s减速至0.4m/s的时间t=4 (s) , 距离为6.8m, 而减速距离设为8m (有1m的爬行距离) , 所以减速后以0.4m/s的速度爬行0.2m至爬行点, 时间为0.5s, 所以t=t3=4+0.5=4.5 (s) 。

由此可知:匀速运行距离为60-7-8=45m, 速度为3m/s。所以, 匀速运行时间t=t2=15 (s) 。改造后在相邻中段向井筒终端运行的理论时间为T=t1+t2+t3+t4=26.6 (s) , 对比改造前的111s运行时间, 效率的提升是显而易见的。

5 结束语

在保证提升系统的安全性、可靠性的同时, 立足现场实际问题, 对系统程序进行必要的改进是提高提升机效率的有效途径。行程控制及其算法的成功设计及应用不但取得了明显的经济效益, 也取得了一定的社会效益。

参考文献

[1]廖常初.PLC编程及应用[M].北京:机械工业出版社, 1999.

[2]廖常初.S7 300/400 PLC应用技术[M].北京:机械工业出版社, 2001.

[3]孙玉蓉.矿井提升机械[M].北京:煤炭工业出版社, 1998.

ARM程序设计优化 篇4

然而在实际的程序设计过程中,程序优化的两个目标(运行速度和代码大小) 通常是互相矛盾的。为了提高程序运行效率,往往要以牺牲存储空间、增加代码量为代价, 例如程序设计中经常使用的以查表代替计算、循环展开等方法就容易导致程序代码量增加。而为了减少程序代码量、压缩存储器空间,可能又要以降低程序运行效率为代价。因此, 在对程序实施优化之前, 应先根据实际需求确定相应的策略。在处理器资源紧张的情况下, 应着重考虑运行速度优化;而在存储器资源使用受限的情况下, 则应优先考虑代码尺寸的优化。

1 程序运行速度优化

程序运行速度优化的方法可分为以下几大类。

1.1 通用的优化方法

(1)减小运算强度

利用左/ 右移位操作代替乘/ 除2 运算:通常需要乘以或除以2 的幂次方都可以通过左移或右移n 位来完成。实际上乘以任何一个整数都可以用移位和加法来代替乘法。ARM 7 中加法和移位可以通过一条指令来完成,且执行时间少于乘法指令。例如: i = i × 5 可以用i = (i《2) + i 来代替。

利用乘法代替乘方运算:ARM7 核中内建有32 ×8 乘法器, 因此可以通过乘法运算来代替乘方运算以节约乘方函数调用的开销。例如: i = pow(i, 3.0) 可用 i = i×i × i 来代替。

利用与运算代替求余运算:有时可以通过用与(AND )指令代替求余操作(% )来提高效率。例如:i = i % 8 可以用 i = i & 0x07 来代替。

(2)优化循环终止条件

在一个循环结构中,循环的终止条件将严重影响着循环的效率,再加上arm 指令的条件执行特性,所以在书写循环的终止条件时应尽量使用count-down-to-zero结构。这样编译器可以用一条BNE (若非零则跳转)指令代替CMP (比较)和BLE (若小于则跳转)两条指令,既减小代码尺寸,又加快了运行速度。

(3)使用inline 函数

arm C 支持 inline 关键字,如果一个函数被设计成一个inline 函数,那么在调用它的地方将会用函数体来替代函数调用语句, 这样将会彻底省去函数调用的开销。使用inline 的最大缺点是函数在被频繁调用时,代码量将增大。

1.2 处理器相关的优化方法

(1)保持流水线畅通

从前面的介绍可知,流水线延迟或阻断会对处理器的性能造成影响,因此应该尽量保持流水线畅通。流水线延迟难以避免, 但可以利用延迟周期进行其它操作。

LOAD/STORE 指令中的自动索引(auto-indexing)功能就是为利用流水线延迟周期而设计的。当流水线处于延迟周期时, 处理器的执行单元被占用, 算术逻辑单元(ALU )和桶形移位器却可能处于空闲状态,此时可以利用它们来完成往基址寄存器上加一个偏移量的操作,

供后面的指令使用。例如:指令 LDR R1, [R2], #4 完成 R1= *R2 及 R2 += 4 两个操作,是后索引(post-indexing)的例子;而指令 LDR R1, [R2, #4]! 完成 R1 = *(R2 + 4) 和 R2 +=4 两个操作,是前索引(pre-indexing)的例子。

流水线阻断的情况可通过循环拆解等方法加以改善。一个循环可以考虑拆解以减小跳转指令在循环指令中所占的比重, 进而提高代码效率。下面以一个内存复制函数加以说明。

void memcopy(char *to, char *from, unsigned int nbytes)

{

while(nbytes--)

*to++ = *from++;

}

为简单起见,这里假设nbytes 为16 的倍数(省略对余数的处理)。上面的函数每处理一个字节就要进行一次判断和跳转, 对其中的循环体可作如下拆解:

void memcopy(char *to, char *from, unsigned int nbytes)

{

while(nbytes) {

*to++ = *from++;

*to++ = *from++;

*to++ = *from++;

*to++ = *from++;

nbytes - = 4;

}

}

这样一来, 循环体中的指令数增加了,循环次数却减少了。跳转指令带来的负面影响得以削弱。利用arm 7 处理器32 位字长的特性, 上述代码可进一步作如下调整:

void memcopy(char *to, char *from, unsigned int nbytes)

{

int *p_to = (int *)to;

int *p_from = (int *)from;

while(nbytes) {

*p_to++ = *p_from++;

*p_to++ = *p_from++;

*p_to++ = *p_from++;

*p_to++ = *p_from++;

nbytes - = 16;

}

}

经过优化后,一次循环可以处理16 个字节。跳转指令带来的影响进一步得到减弱。不过可以看出, 调整后的代码在代码量方面有所增加。

(2)使用寄存器变量

CPU 对寄存器的存取要比对内存的存取快得多, 因此为变量分配一个寄存器, 将有助于代码的优化和运行效率的提高,

整型、指针、浮点等类型的变量都可以分配寄存器; 一个结构的部分或者全部也可以分配寄存器。给循环体中需要频繁访问的变量分配寄存器也能在一定程度上提高程序效率。

1.3 指令集相关的优化方法

有时可以利用arm7 指令集的特点对程序进行优化。

(1)避免除法

arm 7 指令集中没有除法指令,其除法是通过调用C 库函数实现的。一个32 位的除法通常需要20~140 个时钟周期。因此, 除法成了一个程序效率的瓶颈, 应尽量避免使用。有些除法可用乘法代替,例如: if ( (x / y) 》 z)可变通为 if ( x 》 (y × z)) 。在能满足精度,且存储器空间

冗余的情况下, 也可考虑使用查表法代替除法。当除数为2 的幂次方时, 应用移位操作代替除法。

(2)利用条件执行

arm 指令集的一个重要特征就是所有的指令均可包含一个可选的条件码。当程序状态寄存器(PSR )中的条件码标志满足指定条件时, 带条件码的指令才能执行。利用条件执行通常可以省去单独的判断指令,因而可以减小代码尺寸并提高程序效率。

(3)使用合适的变量类型

arm 指令集支持有符号/ 无符号的8 位、16 位、32位整型及浮点型变量。恰当的使用变量的类型,不仅可以节省代码,并且可以提高代码运行效率。应该尽可能地避免使用char、short 型的局部变量,因为操作8 位/16 位局部变量往往比操作3 2 位变量需要更多指令, 请对比下列3 个函数和它们的汇编代码。

intwordinc(inta) wordinc

{ ADD a1,a1,#1

return a + 1; MOV pc,lr

} shortinc

shortshortinc(shorta) ADD a1,a1,#1

{ MOV a1,a1,LSL #16

return a + 1; MOV a1,a1,ASR #16

} MOV pc,lr

charcharinc(chara) charinc

{ ADD a1,a1,#1

return a + 1; AND a1,a1,#&ff

} MOV pc,lr

可以看出, 操作3 2 位变量所需的指令要少于操作8位及16 位变量。

1.4 存储器相关的优化方法

(1)用查表代替计算

在处理器资源紧张而存储器资源相对富裕的情况下, 可以用牺牲存储空间换取运行速度的办法。例如需要频繁计算正弦或余弦函数值时,可预先将函数值计算出来置于内存中供以后查找。

(2)充分利用片内RAM

一些厂商出产的arm 芯片内集成有一定容量的RAM,如Atmel 公司的AT91R40807 内有128KB 的RAM,夏普公司的LH75400/LH75401 内有32KB 的RAM。处理器对片内RAM 的访问速度要快于对外部RAM 的访问,所以应尽可能将程序调入片内RAM 中运行。若因程序太大无法完全放入片内RAM ,可考虑将使用最频繁的数据或程序段调入片内RAM 以提高程序运行效率。

1.5 编译器相关的优化方法

多数编译器都支持对程序速度和程序大小的优化,有些编译器还允许用户选择可供优化的内容及优化的程度。相比前面的各种优化方法, 通过设置编译器选项对程序进行优化不失为一种简单有效的途径。

2 代码尺寸优化

精简指令集计算机的一个重要特点是指令长度固定, 这样做可以简化指令译码的过程,但却容易导致代码尺寸增加。为避免这个问题,可以考虑采取以下措施来缩减程序代码量。

2.1 使用多寄存器操作指令

arm 指令集中的多寄存器操作指令LDM/STM 可以加载/ 存储多个寄存器,这在保存/ 恢复寄存器组的状态及进行大块数据复制时非常有效。例如要将寄存器R4~R12 及R14 的内容保存到堆栈中,若用STR 指令共需要10 条,而一条STMEA R13!, {R4 ?? R12, R14} 指令就能达到相同的目的,节省的指令存储空间相当可观。不过需要注意的是, 虽然一条LDM/STM 指令能代替多条LDR/STR 指令,但这并不意味着程序运行速度得到了提高。实际上处理器在执行LDM/STM 指令的时候还是将它拆分成多条单独的LDR/STR 指令来执行。

2.2 合理安排变量顺序

arm 7 处理器要求程序中的32 位/16 位变量必须按字/ 半字对齐,这意味着如果变量顺序安排不合理, 有可能会造成存储空间的浪费。例如:一个结构体中的4个32 位int 型变量i1 ~ i4 和4 个8 位char 型变量c1 ~ c4,若按照i1、c1、i2、c2、i3、c3、i4、c4 的顺序交错存放时, 由于整型变量的对齐会导致位于2 个整型变量中间的那个8 位char 型变量实际占用32 位的存储器,这样就造成了存储空间的浪费。为避免这种情况, 应将int 型变量和char 型变量按类似i1、i2、i3、i4、c1、c2、c3、c4 的顺序连续存放。

2.3 使用Thumb 指令

为了从根本上有效降低代码尺寸,ARM 公司开发了16 位的Thumb 指令集。Thumb 是ARM 体系结构的扩充。Thumb 指令集是大多数常用32 位ARM 指令压缩成16 位宽指令的集合。在执行时,16 位指令透明的实时解压成32 位ARM 指令并没有性能损失。而且程序在Thumb状态和ARM 状态之间切换是零开销的。与等价的32 位arm 代码相比,Thumb 代码节省的存储器空间可高达35% 以上。

结语

综上所述,优化的过程是在透彻了解软/ 硬件结构和特性的前提下,充分利用硬件资源,不断调整程序结构使之趋于合理的过程。其目的是最大程度发挥处理器效能,最大限度利用资源,尽可能提高程序在特定硬件平台上的性能。随着ARM 处理器在通信及消费电子等行业中的应用日趋广泛,优化技术将在基于arm 处理器的程序设计过程中发挥越来越重要的作用。

系统程序优化 篇5

内燃机车是地铁运营及维护要用到的一种很重要的行车设备, 在许多地铁系统的维护作业中都需要使用, 例如:地铁列车、运输车辆、无动力轨道车辆的牵引与调车;隧道内和车辆段内事故车辆的救援牵引作业;地铁供电设备施工和维修时工程车作为牵引动力的设备;地铁正线货物运输及地铁工程维修等等。

在地铁运用的内燃机车, 基本构造由发动机、传动装置、车体和车架、走行部、制动系统、辅助装置及电气系统七大部分组成。

发动机属于内燃机车的动力源, 采用了美国进口卡特彼勒3412E型柴油机, 功率约为560 k W。

传动装置主要由液力传动箱、车轴齿轮箱、辅助齿轮箱等组成, 柴油机所发出的功率通过5根万向轴传递到机车轮对上, 使车轮转动, 机车行走。

车体则采用了全钢电焊结构, 整车从前到后分为冷却室、动力室、司机室、辅机室等四部分。车架由左、右两根纵向中梁, 前后牵引梁, 中间横梁和外围板组成, 具有足够的强度和刚度。

走行部为两个相同的、可互换的转向架, 车架上部重量依次通过转向架旁承、构架、轴箱弹簧、轴箱、轮对传递给钢轨, 牵引力则通过转向架中心销传给车架和车钩。

制动系统则采用了JZ-7型空气制动机, 机车前后操作台均可操纵, 制动机的分配阀采用了二压力与三压力混合型式的机构, 既具有阶段缓解作用, 又具有一次缓解作用。

辅助装置主要是指静液压系统, 在此系统中, 柴油机仍是动力源, 其驱动油泵, 液压油经加压后, 流向与冷却风扇连接的液压马达, 当风扇转动时, 可为风扇上方的柴油机散热水箱进行通风降温。

电气系统是机车控制的核心, 通过各种电器元件来实现启动、调速、信号收集、充电、照明等, 在控制机车运转的同时, 保证机车各系统正常运作。目前在内燃机车电气系统中, PLC控制系统的运用比较广泛, 三菱PLC为其中的一种产品。

1 内燃机车PLC控制系统设计分析

本文介绍的内燃机车的PLC控制系统, 由三菱FX2N-80MT-D型微机可编程控制器、传感器、DA数模转换器、AD模数转换器、YMZH柴油机油门信号变换器、PWM脉宽调制信号、柴油机电子控制模块 (ECM) 、940GOT-SWD显示屏等组成, 其中微机可编程控制器, 即PLC为系统的核心。如图1所示。

PLC的工作电源, 由柴油机的24 V蓄电池经稳压器后提供, 其输入端主要接收ADS司机控制器位信号、柴油机转速信号、机车速度信号及各电器部件的开关量信号, 输出方式则采用继电器输出, 共20个固态继电器, 以微电流驱动24 V电控阀、24 V直流接触器与110 V直流接触器等电器元件的动作。

DA模块用于柴油机机油油压信号与冷却水温度信号的收集, AD模块则用于将数值信号转换模拟信号, 并通过YMZH柴油机油门信号变换器, 向柴油机的ECM提供信号, 实现柴油机转速的调整。

1.1 内燃机车重要信号收集

PLC接收的内燃机车重要信号, 主要有柴油机转速、机车速度、冷却水温度和机油油压, 这些信号使司机能及时掌握机车的工况, 使其一方面可根据作业要求, 对机车的运转状态进行调整, 另一方面, 在机车出现故障后, 可及时提醒司机停止操作, 避免设备带故障运行, 确保了设备和人身的安全。

柴油机转速传感器由e2e-x2e1接近开关和多齿齿轮组成, 其中多齿齿轮与液力传动箱一轴连接, 由于液力传动箱一轴系柴油机飞轮直接驱动, 因此, 多齿齿轮的转速与柴油机的转速一致。接近开关为径向安装, 多齿齿轮转动一圈, 则产生9个脉冲量, 并被PLC的高速计数器输入端X0接收。在程序中, 柴油机转速传感器是以1 000 ms作为一个样本采集周期, 并将数据直接放置在数据存储器D0中, 程序计算与执行原理如下。

(1) 柴油机转速的计算公式为:n=60D0·1000/Nt (r/min) , N为每转脉冲数, t为指定的计数时间, 单位为ms;

(2) 根据上文描述, N为9, t为1 000 ms, 因此n=60×D0×1000/ (9×1000) =D0×20/3;

(3) PLC的高速计数器输入端X0, 在1 000 ms内完成一个采样周期, 并将数值直接存至D0处, 然后D0先乘以20, 再除以3, 运算的最终结果放置在D110。

(4) 柴油机在启动时, 柴油机转速至少要在500 r/min转以上是判别启动成功的条件之一, 因此在程序的每个执行周期, PLC均要将D110进行比对, 如低于500 r/min, 则PLC将禁止辅助发电机的启动与机油油压的判别, 使机车不能进行前进/后退的操作。

机车速度传感器设置与柴油机传感器基本一致, 区别为机车速度的多齿齿轮安装在车轴的端部, 且齿数较多, 转动一圈能产生200个脉冲, 收集的样本是存放在数据存储器中, 程序计算与执行原理如下:

(1) 车轮的转速公式计算公式为n=60×D4×1000/Nt (r/min) ;

(2) N为200, t为1 000 ms, n=60×D4×1000/ (200×1000) =3×D4/10 (r/min) ;

(3) n (r/min) ×60=18×D4 (r/h) ;

(4) 机车的速度V (km/h) =n (r/h) ×∏×d/1000, 其中d为车轮直径, 取d=0.915 m, V=18×D4×3.14×0.915/1000 (km/h) =51.72×D4/1000 (km/h) ≈D4×5/100;

(5) 在程序中, PLC的高速计数器输入端X1, 在采集完数据后, 会将数值存至D4, 然后D4先乘以5, 再除以100, 运算最终结果放置在D130。如图2所示。

(6) 在每个程序执行周期, PLC均要将D130进行比对, 如发现D130超50 km/h, 则机车前进失效, 柴油机自动卸载, 停车制动自动实施。

冷却水温度与机油油压信号, 均通过AD模数转换器收集, PLC会在程序首次的扫描执行周期, 对AD模块进行判别与设置, 并将采样周期数定为25次, 关闭3、4通道, 设置1、2通道的量程为4~20 m A。在程序往后的循环扫描执行中, PLC会将收集到的数据, 通过换算后, 将最终数据存储至D160 (水温) 和D190 (油压) , 当机车水温高于103°C, 或机油油压低于50bar时, 柴油机会自动卸载, 以确保设备运转安全[1]。如图3所示。

1.2 柴油机转速控制

柴油机的转速控制, 主要通过ADS司机控制器、PLC可编程控制器、DA数模转换器与柴油机油门信号变换器来实现, ADS司机控制器为输入端, 共4个输入点, 与PLC的X5、X6、X7、X10连接, 组合成16个档位信号。在程序执行过程中, 首先是通过M8000与fromp指令, 对DA模块进行设置与判别, 然后根据档位信号进行运算, 将最终数据存储在D20中, 最后利用to指令, 向DA模块写入220至580范围的数值。DA模块对传输过来数值会进行转换, 并从2通道向YMZH油门信号变换器提供4~20 m A的电流, 油门信号变换器再将其转变为PWM脉宽调制信号, 最后提供给柴油机电子控制模块ECM进行电子调速控制, 通过调节电子喷油泵电磁阀来调节喷油量, 从而完成柴油机转速的升降[2]。如图4所示。

1.3 机车起动走行

内燃机车液力传动箱通过涡轮, 将柴油机的机械能转变为液力油的动能, 并通过冲击输出轴上的叶片, 最终将柴油机的功率传递给车轴齿轮箱, 因此通过控制液力传动箱液力油的油路通断, 即可实现动力的输出通断, 通过改变液力传动箱的液力油流通方向, 即可实现的输出端的正转与反转。油路是通过相应滑阀控制的, 而滑阀的动作是靠气压驱动, 所以机车起动, 前进还是后退, 可同过控制气路上电控阀来实现。在PLC中, 与机车前进后退有关的程序相对较为简单, 如图5所示, 但相应的条件限制较多, 内燃机车的前进后退有效条件有:

(1) 机组保护信号须接通;

(2) 司机控制器须得电接通;

() 机车车速未超;

(4) 柴油机水温高于30°C, 但小于103°C;

(5) 柴油机润滑油油压高于50 bar;6

(6) 低恒速功能未激活。

2 PLC程序的改进优化

2.1 柴油机调速程序改进优化

ADS司机控制器由调速手柄、连接齿轮、凸轮及开关触点组成, 当转动调速手柄, 会拨动齿轮和弹簧压片接触, 此时对应的凸轮顶起或凹陷, 接通或断开相应的开关触点, 如图6所示。在实际使用过程中, 发现司机在进档过程中, 若动作过慢, 容易出现转速增量过多的异常情况, 尤其是8档进9档, 柴油机转速能突然升至最高转速, 由于司机在作业过程, 有对标的需求, 转速的提升须慢慢进档, 使得机车的作业存在一定的风险, 因此需对此问题进行分析与整治。

通过研究分析, 发现导致转速异常的具体原因由ADS司机控制器的机械缺陷所致, 以8档进9档为例, 机车在8档时, PLC上的X5、X6、X7闭合, 对应的转速是1 340 r/min, 在9档时, 仅X10闭合, 对应的转速是1 435 r/min, 在16档位时, X5、X6、X7、X10全闭合, 对应的转速是2 000 r/min, 若8档进9档动作过慢, 手轮必定会滞留在8、9档位之间, 此时开关触点容易出现旧的档位状态未消除, 新的档位状态提前出现的情况, 即X5、X6、X7未能及时断开, 而X10提前接通, 则柴油机转速从1 340 r/min直接上升至2 000 r/min, 出现转速异常增高的情况。如图7和图8所示。

通过上述分析, 解决办法之一就是对ADS司机控制器进行升级改造, 参照新车的设计, 将无级司控器移植该车上使用, 但由于无级司控器成本较高, 且升级改造涉及到司机控制台的改造, 施工工程量较大, 实施的可行性不高。

为节约成本, 现考虑通过程序优化, 解决转速提升异常问题。根据ADS司机控制器的单向变化原理, 可在PLC程序中增加合理的逻辑处理程序段, 保证档位信号升值不发生突变, 从而增强档位输出信号的可靠性, 弥补硬件上不足。具体的程序设计为, 在档位信号值存储至D198后, 将D198的数值传至D302, 并在下一个程序执行周期, 利用CMP、SUB指令, 使新档位信号与当前档位信号进行比对, 若档位跨越2位, 则将D302数值存至D198, 反之, 更新D302数值。经现场调试测试, 加入该段程序后, 转速增量异常不再出现, 且正常的紧急升降速也未见异常。如图9所示。

2.2 机车应急功能设计

柴油机的机油压力与冷却水温度是机车的两个重要信号, 其反映了柴油机是否处于正常的工作状态, 当柴油机出现异常后, 通过程序的限制, 可避免柴油机带故障运行, 而导致事故的发生, 保障设备与人员的安全。当然传感器作为柴油机的一部分, 本身也会出现故障, 在机车的实际运用过程中, 比较常见的是传感器损坏, 信号无法传输到PLC中, 柴油机无法提速, 且机车前进后退操作均失效。机车一旦在正线出现类似故障, 受现场条件与作业时间的限制, 司机短时间内无法完成传感器更换, 处置不当则有可能影响电客车的出线, 为地铁运营带来一定风险。由于柴油机配有另一套机油油压和水温传感器 (不与PLC连接) , 并可通过操作台独立的仪表盘显示, 因此, 经分析研究, 可在PLC中增加应急程序段, 并在PLC相连接的940GOT-SWD显示屏增加应急操作界面, 作为应急程序的输入端, 可避免实体应急开关带来新的故障点, 具体设计如下:

(1) 在程序尾端增加两步, 使用MOV指令强制向D160与D190传输50与250数值, 并利用M545与M546触发, 如图10所示;

(2) 在人机交换界面中, 增加应急旁路界面, 利用触摸屏按钮触发M545与M546, 如图11和图12所示。

通过上述设置, 一旦机车出现机油或水温信号丢失故障时, 司机可调出应急旁路界面操作, 使机油油压与冷却水水温恒定在250bar和50°C, 避免PLC的报警程序触发, 司机则通过另一套仪表读取柴油机的真实数据, 对机车进行操作, 待机车回厂后再进行维修。

3 结束语

本文介绍的内燃机车属地铁早期采购设备, 与后期机车相比, 程序相对较少且不够完善, 尤其体现在故障诊断与电器动作信息收集方面, 因此, 在完成上述程序添加及界面改进后, 下一步的完善重点应放在此处, 一方面使司机能尽快判断故障点, 同时可使维修人员能进一步掌握机车的使用特点与运行状态。另随着地铁作业的要求提高, 也可考虑利用PLC程序的改进, 实现内燃机车的双机重联, 即两台内燃机车连挂后, 只在一台内燃机车上操作, 可使两台内燃机车同步运转, 增加动力机车的牵引力。

参考文献

[1]廖常初.FX系列PLC编程及应用[M].北京:机械工业出版社, 2005.

基于宏程序的孔系加工程序优化设计 篇6

孔系的加工在生产中比较普遍, 在企业不断追求降低成本的今天, 在保证质量的前提下, 如何提高零件加工的效率, 是对加工程序编制主要要求之一。在一定的切削用量条件下, 尽量缩短走刀路线, 减少空行程, 对提高孔系加工的效率极为重要。宏程序可使用变量进行程序的编制, 并具有算术与逻辑运算功能, 可比较不同走刀路线的长度, 从而选择最短的路线进行编程, 保证以最短的走刀路线进行加工, 提高零件加工的效率。

1 孔系走刀路线长度计算数学模型的建立

在如图1所示孔系中, 左下角第一个孔在XY平面内的坐标为 (c, d) , 孔系共有n行, m列, 每行对X轴倾斜角度为α, 每列对Y轴倾斜角度为β (α, β取值有正负之分, 逆时针为正, 顺时针为负) 。其两种主要走刀路线为:1) 按行加工, 一行一行地逐步加工完整个孔系, 走刀路线如图2所示;2) 按列加工, 一列一列地逐步加工完整个孔系, 走刀路线如图3所示。设沿孔系的中心线孔距分别为a、b, 则按行 (列) 加工时孔与孔之间走刀路线的总长度计算数学模型为:s行= (m-1) na+ (n-1) b;s列= (n-1) mb+ (m-1) a。

依据该数学模型, 利用宏程序可比较两种方式走刀路线的长短, 然后选择最短的走刀路线进行编程加工。

2 孔系优化加工程序的设计

设孔深为h (只取正值) , 孔加工进给速度为f, 编程坐标系设在孔系顶面。主程序中调用宏程序的指令为:

宏程序如下:

3 结语

利用宏程序的算术及逻辑运算功能, 能对不同工艺方案走刀路线的长度进行运算与比较, 从而选择最短的走刀路线进行编程, 实现对程序的优化, 可提高零件加工的效率, 降低制造的成本。

参考文献

[1]袁周华, 袁永富.数控机床操作实训[M].北京:中国农业出版社, 2006.

[2]袁永富, 熊福林.偏心轴零件的数控车削加工研究[J].煤矿机械, 2009, 30 (8) :126-128.

[3]袁永富, 熊福林.基于最短走刀路线的数控加工程序优化设计[J].机床与液压, 2010, 38 (12) :33-38.

[4]胡俊平.宏指令在孔系加工中的应用[J].机械工程师, 2010 (1) :91-92.

出厂水泥质量确认程序优化 篇7

《水泥企业质量管理规程》中第二十九条规定, 由于出厂水泥和水泥熟料检验结果滞后, 企业必须建立出厂水泥和水泥熟料质量合格确认制度, 经确认合格后方可出厂。我公司把有效的执行质量传递信息制度、运用出磨水泥Ca O回归法控制水泥混合材掺量、建立出厂水泥质量确认点检表、积累岩相分析数据、水泥颗粒分布及磨机管理系统数据, 作为水泥质量确认依据。本文针对水泥企业优化出厂水泥质量确认程序进行探讨。

1 出厂水泥质量确认方式的选择

我公司年生产水泥1 200万t, 6台4 500t/d窑 (目前生产的有4台窑, 5号、6号窑基本建好, 2015年10月投产) , 8台水泥磨 (Ф4.3m×13m) , 均化设施先进完善, 有6个熟料库 (20万t/个) , 18个水泥库 (2万t/个) , 熟料、水泥库可分别互通搭配。化验室采用了试验积累数据、水泥质量检验站对比数据、出磨水泥指标和出厂水泥指标相结合确认出厂水泥质量。

2 出厂水泥质量确认程序的优化

2.1 有效执行质量信息传递制度

2.1.1 制定严于国标的企业标准

为确保出厂水泥质量符合国家标准规定要求, 集团公司制定了严于国家标准规定的内控标准指标, 基地公司严格执行集团公司的要求, 同时还制定了有效的质量信息传递制度, 见表1。部门每月组织员工学习该表且考试, 纳入月度绩效考核。

2.1.2 运用先进信息平台

我公司还运用ERP (企业资源规划) 系统, 对水泥质量确认起到了立竿见影的效果。我公司的ERP系统是IBM公司的系统软件, 以系统化的管理思想, 为企业决策层提供决策运行手段的管理平台, 目前主要涵盖HR (人力资源系统) 、成本核算和质量管理等模块。

ERP系统的出厂水泥质量管理模块工作流程见图1。

公司每位员工都有自己的登录账号和密码, 用密码登录自己的账号后, 各岗位录入各自的检验数据, 控制组员工 (员工有权限级别) 要创建出厂水泥取样编号, 确认取样时间、地点、运输方式、班次、品种规格、其他检验有效性和批量都由系统自动管理, 如:抽样取样时间不超过3天、批次小于4 000t等。分析、物检的员工根据各自分工检验项目将检验结果录入到对应的出厂水泥编号检验项, 如果输入不正确或者超出国家标准 (公司内控要求) 系统将自动报警, 由上级领导决定处理。出厂水泥确认必须由出库主管完成, 出库主管根据水泥品种、出库比例等一一确认方可打印报告单或者数据报表分析。报表分析有变异系数分析、1d与3d强度、3d与28d强度回归分析。

ERP质量模块还有配方管理和配煤任务管理等 (根据自身要求研发) , 在此就不介绍了。

2.2 建立出厂水泥质量确认点检表

出厂水泥指标过程检验确认, 即依据各水泥品种的LOI、SO3、比表面积和细度控制范围, 确认水泥品种。见表2。

我公司位于西江边上, 90%以上的出厂水泥都是散装, 每天要装3~4万t水泥, 而水泥输送斜槽呈网状交错, 24个水泥库与5个泊头可互通, 更换码头、转换水泥品种是不可避免的, 为提高装船效率, 确保输送设备斜槽等是否清洗干净, 只有严格按照以上点检表进行抽查监控, 才能100%保证出厂水泥质量。如:有一次装一船P·O42.5R水泥, 出厂检验水泥LOI为4.86%, 质量调度员立即汇报出库主管, 主管要求停止该船开出港口, 并且要求人员在船上取多个样检验水泥LOI都在4.6%~5.5%之间, 立即要求卸船回磨粉磨搭配, 杜绝了一次质量事故 (经查是库底闸板窜料所致) 。

为保证水泥不窜料, 公司还制定了相关措施, 如:固定码头水泥品种装船、固定磨机生产水泥品种和同一斜槽水泥库装同一水泥品种, 目前水泥窜料现象得到杜绝了。

2.3 运用出磨水泥Ca O回归法控制水泥混合材掺量

目前, 水泥磨台时产量都较高, 实物标秤和静态或动态标秤都是不可靠的, 水泥组分测定也滞后, 应用X-荧光仪或钙硫仪测定水泥中Ca O控制水泥混合材掺量, 稳定水泥强度, 效果显著。

我公司水泥混合材主要有石灰石、铅锌尾矿、火山灰、炉渣。每天根据出磨水泥Ca O、SO3、LOI含量的日平均值, 由出库主管进行回归推算水泥混合材掺量做好台账, 混合材搭配比例按照给定比例或单独计量时按照计量比例, 水泥强度可以得到控制, 混合材掺量波动范围可以控制在0.5%, P·C32.5R水泥28d强度变异系数可以降低到2.0%, P·Ⅱ42.5R水泥28d强度变异系数可以降低到1.3%以下。每月与运行部盘点数量相差都在0.5%以内。

3 出厂水泥确认的依据

1) 依据出磨水泥的Mg O、SO3、LOI三项化学指标达到公司内控要求, 判定出厂水泥的化学指标满足国家标准要求。

2) 依据出磨水泥的细度、凝结时间、安定性以及其他用户要求的指标达到公司内控指标或用户要求, 判定出厂水泥的相应指标符合国家标准要求。

3) 依据出磨水泥的1d和3d强度值, 利用回归方程, 推测出厂水泥的3d和28d强度, 达到企业内控要求, 即判定出厂水泥的相应龄期的抗压强度达到国标要求。3d及28d抗折及抗压强度值预测公式确认:y=a+bx。在抗折和抗压预测值都大于内控指标的前提下, 当抗压预测值与实测值相对偏差连续多个>7% (抗折>9%) 时对公式进行修正, 调整a及b;根据出磨水泥1d强度与3d、28d强度关系规律推算出一个1d强度最低值, 当1d强度达到推算的强度最低值或3d强度达到产品标准的规定值, 并确定28d强度完全达到要求;当1d强度达不到推算的强度最低值或3d强度达不到产品标准的规定值, 则在与高库搭配后且1d、3d强度达到要求、并确定28d强度完全达到要求后方可出厂。

4) 依据出厂水泥过程检验的比表面积/细度、SO3、LOI和Ca O四项指标达到公司内控要求, 判定出厂水泥的化学指标满足国家标准要求。

在以上均达到企业内控要求时, 即可判定出厂水泥符合国家标准要求, 由质管部出具出厂水泥通知单, 方可进行包装或散装出厂。

4 注意事项

1) 质量信息传递制度的执行必须与企业文化、绩效考核相结合, 否则会形同虚设, 起不到效果。

2) 出厂水泥指标过程检验确认可根据企业自身设置具体检验项目, 主要选择能区分水泥品种的关键指标。

3) 用出磨水泥Ca O回归法控制水泥混合材掺量, 必须稳定混合材品种、石膏来源, 且每月要与物料平衡对比验证, 超出1%范围要找原因。

5 结束语

1) 水泥质量确认程序优化后, 水泥质量得到进一步提升, 质量投诉大大减少, 水泥28d强度变异系数稳定下降。

2) 严格执行质量信息传递制度是水泥质量确认程序的关键。

3) 建立出厂水泥质量确认点检表, 可以大大降低出厂水泥混料几率。

4) 控制出磨水泥Ca O, 可以稳定水泥混合材掺量在1%范围内波动。

把握主体系列 优化教学程序 篇8

单元教学是一种系统化、科学化的教学体系, 其核心是通过“教”来达到“不需要教”。它要求教师站在知识系统性的高度上, 遵循知识迁移的原则, 科学地安排教学程序, 使学生在接受知识的基础上, 充分发挥主观能动性, 学会主动学习。系统论的原理告诉我们, 整体的属性和功能, 并不等于构成整体的诸要素孤立状态下的属性和功能的简单相加。也就是说, 单元教学不是单篇讲授之后再总结相加的简单过程, 它要求我们在实施教学时, 从整体确定目标, 研究并掌握各个单元的教学要求及内部知识结构, 科学地安排讲读、导读、自读、训练及考查等课型, 这样就避免了单篇教学的单一性和随意性等局限, 具有拓宽范围、扩大视野、启发“自力”、培养智能等优点, 能充分调动学生的积极性, 促进学生合理的认知结构的发展, 使学生的认识过程简约、迅速、质量高, 自然有利于提高语文教学的效率。

以上述理论作指导, 我们采用了“知识结构单元教学法”。它从知识结构的系统性出发, 遵循教材中对各职中学生语文知识和能力的层次要求, 把握语文教学内容的主体系列整体有序地安排教学过程。在实施知识结构单元教学的过程中, 准确地把握主体系列, 科学地安排教学程序是两项十分重要的工作。

首先是准确把握教学内容的主体系列。教师要认真对职中语文的全部教材加以解剖。横向分析:每一单元都是中学语文整体知识网络中的哪一个或哪几个知识点;纵向分析:听、说、读、写又是怎样地有机结合;了解了全局:考虑每个单元各属于职中语文知识网络中的哪一条线及该条线的哪一个层次;然后再设计每篇课文、每个教学环节怎样同单元总体训练目标有机地结合, 确定各种课型在整个知识体系中和能力训练中所担负的具体任务, 写教案时就把各个知识点挂靠上去。例如, 对小说的教学, 职中阶段的目标就是使学生具备鉴赏能力。而要达到这个目标, 就必须先引导学生去了解小说的特点。职中语文课本中有小说单元, 每个单元各有教学重点, “小说特点”的问题又难以一下子搞清。在设计职中的教学内容时, 考查只考查了一个知识点、小说中的人物典型艺术形象的塑造。通过课文的教学, 引导学生明确人物形象在小说中举足轻重的作用以及塑造有血有肉、生动感人的人物形象的多种手法。而在其他小说单元的教学中, 仍以人物形象分析为主, 但注意变换角度, 由“作者怎样塑造了什么特征的人物”转向“人物不是生活在真空中”“人物活动是发展的过程”“人物形象上寄寓着作家的人生理想和创作意图”等方面。同时了解小说的“环境描写”“情节设计”“主题表达”等知识点, 由点到面, 形成完整的知识结构, 为学生“鉴赏”打好基础, 再从“生活体验”和“审美观”几个方面稍加点拨, 就可达到教学目标。

其次是科学地安排教学程序。我们一般采用“四环节”单元教学程序。这四个环节是:总体初探、重点讲授、综合训练、总结巩固。在“总体初探”环节中, 我们设计启发提纲, 也叫“学案”, 让学生明确单元学习目的、方法、步骤, 使教与学合拍。同时向学生提供引导性和探索性的辅助材料, 以避免教学中的盲目性。问题的设计要既能引发学生兴趣, 又能蕴含知识点于其中。我们用“启发讨论”的方式引导学生带着学案中的问题去阅读《天山景物记》, 在老师的启发下过关;用“点拨自学”的方式引导学生基本上独立完成对《时钟》的分析;而《故都的秋》则在学生完全自读之后, 教师有侧重地加以释问明确。“总结巩固”环节, 以考查为主要形式, 通过适当的测试和写作, 检查知识掌握及运用是否达到所定目标, 针对实际, 查漏补缺, 以保证学生获取知识结构的完整性。

教学中, 课内文章和教师提供的课外文段, 都是用来分析、判断、类推、训练的例子。弄清知识结构是“举一”, 掌握和灵活运用知识是“反三”, 不只弄懂一篇课文或几篇课文, 而是完成对知识和技能加以重组与扩大的横向迁移。还有, 训练要注意课文与编选材料的有机组合, 训练题目多用分析笔答形式, 少用或不用选择题型, 以充分开阔学生思路, 提高能力;写作训练应是阅读写作的综合训练, 不可一味地以写练写。再者, 语文基础知识的考查, 要有机地渗透于整个教学程序中。比如“修辞”知识、炼词、择句、辞格是各种文体都涉及的, 我们就根据它们在各种文体中的运用情况, 有计划地考查, 让学生弄清楚不同文体对修辞的不同要求, 从而掌握对词语、句式的具体运用。学生对一个知识点的学习掌握, 往往不是通过一两个单元的学习所能完成的, 还需要多个单元综合学习, 这样才能使学生把知识点串联起来, 使之系统化、结构化, 完成知识的纵向迁移, 形成完整的知识网络。

对知识的掌握和运用, 需要不断地反复。学生在日常学习中, 虽然形成了知识网络, 但不可避免地存在着模糊和“错节”, 要保证职中学生的语文学习效益, 复习是一个重要过程。复习时, 把一个单元或一册书从头再来一遍是没必要的, 也是不现实的, 最好采用梳理的方式, 使学生对知识有个再认识的过程。比如, 职高最后阶段的总复习, 可把语文知识分成两大单元——基础知识和文体读写。在基础知识大单元中, 分成九个小单元:语音、文字、语汇、短语、句子、段、修辞、标点和文化与文学常识等, 引导学生再次去认识这些知识点在整个网络中的地位和作用, 以及它们之间的内在联系, 认识它们在独立为点和点点相连的不同情况下的实际运用, 从而掌握规律性。在文体读写大单元中, 也分记叙、说明、议论、小说、散文、诗歌、戏剧、应用文和文言文等九个小单元。从课内和课外选择典型例文, 引导学生理清一种文体内部的知识结构, 明确其特点, 再从体裁、题材、风格、立意、结构、表达、写法、语言等方面搞清异同, 既可以使学生掌握不同文体的阅读和写作, 又能使他们认识到各个基础知识点在具体文体中运用的作用。经过以上的“梳理”, 弥补漏洞, 修正“错节”, 可以使学生形成经纬分明的知识网络, 然后, 教师再精心选编相应的考练题, 进行强化训练和考查过关。

ASP程序的编写与优化 篇9

ASP是Microsoft公司推出的基于PWS&IIS台的、基于ISAPI原理的动态网页开发技术,目前日趋成熟完善。ASP的诱人之处就在于它提供了一种简单易学的脚本,并带有许多内置的对象,从而提供了一条简捷的编程之路。本文仅就编程代码优化来进行一些简单讨论。

(二)几种编程代码的优化方法

1. 声明VBScript变量

在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数、方法,这样给扩展ASP的现有功能提供了很大便利。由于ASP中已经模糊了变量类型的概念,所以,在进行ASP与vbscript交互的过程中,很多程序员也惯于不声明vbscript的变量,这样加重了服务器的解析负担,进而影响服务器的响应请求速度。鉴于此,我们可以象在VB中强制用户进行变量声明一样在vbscript中强制用户进行变量声明。实现方法是在ASP程序行首放置<%optionexplicit%>。

2. 对URL地址进行编码

在我们使用asp动态生成一个带参数URL地址并进行跳转时,在IE中解析很正常,但在NetScrape浏览时却有错误如下:

3. 使用字符串建立SQL查询

使用字符串来建立查询并不能加快服务器的解析速度,相反,它还会增加服务器的解析时间。但在这里仍然推荐使用字符串代替简单的查询语句来进行查询。这样做的好处是,可以迅速发现程序问题所在,从而便利高效地生成程序。示例如下:

4. 使用adovbs.inc文件中定义的常量打开记录集

打开记录集时,可以定义记录集打开的游标类型和锁定类型。在adovbs.inc文件中定义了一些常量来定义这些类型。adovbs.inc文件保存在inetpubiissamplesIISamples目录下面。下面列举几个常用的游标类型和锁定类型。

游标类型:adOpenFowardOnly游标只能向前;adOpenKeyset游标可向前或者向后,如一用户添加记录,新记录不会出现在记录集中;adOpenDynamic游标动态随意;adOpenStatic记录集不对其他用户造成的记录修改有所反映。

锁定类型:adLockReadOney不能修改记录集中的记录;ad Lock Pessimistic在编辑一条记录时锁定它;adLockOptimstic调用记录集Update方法时才锁定记录;adLockBatchOpeimstic记录只能成批更新。

5. 避免在使用global.asa文件中进行对象定义

由于global.asa文件中的内容可以为站点内所有文件引用,无疑,在global.asa文件中进行对象定义可以省去很多重复工作。比如在global.asa中的application_onstart函数中进行如下定义:

但这样做的同时也有很大的负面影响,由于Application和session变量都只有在关闭网站的时候才释放占用的资源,所以session参数会浪费大量不必要内存,而且此时application变量成为服务器性能的瓶颈。解决方法:建立定义对象asp页面,在需要进行调用这些对象的页面上,引入这张asp页面。假设定义对象的asp页面名称为define.asp,则只要在对应asp页面中加入以下语句就能引入该页面。

在进行页面引进时,最好在待引进的asp文件中不要包含<%@LANGUAGE="VBSCRIPT"%>语句。因为在asp文件中,只能有一句由@来定义的脚本解析语言。

(三)结束语

以上几种方法,是在写程序过程中的一点心得体会。还有在ASP编程过程中两点简单的安全注意事项。建议以asp作为引文件的扩展名。当这些代码在安全机制不好的WebServer上运行时,只需在地址栏上输入引入文件的地址(inc为扩展名),就可以浏览该引入文件的内容,这是由于在WebServer上,如果没有定义好解析某类型(比如inc)的动态连接库时,该文件以源码方式显示。

不要把数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,为数据库建立DSN(DateSource Name),而在进行数据库访问时直接访问该DSN。

摘要:ASP是Microsoft公司推出的基于PWS&IIS平台的、基于ISAPI原理的动态网页开发技术,目前日趋成熟完善。文章仅就编程代码优化来进行一些简单讨论。

关键词:ASP,编程,优化

参考文献

[1]赵增敏.ASP.NET程序设计教程[M].机械工业出版社.

[2]朱印宏.ASP.NET2.0基础与实例教程[M].中国电力出版社.

上一篇:课程共享下一篇:高职院校学生数学建模