西门子S7-200子程序,多次调用的“怪”现象
- 格式:doc
- 大小:271.73 KB
- 文档页数:8
在PLC编程中是否可多次调用同一个子程序为什么在PLC编程中是否可多次调用同一个子程序为什么在程序中,多次调用同一个子程序,在语法方面没有什么错误,但我们要尽量避免这一做法,尤其是在带有形式参数时。
下面通过一例来说明。
PLC输入的线间电容引起的误动作▼电缆的各导线间都存在电容,合格的电缆能把此容值限制在一定范围之内。
就是合格的电缆,当电缆长度超过一定长度时,各线间的电容容值也会超过所要求的值,当把此电缆用于PLC输入时,线间电容就有可能引起PLC的误动作,会出现许多无法理解的现象。
主要为:明明接线正确,但PLC却没有输入;PLC应该有的输入没有,而不应该有的却有,即PLC输入互相干扰。
最近,在调试一PLC系统时,就出现了一种现象。
MIC传感器不动作,或动作后,另一传感器(FLY)的动作影响MIC传感器,即:MIC 动作时,FLY传感器一动作,MIC就变成不动作了。
也就是:传感器的动作彼此影响,怀疑是电缆质量不好,线间电容不合要求造成的。
直接把MIC传感器接到PLC,不使用电缆后,一切动作正常。
消除线间电容影响的办法:(1)使用电缆芯绞合在一起的电缆;(2)尽量缩短使用电缆的长度;(3)把互相干扰的输入分开使用电缆;(4)使用屏蔽电缆。
PLC合理编程消除误操作▼(1)消除手指颤动:使用微分指令DIFU(13)来检索按钮送入电信号的上升沿,在一个执行周期里PLC只执行一次,从而避免此类误操作;(2)无意识操作:①优化显示功能,使用不同的指示灯来显示各种不同的工作状态:平光-运行状态,高频闪光(1秒1次)-试验状态,低频闪光(3秒闪1次)-步进状态②输入信号联锁变频器过电压处理一例▼减小给定使电机减速运行时,电机进入再生发电制动状态,电机回馈给变频器的能量亦较高,这些能量贮存在滤波电容器中,使电容上的电压升高,并很快达到直流过电压保护的整定值而使变频器跳闸。
采取在变频器外部增设制动电阻的措施,用该电阻将电机回馈到直流侧的再生电能消耗掉。
SIMATIC S7-200系列PLC适用于各行各业,各种场合中的检测、监测及控制的自动化。
S7-200系列的强大功能使其无论在独立运行中,或相连成网络皆能实现复杂控制功能。
因此S7-200系列具有极高的性能/价格比。
整个PLC 系统与外联设备相接,就构成了一个自动控制系统,接下来就为大家详细的讲解一下,希望对大家有所帮助。
1、CPU异常:CPU异常报警时,应检查CPU单元连接于内部总线上的所有器件。
具体方法是依次更换可能产生故障的单元,找出故障单元,并作相应处理。
2、存储器异常:存储器异常报警时,如果是程序存储器的问题,通过重新编程后还会再现故障。
这种情况可能是噪声的干扰引起程序的变化,否则应更换存储器。
3、输入/输出单元异常、扩展单元异常:发生这类报警时,应首先检查输入/输出单元和扩展单元连接器的插入状态、电缆连接状态,确定故障发生的某单元之后,再更换单元。
4、不执行程序:一般情况下可依照输入---程序执行---输出的步骤进行检查输入检查是利用输入LED指示灯识别,或用写入器构成的输入监视器检查。
当输入LED不亮时,可初步确定是外部输入系统故障,再配合万用表检查。
如果输出电压不正常,就可确定是输入单元故障。
当LED亮而内部监视器无显示时,则可认为是输入单元、CPU单元或扩展单元的故障。
5、部分程序不执行:检查方法与前项相同但是,如果计数器、步进控制器等的输入时间过短,则会出现无响应故障,这时应该校验输入时间是否足够大,校验可按输入时间<输入单元的最大响应时间+运算扫描时间乘以2的关系进行。
6、电源的短时掉电,程序内容也会消失:通过反复通断PLC本身电源来检查。
为使微处理器正确启动,PLC中设有初使复位点电路和电源断开时的保存程序电路。
这种电路发生故障时,就不能保存程序。
所以可用电源的通、断进行检查。
7、PROM不能运转:先检查PROM插入是否良好,然后确定是否需要更换芯片8、电源重新投入或复位后,动作停止:这种故障可认为是噪声干扰或PLC内部接触不良所致。
S7-200系列PLC产品故障检查与处理1.故障检查与处理流程PLC系统在长期运行中,可能会出现一些故障。
PLC自身故障可以靠自诊断判断,外部故障则主要根据程序分析。
常见故障有电源系统故障、主机故障、通讯系统故障、模块故障、软件故障等,一般故障检查与处理流程如附图30所示。
附图30 S7-200系列PLC产品的故障检查与处理流程图2.故障检查与处理(1)电源故障检查与处理PLC系统主机电源、扩展机电源和模块中电源显示不正常时,都要进入电源故障检查流程。
如果各部分功能正常,只能是LED 显示有故障,否则应首先检查外部电源;如果外部电源无故障,再检查系统内部电源故障。
电源故障检查与处理见附表6。
附表6 电源故障检查与处理故障现象故障原因解决办法电源指示灯灭指示灯坏或保险丝断更换无供电电压加入电源电压检查电源接线和插座使之正常供电电压超限调整电源电压在规定范围电源坏更换(2)异常故障检查与处理PLC系统最常见的故障是停止运行(运行指示灯灭)、不能启动、工作无法进行,但是电源指示灯亮。
这时,需要进行异常故障检查,检查顺序和内容见附表7。
附表7 S7-200系列PLC产品故障检查与处理故障现象故障原因解决办法不能启动供电电压超过上极限供电电压低于下极限内存自检系统出错CPU、内存板故障降压升压清内存、初始化更换工作不稳定频繁停机供电电压接近上、下极限主机系统模块接触不良CPU、内存板内元器件松动CPU、内存板故障调整电压清理、重插清理、带手套按压元器件更换与编程器等不通讯通讯电缆插接松动按紧后重新联机(3)通讯故障检查与处理通讯是PLC联网工作的基础。
PLC网络的主站、各从站的通讯处理器、通讯模块都有工作正常指示。
当通讯不正常时,需要进行通讯故障检查,检查内容和处理见附表8。
附表8 S7-200系列PLC产品故障检查与处理(4)输入输出故障检查与处理输入输出模块直接与外部设备相连,是容易出故障的部位,虽然输入输出模块故障容易判断,更换快,但是必须查明原因,而且往往都是由于外部原因造成损坏,如果不及时查明故障原因,及时消除故障,对PLC系统危害很大。
S7-200通讯异常,原因很难猜到,怪不得西门子将它淘汰原创不易,请勿抄袭。
以前我们学习过西门子PLC的分类,S7-200属于西门子准备淘汰的产品,但因为其系统稳定,模块化设计以及可拓展性,价格优廉等优点一直在中国的市场中占据一定的份额。
因此很多人在设计设备时也会把它列入可选项,最近我做了一个S7-200的项目并已投入使用,其功能是与一个大的伺服系统配合使用,那么在运行过程中出现了一个问题。
首先所有的程序已经在办公室内调试成功,将设备试运行了几天后,出现了一个小问题,那就是一个生产工艺的数据丢失了,我准备用调试笔记本连接PLC在线监控,但发现无论如何,这个PLC都无法通讯成功。
熟悉西门子S7-200的人都知道,S7-200的通讯状态一直以来都不太好,经常出现串口找不到等等的错误,所以我将通讯口重置后再连接还是无法通讯,其间更换了编程电缆,更改编程电缆的波特率等全都无法通讯。
没有办法只能尝试最后一招,那就是更换PLC,将一块全新的CPU拿过来以后接电源插端子,然后再建立连接,还是失败了。
正在思考这个问题的时候,生产的人过来催促;“什么时候能修好啊?”“快点呗!”“一会耽误下道工序了”。
我心里一万头草泥马飘过。
最后我觉得可能是我电脑软件的事,终于拿出了跟随我多年的破旧笔记本电脑。
再次尝试还是失败。
没办法,最后只能静静的站在设备面前思考这个问题的原因;这时候生产的人又过来了,balabala.好吧,废话解决不了问题,当他们不存在,我还是静静的站在设备面前思考故障原因吧!“昨天传感器坏了,怎么今天这东西又坏了?”这时候他们的嘴里飘出来的一句话无意中进入了我的耳朵,我突然想起来昨天的一个传感器因为抗干扰能力弱,被伺服系统的强电干扰搞得失灵了。
我灵机一动,将伺服系统的总电源关掉,等伺服系统的电源指示灯灭掉以后,重新连接PLC,这回好用了。
好吧,我收回一万头草泥马,操作人员有时还是起点作用的。
这个CPU距离伺服电机大致有3米远,而且中间还有个S7-200smartPLC,S7-200smartPLC在调试的时候从来没出现过通讯干扰等问题,因此一直没有向干扰的那个方向猜测,大家以后如果遇到通讯连接不好的时候,不妨也找找干扰源,断掉干扰源后再连接。
西门子PLC S7-200常见的71个故障汇总及解决办法西门子PLC概述德国西门子(SIEMENS)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金、化工、印刷生产线等领域都有应用。
西门子(SIEMENS)公司的PLC产品包括LOGO、S7-200、S7-1200、S7-300、S7-400等。
西门子S7系列PLC 体积小、速度快、标准化,具有网络通信能力,功能更强,可靠性高。
S7系列PLC产品可分为微型PLC(如S7-200),小规模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。
西门子SIMATIC系列PLC,诞生于1958年,经历了C3,S3,S5,S7系列,已成为应用非常广泛的可编程控制器。
西门子PLC S7-200系列PLC的基本硬件组成SIMATIC S7-200的应用领域从更换继电器和接触器一直扩展到在单机、网络以及分布式配置中更复杂的自动化任务。
S7-200也越来越多地提供了对以前曾由于经济原因而开发的特殊电子设备的地区的进入。
S7-200系列PLC可提供4种不同的基本单元和6种型号的扩展单元。
其系统构成包括基本单元、扩展单元、编程器、存储卡、写入器、文本显示器等。
1.基本单元S7-200系列PLC中可提供4种不同的基本型号的8种CPU供选择使用,其输入输出点数的分配见表4-11:2.扩展单元S7-200系列PLC主要有6种扩展单元,它本身没有CPU,只能与基本单元相连接使用,用于扩展I/O点数,S7-200系列PLC扩展单元型号及输入输出点数的分配如表4-12所示。
3.编程器PLC在正式运行时,不需要编程器。
编程器主要用来进行用户程序的编制、存储和管理等,并将用户程序送入PLC中,在调试过程中,进行监控和故障检测。
S7-200系列PLC可采用多种编程器,一般可分为简易型和智能型。
简易型编程器是袖珍型的,简单实用,价格低廉,是一种很好的现场编程及监测工具,但。
从西门子S7-200看PLC几大故障的正确处理方法说到PLC故障,先给大家普及下西门子s7200的硬件和工作原理不同PLC有不同的编程方法哦~常用PLC还是三菱和西门子的↓看完西门子plc的硬件结构和工作原理,接下来给大家讲解下PLC 常见的硬件故障原因PLC的硬件故障较为直观地就能发现,维修的基本方法就是更换模块。
根据故障指示灯和故障现象判断故障模块是检修的关键,盲目的更换会带来不必要的损失。
1、电源模块故障一个工作正常的电源模块,其上面的工作指示灯如“AC”、“24VDC”、“5VDC”、“BATT”等应该是绿色长亮的,哪一个灯的颜色发生了变化或闪烁或熄灭就表示那一部分的电源有问题。
“AC”灯表示PLC的交流总电源,“AC”灯不亮时多半无工作电源,整个PLC停止。
这时就应该检查电源保险丝是否熔断,更换熔丝是应用同规格同型号的保险丝,无同型号的进口熔丝时要用电流相同的快速熔丝代替。
如重复烧保险丝说明电路板短路或损坏,更换整个电源。
“5VDC”、“24VDC”灯熄灭表示无相应的直流电源输出,当电源偏差超出正常值5%时指示灯闪烁,此时虽然PLC仍能工作,但应引起重视,必要时停机检修。
“BATT”变色灯是后备电源指示灯,绿色正常,黄色电量低,红色故障。
黄灯亮时就应该更换后备电池,手册规定两到三年更换锂电池一次,当红灯亮时表示后备电源系统故障,也需要更换整个模块。
2、I/O模块故障输入模块一般由光电耦合电路组成;输出模块根据型号不同有继电输出、晶体管输出、光电输出等。
每一点输入输出都有相应的发光二极管指示。
有输入信号但该点不亮或确定有输出但输出灯不亮时就应该怀疑I/O模块有故障。
输入和输出模块有6到24个点,如果只是因为一个点的损坏就更换整个模块在经济上不合算。
通常的做法是找备用点替代,然后在程序中更改相应的地址。
但要注意,程序较大是查找具体地址有困难。
特别强调的是,无论是更换输入模块还是更换输出模块,都要在PLC 断电的情况下进行,S5带电插拔模块是绝对不允许的。
西门子PLCS7-200常见问题故障及解决办法1、西门子Step7Micro/WINV4.0安装在什么环境下才能正常工作?Step7Micro/WINV4.0的安装、运行环境为:WINOOWs2000SP3以上WINOOWsXPHomeWINOOWsXPProfessional西门子plc没有在其他操作系统下测试,不保证能够使用。
2、Step7Micro/WINV4.0和其他的版本兼容性如何?Micro/WINV4.0生成的项目文件,旧版本的Micro/WIN不能打开或上载。
3、siemens200PLC硬件版本有什么区别?二代S7-200(CPU22x)系列也分几个主要的硬件版本。
6ES721x-xxx21-xxxx是21版;6ES721x-xxx22-xxxx是22版。
22版与21版相比,硬件、软件都有改进。
22版向下兼容21版的功能。
22版与21的主要区别是:21版CPU的自由口通讯速率300、600被22版的57600、115200所取代,22版不再支持300和600波特率,22版不再有智能模块位置的限制4、西门子plc的电源改如何连接?在给CPU进行供电接线时,一定要特别小心分清是哪一种供电方式,如果把220VAC接到24VDC供电的CPU上,或者不小心接到24VDC传感器输出电源上,都会造成CPU的损坏。
5:S7-200 PLC的处理器是多少位的?S7-200CPU的中央处理芯片数据长度为32位。
从CPU累加器AC0/AC1/AC2/AC3的数据长度也可以看出。
6、如何进行S7-200的电源需求与计算?S7-200CPU模块提供5VDC和24VDC电源:当有扩展模块时CPU通过I/O总线为其提供5V电源,所有扩展模块的5V电源消耗之和不能超过该CPU提供的电源额定。
若不够用不能外接5V电源。
每个CPU都有一个24VDC传感器电源,它为本机输入点和扩展模块输入点及扩展模块继电器线圈提供24VDC。
子程序调用的常问问题1、为什么指令或者子程序的使能(EN)管脚前没有任何条件时,会有编译错误?当子程序或者指令的使能管脚前面没有编写任何条件时,编译后会出现一个语法错误,如图.无条件调用指令或子程序所示:图.无条件调用指令或子程序上面的编程方式是不被允许的。
如果用户希望无条件调用子程序或者指令,可以使用SM0.0作为使能条件,如图1.SM0.0作为使能条件所示:图1. SM0.0作为使能条件2、为什么子程序已经不激活了,但是子程序的输出没有复位?以下面一个简单子程序SBR_0为例,SBR_0将一个IN类型的布尔变量IN1直接连接到一个OUT布尔变量OUT1。
在主程序中使用M0.0条件调用SBR_0,如图2.子程序输出所示:图2.子程序输出当M0.0为‘1’时,子程序执行,CPU_输入0有信号时,CPU_输出0有信号输出。
此时将M0.0复位,则子程序不再执行,输出OUT1保持子程序最后一次执行的状态,不会被自动复位。
3、在子程序中如果使用了上升沿捕捉时指令,那么此子程序被多次重复调用时,为什么上升沿捕捉逻辑不能正常执行?举一个简单的例子,在子程序SBR_0中声明一个布尔类型输入变量和一个布尔类型的输出变量,输入变量IN1通过一个常开触点连接一个上升沿捕捉指令,之后再连接一个线圈输出到输出变量OUT1。
在主程序中的网络1和网络2中,连续使用SM0.0作为使能条件两次调用子程序SBR_0,子程序的输入输出分别连接M0.0、M0.1、M0.2、和M0.3。
如图3.子程序和主程序内容所示:图3.子程序和主程序内容如果将M0.0复位,M0.2置位,单纯按上升沿捕捉的逻辑,由于没有上升沿跳变,子程序的输出都应该是‘0’。
但是在线监控可以看到M0.1持续为‘0’, M0.3保持为‘1’。
如图4.在线监控所示:图4.在线监控上升沿捕捉指令的工作原理是将本次左侧能流过来的‘1’、‘0’信号与上次指令执行时的状态比较,如果检测到从0到1的变化,则导通。
【分享】为什么使用S7-200 模拟量输入模块时接收到一个变动很大的不稳定的值?
回答:
1. 你可能使用了一个自供电或隔离的传感器电源,两个电源没有彼此连接。
这将会产生一个很高的上下振动的共模电压,影响模拟量输入值.
2. 另一个原因可能是模拟量输入模块接线太长或绝缘不好.
补救措施:
1. 连接传感器输入的负端与模块上的公共M 端以补偿此种波动。
注意: 事前要确定,这是两个电源间的唯一连接。
如果另外一个连接已经存在了,当再添加公共连接时可能会产生一个多余的补偿电流。
背景: 模拟量输入模块不是内部隔离的,共模电压不会大于12V,对于60Hz 的共模干扰是40dB.
2. 使用模拟量输入滤波器:在Micro/Win 中进入"View > System block> Tab: Analog Input Filters". 选择模拟量输入滤波. 选择"Number of samples" 和"Deadband". " Number of samples " 区域包含了由几个采样的平均值计算得出的值。
当N 与" Number of samples "相等时计算该值。
死区(Deadband)定义了允许偏离于平均值的最大值。
①作者简介:李强(1962—),男,云南个旧人,本科,电气高级工程师,讲师,研究方向:电气自动化及PLC控制,变频器等。
DOI:10.16660/ki.1674-098X.2019.04.148浅谈西门子编程语言《子程序的调用》①李强(云南省云锡职业技术学院 云南个旧 661000)摘 要:针对机电专业的学生学习西门子功能编程语言比较困难,功能编程语言经常用到子程序,从子程序的特点,运行方式,举例应用完整技术介绍了子功能编程,写程序时经常用到子程序,它是架构式的编程,学习西门子功能指令的重点和难点。
本文研究分析了西门子编程语言《子程序的调用》,希望为广大读者提供参考。
关键词:程序特点 运行方式 梯形图中图分类号:TP39 文献标识码:A 文章编号:1674-098X(2019)02(a)-0148-021 子程序的特点(1)子程序只有在主程序发出调用指令的时候才运行,运行完毕后,自动返回主程序,所以不用每个扫描周期都执行,这样可以减少整个程序的运行时间,对于一些初始化的程序,写在子程里比较合适。
(2)S7-200 CPU可以写64个子程序(0-63) CPU226XM还可以写128个子程序(0-127)。
(3)子程序可以嵌套使用(主程序中调用子程序,子程序再调用子程序),最大嵌套深度为8级,但是中断程序里不能嵌套子程序。
(4)子程序默认的名称是SBR_n。
(n 子程序编号)也可以修改。
2 子程序的运行方式(1)并列运行,一个程序中有多个子程序,之间没有嵌套的关系,是并列的,只要调用的条件满足,这个子程序就能被运行。
(2)嵌套运行,主程序调用子程序,子程序还可以再调用子程序,这种方式叫做嵌套,最多可以嵌套8层,这种情况下,各个子程序的运行有先后之分。
(3)在子程序中不能使用END (结束指令),每一个每一个子程序在编译时编译器自动在子程序的最后加入无条件返回指令,当用户需要编程实现有条件返回时,可以在子程序使用有条件返回RET指令。
西门子S7-200子程序,多次调用的“怪”现象
(2013-09-09 09:55:26)
转载▼
标签:
分类:S7-200
工控老鬼
s7-300
启程plc培训
s7200
深圳plc培训
西门子S7-200子程序,多次调用的“怪”现象在S7-200编程中,子程序想必大家都用过,使用子程序可以更好地组织程序结构,便于阅读和调试,也可以缩短程序代码。
但是使用子程序也有一些需要注意的地方,除了子程序在同一周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器之外,还有子程序中局部变量的特点,在编程多次调用带参数子程序时要特别注意。
下面就是前些天热线上遇到的一个Case,非常有代表性,在这里跟大家分享。
E:您好,西门子技术支持。
C:您好,我想问下,200子程序是不是多次调用时会不好使?
E:不会啊,您是不是在子程序里使用了沿指令或者定时器?
C:没有啊,我就编了一句很简单的开关程序,开关闭合,线圈导通,然后主程序里调用了两次这个子程序,结果第一个I点闭合了,两个Q点都导通了。
E:(心里活动:看来是和子程序的局部变量有关了,估计客户程序逻辑有问题)那请您描述一下您的子程序吧,我帮您看看。
于是客户描述了一下自己的程序,大致了解了之后告知客户我这边测试下,稍后回复。
客户的程序是这样的:
子程序:是个常见的自保持逻辑,接口参数如红框所示。
图. 01
主程序:调用了两次上面的子程序,实现I0.0和I0.1控制Q0.0的闭合和断开,I0.2和I0.3控制Q0.1的闭合和断开。
图. 02
那么在线测试下程序执行情况,发现果然如客户所描述的,I0.0为1后,Q0.0和Q0.1都为1了。
见下图.03所示。
而如果闭合I0.2,则Q0.0和Q0.1都断开。
图. 03
为什么会这样呢?首先我们先明确子程序局部变量的特点。
局部变量的变量类型分为四种:IN,IN_OUT,OUT和TEMP,局部变量存储区是在子程序调用时开辟的,子程序调用完成,局部变量占用的存储空间释放。
我们来分析下客户的子程序。
在主程序第一次调用子程序时,如果I0.0为1,I0.1为0,它们将自身值分别传给输入局部变量#AA和#BB,子程序中程序逻辑执行如下图.04所示。
此时局部变量#CC值为1,子程序完成,#CC将值传送到输出参数Q0.0上,使其置1。
根据局部变量的特点,子程序第一次调用完成后,局部变量存储区释放。
图. 04
那么当主程序第二次调用该子程序时,开辟临时存储空间,但是此时的存储空间与第一次调用时开辟的不一定一致。
可是,也有可能由于程序简单,仍然使用第一次调用时占用的存储空间。
如果这种情况发生了,那么第一次调用时已经将#CC的L0.2置了1,而此值依旧存在,那么第二次调用时虽然输入参数I0.2和I0.3为0 ,但是#CC(L0.2)为1,由于客户的子程序逻辑有自保持部分,所以最后L0.2的逻辑结果仍然是1。
子程序完成后,#CC将值传送到输出参数Q0.1上,使其置1。
所以就会出现客户反映的那种问题。
那么该如何避免这种情况呢?
大家是否还记得刚刚介绍局部变量参数类型时除了IN, OUT类型外,还有一种类型叫
IN_OUT,这种类型的参数是先读入,然后再写出,这里我们就可以利用它的特点解决上面的问题。
下面对子程序的参数进行修改,将原先的#CC变量类型改为IN_OUT。
如下图所示:
图. 05
主程序结构不变,如下所示,可以看到由于#CC的类型是IN-OUT,它在子程序块的接口位置也转到了左侧输入侧。
图. 06
下面再次将I0.0置1,其他输入都为0,监控程序状态,如图.07所示,可以看到只有Q0.0为1,Q0.1状态为0。
而如果将I0.1置1, Q0.0被复位,Q0.1还是0,这样就符合客户的控制要求了。
图. 07
同样,如果只给I0.2置1,那么也只有Q0.1会亮,不会再影响Q0.0。
了解了IN_OUT类型变量的特点,就不难分析以上的结果。
因为每次调用子程序时,局部变量#CC都会先去读取输入参数Q0.0或Q0.1的状态,所以即使两次调用子程序时,#CC变量使用的同一区域,该区域的值也会在开始被Q点的状态所修改,就不存在两次调用相互影响的情况了。
另外,如果在子程序一开始就添加一条指令,对局部变量#CC进行赋初值(如图.08),也可以避免临时变量区数值不定的问题,您可以尝试测试下
图. 08
所以,在编写200子程序时要特别注意局部变量的特点,一旦出现多次调用不正常的情况,就可以从局部变量的特点出发分析,看看是不是存在隐患。
善加利用IN_OUT变量也许可以解决许多问题。