Getting ACP10 Error text using ncaction?

Dear Experts,

I’m using a bit old-fashioned system system with ACOPOS 8V10xx series drives (with AC114 module) and APC10 Motion version 3.13.1 with X20CP. The motion is controlled using the calls to NC Manager (ncaccess and ncaction functions).
Everything works quite well and I got quite a bit acquainted to various NC Manager subjects and actions. But I do have a problem in obtaining the text (English) for various error messages (for example, codes like 4005, 7219 and so on).

I’m using the following call to the ncaction() functions:

ncact_status := ncaction(nc_obj_ptr, ncMESSAGE, ncTEXT);

and the status is returned as ncOK. But the following value in the NC object structure

nc_obj.message.text.status.error = 1

and the nc_obj.message.text.parameter.data_adr value never gets equalt to anything but 0!

However, the following call to ncaction() like this:

ncact_status2 := ncaction(nc_obj_ptr, ncMESSAGE, ncACK);

gets processed properly and 1 error code is dismissed.

Can you please help me to understand what am I doing wrong regarding the text message lookup (in English)? What should I change in my software?

Please not that I would like to stay old school and use the NC Manager (not PLCopen) with ACP10 (not mapp-motion).

I checked that the module “acp10exten.ext” module is downloaded to the CPU.
Also, error message text is displayed properly in the SDM web page:

Could you please check and provide me with some course of actions on how to solve this issue? I would appreciate any recommendations or help or pointers to bits of useful information!

Thank you and Best Regards,
Alexander

You have to write a pointer to this data_adr and also define the length of this buffer before the ncaction.

ErrorText : ARRAY[0…3] OF STRING[79]; (Error Text)
columns := 80;
data_adr := ADR(ErrorText);
data_len := SIZEOF(ErrorText);

2 Likes

Hello Alexander,

the overview of the axis structure is helpful in this case and can be found here: ACP10AXIS_typ

test.status.error = 1 means that the address for the text buffer is 0.

If I remember correctly we usually used a buffer of 4 lines with 80 characters each (array of 4 char[80]) .

The parameters are as follows:
parameter.format = < whatever works best for you >
parameter.colums = 80 (characters per line)
parameter.data_modul = < name of error text data object on PLC >
parameter.data_len = 320 (4 lines with 80 characters each)
parameter.data_adr = ADR(buffer)
parameter.record_adr = 0 (only used when a saved error data record’s text should be determined)

3 Likes

Hello Corne,
Thank you very much for the clear and precise information. Very helpful!

Best Regards,
Alexander

Hello Martin,
Thank you very much for the excellent and detailed information that really helped me to solve the problem!

Best Regards,
Alexander

1 Like