恭喜,你发布的帖子
发布于 2018-10-22 13:02:08
30楼
曾经也试过用接口 inout 传送配方、参数。方法是 建立数组DB,固定其数组0 与 FB 交换数据。这时,每次调用,数组0的数据总是最新的。HMI 也与数组0打交道。需要的时候,保存到原来的数组 n 中。
尽管这样也行,但是要在外部做 确认与取消。数组的类型 有时还得做成UTD,反而觉得更麻烦。
后来发现,西门子提供的许多 FB功能块,只把常用的(每次调用都要使用的)做在接口上,不常用的、设置类型的,放在背景DB的静态变量中。再后来发现,西门子提供的封装功能块FB接口越来越简单,像原来放在接口上的IP地址呀,端口呀,PID的参数呀,都“收”到其背景DB的静态变量中了。
另外,像驱动的 Drive 功能块,常用的都是控制字、状态字,好多都是位操作。接口使用位Bool。当我使用8/8PZD时,这功能块接口成什么样了?对于那些简单应用来说(启动、停止、速度给定)烦不烦呀。
(尽管可以使用默认参数)
所以这种功能块,还是仅将常用的做成位Bool,其他的也只是传送字。你还得外部将它们分解成位。
甚至有些功能块的诊断状态,还得从其背景数据块中取得。
静态变量虽然可以全局使用,但本质上还是局部变量
请填写推广理由:
分享
只看
楼主