Функция рекламы TwinCAT 3 InvokeRpcMethod () не работает и выдает ошибку «Значение равно нулю» для символа - PullRequest
0 голосов
/ 02 июля 2019

Я хочу вызвать / вызвать метод PLC из ADS.

На основе примера, описанного в определении функции (TcAdsClient.InvokeRpcMethod) здесь [https://infosys.beckhoff.com/index.php?content=../content/1031/tcadsnetref/6358337803.html&id=]

Я попытался создать аналогичную функцию на стороне ПЛК и попытался вызвать на стороне ADSне работает и выдает ошибку «Значение не может быть нулевым» для символа.

Ниже описано, как вызвать метод.

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

Да ПЛК работает и клиент подключен. Явозможность доступа к другим переменным ПЛК.Все, что я пытаюсь, это следовать примеру кода, приведенному в ссылке выше.Ниже приводится исключение, которое я получаю по вызову «InvokeRpcMethod ()»

enter image description here

enter image description here

1 Ответ

2 голосов
/ 03 июля 2019

Если вы хотите выполнить удаленный вызов процедур ADS, вам нужно вызвать метод функционального блока, а не метод программы.

Так что просто создайте функциональный блок, скажем, FB_AdsManager и объявите его в MAIN следующим образом:

fbAdsManager    : FB_AdsManager;

FB_AdsManager имеет метод adsRemoteCall (не забудьте атрибут {attribute 'TcRpcEnable'})

Теперь вы можете вызывать метод из вашей программы:

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