有网友将我的博客日志“为什么不能用循环中断组织块OB35来取代主程序OB1”转帖到西门子的S7-300/400论坛,日志最后一句是“虽然删除OB1也不会报错,但是绝对不能用OB35取代OB1。”有网友说“用‘绝对’来讨论这个问题,显然不合适。”
“绝对”这个词的确使用不当。日志的标题本来以“绝对”开始,发出以后我觉得不妥,很快将“绝对”改为“为什么”,但是没有注意到日志结束时还有一个“绝对”。
当初用“绝对”二字,主要的原因是我认为这个问题很重要,想用“绝对”来强调问题的重要性。
PLC循环调用主程序,有中断事件出现时立即调用中断程序,这是PLC最合理、最科学的运行模式,S7-200是不允许删除自动生成的主程序的,由此可见主程序的重要性。
主程序是循环调用的,每次循环的时间可能是变化的,两次调用之间无间隙时间。OB35是按精确的时间间隔循环调用的,如果没有OB1,两次调用OB35之间可能有较大的时间间隙。在时间间隙内,CPU可能在不断地读写过程映像输入/输出。
有网友说:“我的程序全部用CFC完成,生成的代码在OB35中执行,没有OB1,照样运行得很好。”CFC程序是用来处理模拟量和闭环控制的吧,PID功能块一般放在OB35。
虽然S7-300没有OB1也可以运行,但是这种运行方式并非是最优的,与PLC的基本运行模式背道而驰。控制系统一般都有开关量控制程序,将后者放在OB1的响应快速性比放在OB35好得多。
我已将日志的最后一句改为“虽然删除OB1也不会报错,但是将程序分别放在OB1和OB35更为合理”。