西门子模块6ES7212-1AE40-0XB0详细说明
西门子模块6ES7212-1AE40-0XB0详细说明
、产生单脉冲和连续脉冲的程序
(1)产生单脉冲的基本程序
(2)产生连续脉中的基本程序
在程序设计中,也经常需要一系列连续的脉冲信号作为计时器的计数脉中或其他作用。
如上图是利用辅助m0产生一个脉宽为一个扫描周期,脉冲周期为两个扫描周期的连续脉冲。该梯形是利用plc的扫描工作方式来设计的当x000常开触点闭合后第一次扫描到m0常闭触点时它是闭合的,于是m0线圈得电。当第二从头开始扫描,扫描到m0的常闭触点时v线圈得电后常闭触点己经断开,m0线圈失电。这样mo线圈得电时间为一个扫描周期。m0如此循环(当x000闭合时)
如上图是利用定时器t0产生一个周期可调节的连续脉中。当x000常开触点闭合后,第一次扫描到t0常闭触点时,它是闭合,于是,t0线圈得电,经过1s的延时,t0常闭触点断开;t0常闭触点断开后的 下一个扫描周期中,当扫描到t0常闭触点时,因它已断开,使t0线圈失电,t0常闭触点又随之恢复闭合,如此循环,可得到为1s的连续脉冲。
2、时间控制程序
fx2n系列plc的定时器为接通延时定时器,即定时器线圈通电后,开始延时,待定时间到,定时器的常开触点闭合,常闭触点断开。。在定时器的触点瞬间间复位。利用职权plc中的定时器可以设计出各种各样的时间控制程序,其中接通延时和断开延时控制程序。
如上图程序为接通延时控制程序运得过程是:定时启动信号x001接通,定时器t0开始定时,经过10s延时,t0的常开触点接通,使输出继电器y0线圈得电,y000常开触点闭合。x001复位,t0线圈断电,其常开触点断开,输出继电器线圈也失电,y000常开触点断开。如果x001接通时间够10s,则定时器t0和输出继电器y000都不动作。
如上图为限时控制程序,运行过程是当启动定时信号x000接通后,定时器t1和输出y001线圈得电,同时t1定时器开始定时,经过10s延时,t1常闭触点断开,y001常开触点闭合恢复为断开。
如上图,是另一种定时控制程序运行过程是:当定时启动信号x000接通并且接通时间小于10s后,定时器t1和输出继电器y000线圈得电,因y000常开触点闭合自锁,经过10s延时,t1常闭触点断开,t1线圈和y000输出继电器之失电,t1和y000触点复位。这种限时控制程序的特点是:当定时启动信号x000接通时间小于10s时,则输出信号y000接通时间保持10s,若当x000接通时间大于10s时,则y000接通时间与x000接通时间相同,即输出信号y000*少接通时间为10s(可以设定)。
如上图是断开延时程序的梯形图和动作时序图,运行过程是:当定时启动信号x000接通时,m0线圈接通并自锁,输出继电器y000线圈接通。这时启动信号x000常闭触点断开,而没有定时,当启动信号x000断开时,x000的常闭触点复位,使t1线圈得电,开始定时。经过10s延时后,t1常闭触点断开使m0复位,输出继电器y000线圈失电,y000常开触点断开,断开,从而实现从输入信号x000断开,经10s(定时器常数设定值决定)延时后,输出信号y000才断开。
无论是哪一种时间控制程序,其定时时间的长短都由定时器常数设定值决定。fx系列plc中,编号为t0-t199的定时器常设定值取值范围为:0.1-3276.7s即*长的定时时间为3276.7s不到1h(3600s)如果需要设计定时时间为1h或更长的定时器,则可采用下面的方法实现长时间延时。
如上图是定时时间为1h的时间控制程序,辅助的电器m1用于定时启动控制。从输入触点x000闭合,经过1h的延时,输出信号y000从而实现长时间定时,为实现这种功能采用两个定时器t0和t1串联使用。
注:定时器串联使用时,其总的定时时间为各定时器常做设定值之和。
如上图是采用计数器实现长延时的控制程序。要让计数实现定时功能。必须将时钟脉冲信号作为计数输入信号。时钟脉冲信号,可以由plc内部特殊继电器产生如fx2n系列plc内部的:8011:1ms时钟周期脉冲;m8012:100ms时钟周期脉冲;m801s时钟周期脉冲;m8014:1min时钟周期脉冲;也可能利用连续脉冲控制程序。
该程序的运行过程是:当启动定时信号x000闭合后,辅助继电器m0动作,m0常开触点闭合,m8012时钟脉冲加到c0的计数输入端。当c0累计到1800个脉冲时,计数器c0动作,c0常开触点闭合,输出继电器y000线圈接通,y000的触点动作。从输入信号x000闭合,到产生输出信号y000的延迟时间为:
18000×0.1=1800s=30min.
注:x001是定时停止信号,上式0.1s为m8012所产生的时钟脉中的周期。延时时间由计数器常数设定值和时钟脉冲周期的乘积决定。而延时时间后。*大误差右能就等于时钟脉冲的周期。图中的延时时间*在误差右为0.1s.。要减少延时时间误差,提高定时精度,就必须用周期更短的时钟脉冲作为计数信号。
除了以上介绍的各种基本控制程序外,还有很多这样的程序。它们都是组成较复杂的plc控制程序的基本环节。平时注意积累这方面的经验。有助于扩宽设计控制程序的思路,从而设计出比较复杂的程序。
工程师在平常的程序编写中,会有各种各样的技巧类的方法,有助于程序结构清晰的,有利于程序简化的,更有自我创新的,多多地学他人之长以弥补自己之短,对自己的工作是有十足好处的。
在一个项目程序中,报警程序的编写是不可或缺的,但是如何给相同或类似的报警汇总出一个功能块来,还没有定论,当然有各种各样可以实现的方法,以下是我在平常的程序编写中已经习惯性用的fb报警功能块,感觉有利于程序的简化和统一,分享一下!
以下我的编程环境使用倍福的twincat,如图1所示,它的编程语言符合标准化语言iec61131-3,人性化的编程界面简单易学。
图1.twincat属性
第一个功能块alarm1,功能块实现的是执行器得到输出信号后,但是到位信号在规定时间内未反馈回来,则给出执行器未到位报警,此类报警的应用情况很多,例如拿一个气缸来说:
图2.变量表
var_bbbbb(输入变量):
_control:指plc发出的给气缸的伸出信号;
_signal:指气缸的伸出到位信号;
_reset:指报警复位按钮信号;
_time0:指设定规定时间的设定值;
var_output(输出变量):
_alarm:指气缸异常的报警输出;
var(中间变量):
_ton1:定时;
_tq:定时器输出;
如图2中所示的逻辑程序部分:气缸的初始状态为收回状态,伸出到位检测信号为0,当plc输出给气缸的伸出信号置1后,气缸动作即变为伸出状态,此时正常情况下在规定时间(例如_time0=3秒时),气缸的伸出到位检测信号_signal变为1,此时报警输出状态不变,为false,不会报警;但是如果规定时间已到,即_tq有输出,并且气缸的伸出到位信号未变为1,仍为0,则_alarm信号为true,报警有输出,显示气缸未到位报警。此时如果修复气缸开关,使得气缸的伸出到位信号_signal变为1,则按下复位按钮,即_reset=true,_alarm信号变为false,报警消除。
如果控制信号_control为0的话,报警信号_alarm即变为false。
图3.逻辑控制程序
整体的效果如图4所示。
图4.整体外观图
此类报警应用不**于气缸,又如你电机、电缸等执行器均适用。
第二个功能块alarm2,此报警功能块实现的是执行器的两端在规定时间内同时有信号或同时无信号时,则给出执行器检测开关报警,此类报警的应用情况也很多,同样我们拿一个气缸来举例:
变量表如图5所示:
var_bbbbb(输入变量):
_signal1:传感器信号1;
_signal2:传感器信号2;
_reset:复位信号;
var_output(输出变量):
_alarm:指气缸异常的报警输出;
var(中间变量):
_in0:定时器的使能端;
_ton2:定时时间继电器;
图5.变量表
如图6所示的逻辑控制程序,如果一个气缸的两端信号同时为1,即_signal1和_signal2同时都有信号,或者两者同时都没有信号,即_signal1和_signal2同时为0,则定时器的使能端信号_in0变为true,定时器_ton2开始计时,此例设定定时器的值为1秒,当计时器的时间到后,_alarm信号置为true,使能端信号_in0变为0,当修复气缸两端的检测信号到正常状态时,按动复位按钮后,报警信号会复位,_alarm信号复位为0,报警消除。
图6.逻辑控制程序
如图7所示完整视图,此报警也不仅局限于气缸的操作,同样适用于电机等其它执行器的报警显示。
图7.整体外观图
实际fc块中调用fb块的实例如图8所示,在fc编辑块中将alarm引入,对其输入引脚和输出引脚分别对应赋值,实现对相应执行器的报警显示。
图8.fc块中的alarm块实现
诸如此类的总结在日常工作中还有很很多,只要平时下一点点的功夫,善于总结,勇于与大家交流,将编程的便捷与开扩的思路与众人分享,我们的技术进步指日可待!