在百度看到很多讨论“西门子S7-200子程序调用定时器”的帖子,有朋友发帖说在子程序中使用了定时器当主程序多次调用该子程序时发现程序的逻辑无法正常执行?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
其实在条件调用子程序中,当停止子程序调用时,如果定时器已被激活计时这种情况下步停止调用该子程序会造成定时器的失控。使用条件调用含有定时器的子程序时,一定要注意定时器的分辨率和时序逻辑,以免造成程序运行错误,如果多次调用该子程序,可能会发生程序失控,这种情况下定时器一般只按照首次被调用时计时。如果用STEP7编写FC块多次调用定时器是没问题的。因为S7-200和S7-300在硬件和软件上都是不同的,没有类比性,在STEP7定义局部变量时定时器可以设置成参数,而MICROWIN中局部变量定义里没有定时器类型,只能用固定编号的定时器。
S7-200的功能确实不够绿色,定时器个数是有限的,但是可以通过写程序来实现定时功能,这样就不存在定时器被多次调用的问题了,定时器实际上就是读取CPU内部晶振的次数,可以用定时器中断或是SM0.5编写子程序。
S7-200是一款通用性很强大的产品,直接提供的功能有限,但是可以不断的思考,通过编程等方式获得产品更大的利用空间。