看了你的程序我说说个人观点,尽供参考。
因为我这里现在没有实体进行测试,可能程序还存在一些问题,望见谅!
1) 子程序结构不够严紧,同样的功能占用字节稍稍偏大(可能是编程习惯问题)。相同的功能用这样调用子程序做法是可行的。程序尽量采用指令方式编写。直接能够使用输出条件的网络段程序尽量少用(寄存)跳转等方法,这样对于程序的阅读有帮助。手/自动转换条件功能最好不要写到子程序的调用中。
2) 主程序(OB1)中功能的启动条件既然用上升沿脉冲控制位,则子程序中应该用相应的置/复位指令。我是沿用你的主程序编法进行。特别是一些手动操作时正反转频繁的场所,需要解决置位后的复位问题。同时可能会造成调用自动操作时,相关的输出位不能有效复位。补救措施见第4项内容。启动信号条件最好用变址方式,把必要的程序逻辑关系做在一起,紧凑程序。
3) 急停按钮必须使用B接点(常闭接点,这样可以在平时建立一个检测急停回路正常与否的功能)。
4) 按我个人观点在调用自动操作功能时,必须先复位手动操作时的有关输出点(按工艺要求选择)。然后再作相关的自动功能操作。反之也然。如在调用自动时首先实现:
LD SM0.0
A I3.3 //手/自动的选择
CALL SBR_1 //自动子程序调用
R Q0.0,7 //意思是复位Q0.0 ~ Q0.7功能。当然也可以根据实际情况选择复位位数内容。
5) 对于报警信息(故障内容)比较多的最好在专门的子程序或者在主程序(OB1)中进行编写。统一在一起编写报警信息,提高效率,减少遗漏。
科行改进程序.zip (10 K) 下载次数:343