引用
引用第7楼wwcwwc于2010-05-15 08:00发表的 :
看了你的程序我说说个人观点,尽供参考。
因为我这里现在没有实体进行测试,可能程序还存在一些问题,望见谅!
1) 子程序结构不够严紧,同样的功能占用字节稍稍偏大(可能是编程习惯问题)。相同的功能用这样调用子程序做法是可行的。程序尽量采用指令方式编写。直接能够使用输出条件的网络段程序尽量少用(寄存)跳转等方法,这样对于程序的阅读有帮助。手/自动转换条件功能最好不要写到子程序的调用中。
2) 主程序(OB1)中功能的启动条件既然用上升沿脉冲控制位,则子程序中应该用相应的置/复位指令。我是沿用你的主程序编法进行。特别是一些手动操作时正反转频繁的场所,需要解决置位后的复位问题。同时可能会造成调用自动操作时,相关的输出位不能有效复位。补救措施见第4项内容。启动信号条件最好用变址方式,把必要的程序逻辑关系做在一起,紧凑程序。
3) 急停按钮必须使用B接点(常闭接点,这样可以在平时建立一个检测急停回路正常与否的功能)。
.......
谢谢wwcwwc的回复
我设计这个子程序的初衷就是为了方便一键启停的操作,像C语言似的,只要把一些相关的输入输出信号都列出来,因为这些设备基本类似,所以不要再多考虑,直接调用子程序。
但现在遇到这样一个问题,(原来我发的那个是有连锁条件的),只要第一个启停按钮一按下,后满所有的设备就立即启动了,按照我的理解,应该不会出现这样的情况,我的子程序调用的条件里面有个启停的上升沿的,没有按那个上升沿后面的设备应该是启动不了的,后来我推断应该是子程序的问题,我猜想因为每个都调用的一个子程序,第一个调用只有,输出局部变量变化了,第二调用的时候,直接把这个输出局部变量给输出呢?按照S7-200的说法,对这个局部变量还不是很吃得透。
我的急停按钮在电路上是,常闭接的二次回路,常开接的PLC,选用的是1NO1NC的按钮。
还请WWCWWC网友帮忙考虑考虑我以上描述的问题!
前面有一位网友修改的程序我也实际测试了一下,确实符合我的要求,但是我移植到我的项目中就不行了。也不明白是什么原因。