【问题标题】:TwinCAT 3 Ads function InvokeRpcMethod() doesn't work and give an error of "Value is null" for symbolTwinCAT 3 Ads 函数 InvokeRpcMethod() 不起作用,并给出符号“Value is null”的错误
【发布时间】:2019-07-04 00:11:12
【问题描述】:

我想从 ADS 调用/调用 PLC 方法。

基于此处的函数定义 (TcAdsClient.InvokeRpcMethod) 中描述的示例 [https://infosys.beckhoff.com/index.php?content=../content/1031/tcadsnetref/6358337803.html&id=]

我尝试在 PLC 端制作类似的功能,并尝试在 ADS 端调用无效,并给我一个错误“值不能为空”的符号。

下面是调用方法的方法。

short result = (short)client.InvokeRpcMethod("MAIN", "M_Add", new object[] {(short)1, (short)4});

是的,PLC 正在运行并且客户端已连接我能够访问其他 PLC 变量。我所要做的就是遵循上面链接中提供的示例代码。以下是我在调用“InvokeRpcMethod()”时遇到的异常

【问题讨论】:

  • 你能更好地解释一下你得到的 value cannot be null 错误吗?您确定客户端已连接等?
  • 我用更多细节修改了我的问题。

标签: plc twincat


【解决方案1】:

如果要进行 ADS 远程过程调用,则需要调用功能块方法而不是程序方法。

所以只需创建一个功能块,比如 FB_AdsManager 并像这样在 MAIN 中声明它:

fbAdsManager    : FB_AdsManager;

FB_AdsManager 有一个方法 adsRemoteCall(不要忘记 {attribute 'TcRpcEnable'} 属性)

现在您可以从程序中调用该方法:

client.InvokeRpcMethod("MAIN.fbAdsManager", "adsRemoteCall", new object[] {});

【讨论】:

  • 谢谢。按照你的描述工作。 (*优于 Beckhoff 过时的文档)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多