IAdsRpcInvokeTryInvokeRpcMethod(IRpcCallableInstance, IRpcMethod, Object, AnyTypeSpecifier, AnyTypeSpecifier, Object, Object) Method
Invokes the rpc method.
Namespace: TwinCAT.Ads
Assembly: TwinCAT.Ads.Abstractions (in
TwinCAT.Ads.Abstractions.dll) Version:
7.0.0+e56d35ccc4675faac24789a4aab60071fc61d470
Syntax
C#
AdsErrorCode TryInvokeRpcMethod(
IRpcCallableInstance symbol,
IRpcMethod method,
Object[]? inParameters,
AnyTypeSpecifier[]? outSpecifiers,
AnyTypeSpecifier? retSpecifier,
out Object[]? outParameters,
out Object?? retValue
)Parameters
|
symbol IRpcCallableInstance |
The RPC callable symbol |
|
method IRpcMethod |
The method. |
|
inParameters Object |
The parameters. |
|
outSpecifiers AnyTypeSpecifier |
The out specifiers (specifying the out types) or NULL. |
|
retSpecifier AnyTypeSpecifier |
The ret specifier (specifying the return value) or NULL. |
|
outParameters Object |
The out parameters. |
|
retValue Object |
The return value of the RPC method./> |
Remarks
The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters inParameters, outParameters, are allowed to be empty or NULL.
Example
The following sample shows how to call (Remote Procedures / Methods) within the PLC.
Dynamic Tree Mode
class RpcCallVirtualProgram
{
/// <summary>
/// Defines the entry point of the application.
/// </summary>
/// <param name="args">The arguments.</param>
static void Main(string[] args)
{
// Get the AdsAddress from command-line arguments
AmsAddress address = ArgParser.Parse(args);
using (AdsClient client = new AdsClient())
{
//client.Synchronize = false;
// Connect to the target device
client.Connect(address);
SymbolLoaderSettings settings = new SymbolLoaderSettings(SymbolsLoadMode.VirtualTree);
ISymbolLoader loader = SymbolLoaderFactory.Create(client, settings);
// Get the Symbols (Dynamic Symbols)
IStructInstance main = (IStructInstance)loader.Symbols["MAIN"]; // Gets the MAIN Instance of the PLC Program
// Call a Method that has the following signature (within MAIN Program)
/* {attribute 'TcRpcEnable'}
METHOD PUBLIC M_Add : INT
VAR_INPUT
i1 : INT := 0;
i2 : INT := 0;
END_VAR
*/
short result = (short)main.InvokeRpcMethod("M_Add", new object[] {(short) 3, (short) 4});
// Call a Method that has no parameter and returns VOID
main.InvokeRpcMethod("M_Method1", new object[] {});
//Browsing RpcMethods
foreach(IRpcMethod method in main.RpcMethods)
{
string methodName = method.Name;
foreach(IRpcMethodParameter parameter in method.Parameters)
{
string parameterName = parameter.Name;
string parameterType = parameter.TypeName;
}
}
}
}
}Reference
IAdsRpcInvoke Interface TryInvokeRpcMethod Overload TwinCAT.Ads Namespace
Beckhoff Automation GmbH & Co. KG 2001-2026