程序中有一小段程序是多次使用的,所以把它制作成带参数的子程序以库的形式保存并添加,之后,本意是输入不同的地址后在程序中进行多次使用,可是现在的问题是,这个自定义的指令库用一次可以,要是多次调用就出现混乱,请问我应该怎样做才能达到预期的目的呢?程序大概是定义一个IN或IN-OUT参数,再定义一个OUT参数,然后中间运算或执行的命令参数都用TEMP参数,这样制作成的库预期着只需要在块的IN处和OUT处输入不同的地址就能多次调用,但结果并不能实现,原因好像是这个块一直被使用着,也就是这些参数不能分辨出在哪里使用。请问我应该怎样做才能让CPU判断出我使用同一个块但具有不同地址的操作呢?
问题补充:
按照您说的把输出参数类型改成IN-OUT后问题有改善,但仍然不能准确的执行操作,有时甚至操作几次才能正常输出,就像程序无形中执行很多次,只有偶尔能操作正确,可能是没有复位,但我不理解您用sm0.0复位输出是何用意?能否再详细说明一下复位的意义,那类型的参数需要在执行命令之前进行复位?复位操作是在整个执行过程中都进行还是在某个信号有变化时执行?或者有相关的文档能说明关于库的制作上的注意事项也可以,
最佳答案
这个问题的可能原因是你在调用局部变量时,选择了不合适的局部变量引起。尤其是输出变量的使用,应该使用IN-OUT参数。另外在调用的子程序中的输出变量必须是先复位后再进行控制操作。见图片说明。
补充问题回复:
1)是的。其目的就是想在第2次调用前让输出复位。
2)开始调用时的复位操作。
3)这个实际上是子程序多次调用局部变量使用的问题。
图片说明:
提问者对于答案的评价:
有帮助,谢谢!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc215813.html