How to use OPC UA method with complex input parameters

I'm working for a Siemens RFID with model RF186C, I use OPC UA to connect with it, PLC works as OPC UA client, now the connection is established, I can read variables from the reader, but If have to use method call to read tag and write tag, If I want to use method call for read tag, I need assign some input and output parameters(arguments), the ReadTag method declared in reader is as following:

ReadTag (
[in] ScanData Identifier
[in] CodeTypeDataType CodeType
[in] UInt16 Region
[in] UInt32 Offset
[in] UInt32 Length
[in] ByteString Password
[out] ByteString ResultData
[out] AutoIdOperationStatusEnumeration Status);

the problem is that there are some structures in the parametes which is not present in TwinCAT, for example I did the first parameter Identifier

VAR
_identifier : DWORD;
END_VAR

_paramCounterIn := _paramCounterIn + 1;
_paramListIn[_paramCounterIn].IsString := FALSE;
_paramListIn[_paramCounterIn].pString := ADR(_identifier);
_paramListIn[_paramCounterIn].ParamAdr := ADR(_identifier);
_paramListIn[_paramCounterIn].ParamSize := SIZEOF(_identifier);
_inputArgInfos[_paramCounterIn].DataType := eUAType_UInt32; 
_inputArgInfos[_paramCounterIn].ValueRank := -1; 
_inputArgInfos[_paramCounterIn].ArrayDimensions[1] := 0; 

but it failed, sometimes it throws following error, does anyone have experience for method call with Opc UA, please give me some instruction, thanks!

0x E4DD 0105

UAC_E_ITEMTYPE

Invalid or unsupported item type

 

Best reply by inactive_member

Some platforms can have variant types, which cannot be handled by Beckhoff so far and will never be supported. I had this experience with Arburg's moulding machines. The only solution was to write a helper application in C#, communicating with the PLC over Ads.

Maybe in your case you have similar problems with Siemens.

View original
7 replies
Resolved