quote:以下是引用步步高DVD在2010-12-02 13:31:49的发言:quote:以下是引用寒音在2010-12-02 00:50:51的发言:
#zi_dong 是OB1的临时变量,还是FC14的临时变量?
#zi_dong 是FC14的临时变量,OB1应该是没有临时变量的吧,只有全局变量了
如果#zi_dong 是FC14的临时变量,那你的程序就不对了。
关开临时存储区的值,假设一个程序中有两个程序块,FC1和FC2。假定FC1的临时变量L1的地址是A。在PLC上电时,地址A内的值是0。当调用FC1,并对L1赋值为1,则地址A内的值变成1。FC1执行结束后,地址A被释放,但其中的值不会自动清零,仍保持为1。然后OB1继续调用FC2。在FC2中,地址A被分配给FC2的临时变量L2,则L2的初值为1,不是0。
根据FC2中是否对L2赋值,会有两种结果。
当FC2中未对L2进行赋值操作,则地址A中的值保持为1。再次调用FC1时,L1的值保持为上次执行时的值,FC1的运行结果正确。
当FC2中对L2进行了赋值操作,如将L2清零,则地址A中的值变为0。再次调用FC1时,L1的值不再是上次执行时的值1,而是0,则FC1的运行结果就会出错。