局域变量经常困扰一些人士,下面举个简单例子!
如下面的例子:(在OB1中调用FC1,下面为FC1的程序,同时假设其它块没有写M0.2的语句);
A M0.1
= L0.1
call FC2
A L0.1
= M0.2
和
A L0.1
= M0.2
call FC2
A M0.1
= L0.1
当M0.1为1时,m0.2的结果第1个程序为1,而第2个程序却为0,即他们的执行结果是不一样的,(注意他们的语句内容一样,但1,2和4,5行对调),原因为本程序中使用了局域变量,局域变量在调用完后,无记忆能力。而对于第1个程序在调用FC2时离开过FC1,因为调用其它块时块会有临时存储区。(虽然第一个程序因为调用FC2时也有离开过FC1,同时在运行第一个程序时,如果有硬件中断或其它中断,也是不会影响其执行结果的,道理同上)