部分:代理
这部分 Proxies 定义一个实现代理的功能块。
代理服务器用于不同应用模块之间的数据交换。代理 FB 的实例代表远程应用程序中的模块实例。
SEC Proxies //optional: yes, modifier: [UPDATE]
SEC Proxy : <identifier> //optional: yes, modifier [UPDATE]
FB := <FB name>; //optional: no, type: QID
SEC MirrorVar : <identifier> //optional: yes, modifier [UPDATE])
Variable := <variable name>; //optional: no, type: VarPath
END_SEC
SEC ProxyParameter : <target> // optional: yes, modifier [UPDATE]
Variable := <InstancePath>; // optional: no, type: VarPath
END_SEC
END_SEC
END_SEC有关定义类型语法的详细信息,请参阅 部分 模块声明。
功能块必须派生自
IBaseInstance。功能块必须有一个方法
SetProxyIdentification具有以下签名,该签名不包含在接口中IBaseInstance:SetProxyIdentification(pbyName : POINTER TO BYTE, udiComAddr : UDINT, udiLocalComAddr : UDINT, pEnvironment : MEnv)传递的实例名称和设置的地址必须从属性中返回
InstanceName,ComAddress, 和LocalComAddress。功能块不得派生自
IModule。这部分
MirrorVar允许将模块实例的变量镜像到其代理实例。为此,必须在定义中声明变量的实例路径Variable,必须以相对(相对于模块实例 FB)路径的形式进行说明。以下规则适用于模块实例 FB 的指定变量:该变量必须是模块实例 FB 的变量、输入或输出的一部分。
它必须在模块 FB 以及代理 FB 中定义
两个 FB 中的类型必须相同
它必须有一个原始类型;因此,不允许将指针、接口或结构作为一个整体进行镜像,而只允许简单类型(数字、字符串、时间等)
如果指定的变量满足这些条件,它们将作为 RMP 的一部分自动传输,用户无需再担心传输问题。
这部分
ProxyParameter允许定义代理参数。应考虑以下几点:的目标
ProxyParameter必须对应模块的参数目标这
variable代理模块的变量类型必须与模块参数使用的变量类型匹配。仅允许原始类型和枚举在相应应用程序的初始化阶段,代理参数一次性设置为模块实例中配置的值。当应用程序运行时,这些变量不会镜像到代理中
功能块的名称可以用命名空间路径限定。
SEC Proxies
SEC Proxy ProxyFB1
FB := ProxyModule1;
SEC MirrorVar : diInput
Variable := diInput;
END_SEC
SEC ProxyParameter : InParam1
Variable := TL.Input1_Name;
END_SEC
END_SEC
END_SEC