各位老师,我想把FB中的字形参拆开进行位的读写,怎样才能实现?
问题补充:
你说的是实参吧?我说的是FB里面自定义的形参,比如我用一个字Motor来存放电机的控制位和状态位,我在FB里面怎么才能把这个字拆分成位来读写呢?
最佳答案
如果你的这个FB没有重复调用,也就是只调用了一次的话,你可以打开背景DB找到motor所对应的实际地址,比如DB1.DBW2,那么对应的位就是DB1.DBX2.0~~~DB1.DBX2.7。
但是如果你的该FB有重复调用,那么DB1.DBW2虽然对应的还是motor,但是其值对应的却是最后一次调用的那次对应的控制字值。这样的话,就建议你在你的FB里加条指令,把你的motor也就是控制之MOVE到另外一个存储区(比如形参取名:motor_m,多次调用FB时候,给这个motor_m赋值到不同的M区,比如第一次调用的用mw10,第二次调用的用mw12……等等)。那么对应的位就是m10.0~~~M10.7以此类推。当然,如果你的FB就调用了一次的话就不存在这个问题了。
提问者对于答案的评价:
没有我想要的答案,你写的最多,给你吧。
我是在FB里面对字类型形参进行拆分读写,不是在FB外面调用后读写,你们说的都是调用之后再读写。
最佳答案作者回复:
你说的那样应该是不行的,你想啊,只有存储区了才能按位读取,你的motor必须对应DB里面存储区之后才能实际使用,FC里面的形参也只有对应实际的地址之后才能使用。光motor本身的话,确实是分开不了的。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc238167.html