这是我们造纸厂的驱动控制块,是西门子做的项目。如果截图说不清楚,可以发程序方便的话留个邮箱。
我的问题有这么几个:1.为什么在IN声明类型中找不到DINO这个块号
2.P#1400.0 这些指针从哪里来的?FB是STL建的,应该是源程序吧,应该是能找的到的吧?
3.输入类型:BO IL_RUN1是BOOL型的,为什么可以显示SAFTY SWITCH呢?
非常感谢!
图片说明:
最佳答案
1, 首先在声明变量中找不到DINO这块号,是因为要访问一个数据块,必须先打开它,而本程序采用间接寻址,打开的块号保在声明的变量’#DI_NO’中,且随着打开的块不同而发生改变!
2, 西门子内部区域寻址指针有AR1和AR2,
指针号#1400应该在Dl数据块中的DW1300中,
3对于safety_switch是本程序中的ㄧ个输入信号,是ㄧ个I/o,英文意思是安全开关,因此可接入程序块输入端,没有错!下面我陈述ㄧ下相关知识
西门子中,OB实质上就是赋予任务的程序段,在其他符合IEC61131-3标准的PLC厂牌中,一般将程序段称作为POU,也就是程序组织单元,POU是无法执行的,必须赋给任务Task,才能被PLC执行。
当POU被分配给定时任务时,它就是西门子中的诸如OB35这样的定时任务.....只有被赋予任务的程序段才能被执行,所以西门子中只有OB才能被PLC执行。
接下来说一下FB,FC:
FB,FC的差异在于:FB可以返回多个返回值,通过IN_OUT或者OUT变量。FC只能返回单一的返回值。如果您在编程中做到需要返回多个值得时候,使用FB,否则使用FC的话,那么您的程序跨厂牌是很简单的,反之,几乎需要重写,西门子并不完全遵守IEC规范,其FB,FC的差异实际上并不是很大,甚至于非常小,原因在于西门子仍然允许FC具有FB的特性,且允许FB,FC直接访问全局变量,这样的好处在于程序会很灵活且方便,后遗症是无法进行跨厂牌。
至于DI,DB的差异,由于FB,FC的差异并不明显,所以DI可以认为FB的专属存储区域,这个在其他厂牌中是由系统分配而不是用户干预的,西门子也认识到这一点,在其新的软件中已经更符合IEC规范了。
至于OB与主程序的不同,要看您对于编程的理解了,前面已经描述过,OB实质上就是赋予任务的程序段,不管任务是循环任务还是中断程序,所以,在这种情况下,主程序的概念会有所变化,例如,循环程序中没有程序片段,但是中断程序中有程序,主程序到底是中断任务还是循环任务呢?
FB,FC与子程序的概念其实是类似的。
我已通过电子邮件将来程序的解释和参考资料发给你!
提问者对于答案的评价:
虽然没有解决问题但是还是谢谢你!你的QQ还没有加上,你好保守哦!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc138764.html