对于子程序,其临时变量虽然知道要按先赋值后使用的原则,但对于有中断打断子程序时,若从断点返回继续执行子程序时,其临时变量是否被恢复呢?这一点一直没有明析,因此一直不敢大胆使用临时变量,很多都用全局变量来做,但感觉这样子有点浪费全局变量的空间。
问题补充:
大家所给答案还是分歧为两类
第一种子程序中的局部变量只要依先赋值后使用的原则,中断返回不受影响.
第二种则认为,因局部变量所用的空间是公用空间,中断执行中可能改变了局部变量里面的数据,而中断返并没有恢复这个局部变量的数据
查阅计算机的相关书籍,有提到中断执行后的断点返回问题,使用了堆栈技术保持数据,返回时弹出数据恢复,但这些保护
的数据只提到有寄存器,并没有提到会恢复这种局部变量的数据。
最佳答案
此回答已完善
先赋值后使用是不会有任何问题的。。。。
补充:首先你知道smart局部变量是保持一个扫描周期的是吧,,,中断程序是 发生中断后跳转到中断程序,,执行完中断程序再返回到 跳转的地方,,那这个周期结束了吗???答案是没有的,,那还会出现你所谓的疑问吗????
提问者对于答案的评价:
请教过相关教授,先赋值后使用临时变量没有问题。PLC子程序被中断程序中断,中断程序不会改写子程序中的临时变量。中断程序用临时变量与子程序的临时变量是分开的。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279309.html