MC_DigitalCamSwitch

Hello,

I am testing the FB MC_DigitalCamSwitch in order to activate an output when an axis passes through a given position.
As on the real machine the high speed module 8BAC0130 will be installed on the Acopos “Active Power supply” I made a test project with the following config:

My test code is really simple :

PROGRAM _INIT
	mpAxisBasic.Axis := ADR(gAxis01);
	mpAxisBasic.MpLink := ADR(gAxisBasic);
	mpAxisBasic.Parameters := ADR(mpAxisParam);

	mcCamSwitchRef.TrackNumber := 1;
	mcCamSwitchRef.FirstOnPosition[0] := 100.0;
	mcCamSwitchRef.LastOnPosition[0] := 250.0;
	mcCamSwitchRef.Period := 1000.0;
	mcOutputRef.Axis := ADR(gAxis01);
	mcOutputRef.Slot := 2;
	mcOutputRef.Channel := 0;
	mcDigitalCam.Axis := ADR(gAxis01);
	mcDigitalCam.Switches := mcCamSwitchRef;
	mcDigitalCam.Outputs := mcOutputRef;
	mcDigitalCam.TrackOptions := mcTrackRef;
END_PROGRAM

PROGRAM _CYCLIC
	mpAxisBasic(Enable := TRUE);
	mcDigitalCam();
END_PROGRAM

PROGRAM _EXIT
	mpAxisBasic(Enable := FALSE);	 
END_PROGRAM

With this project I’m able to start/stop the axis mapped on the power supply.
When I enable the MC_DigitalCamSwitch fb, this report an error 29217 : Invalid input parameter.
I do not see where is the error.
Can you help me?

Thank you in advance
Christian

Have you tried other channels, like 1-6?

I never used it … in Addition to the Channel it could also be the Hysteresis which is not given in your code.

I would recommend to check Logger or Network Command Trace, in one of them i would expect to see the causing Parameter.

Greetings
Michael

I tested two things:
1° In the config, replace the 8BAC0130.001 by 8BAC0130.000. I think this is better, the version 000 provide high speed output.
2° I tried with different channel N°.

After the 1° modif, I have now an other error : 29230 = Internal Error : Error Transfering parameter list.

Below the Network Command Trace.

I am not sure where the error is happening… but here some notes which are hopefully helpfull:

Greetings
Michael

How are you testing this ?
Is it in simulation mode PLC, or is it with real ACOPOS hardware, including the 8BAC0130 card?
If it is in simulation mode, the error is a normal error because the physical hardware is not available.

On ACOPOSmulti die Slot number is from the perspective of the axis or channel resp. and can only be 1.

On a power supply module a card can only be put in the right side slot which is Channel 2, Slot1.

An axis on Channel 2 needs to be used for operating the function block. Either the real axis in simulation mode or the virtual axis.

In the network command trace, we should see this:

1 Like

Hello Martin,
i understood that he has to use the Axis Reference of Channel two, because only Slot1 is allowed. Which will look like this:

Acp10 Mapping:

    mcOutputRef.Axis := ADR(gAxis01);    // Channel 2
	mcOutputRef.Slot := 1;               // Slot 1 
	mcOutputRef.Channel := 1;            // Output of Module 

Greetings
Michael

1 Like

Thank Michael but in OutputRef.Slot comment it is only indicated slot 2,3 or 4. And the 8BAC0130 can be inserted only in the slot 2.

I have try to use an axis mapped on the channel two but I still have the same issue.

Thank Martin,

I change the mapping of my axis to use the channel 2.
In the outputref.slot and outputref.channel I tried different configuration but without success.

As I understand, the slot is the slot number on the power supply, if I check in the hardware config, for me it is slot 2. In the outputref.slot comment it is indicated slot 2, 3 or 4.
The channel seems to be the output nbr on the 8BAC0130 module, can be 1 or 2 I think.

Hello Christian,

You mentioned “In the outputref.slot comment it is indicated slot 2, 3 or 4” , can you give a reference where this comment is located. Because the numbers 2,3,4 sounds more matching a classic ACOPOS (old white one, which had 4 Slots).

DIO - Digital I/O Interface

Here we can see that it is Functionblock instance no.1 available - which matches the information from martin.


Which Version do you use, because in one of the Help References i linked erlier it is noted that you will need a minimum Version of ACP10 V5.081

Unfortunately i do not have such a Plug-In Card available for own tests.

Greetings
Michael

I have found an example in a test project for the Acp10_mc library where a 8BAC0130.000-1 is used in the right side slot of an ACOPOSmulti inverter, for the PSM it must be the same.

Outputs.Axis = <Axis of module channel 2>
Outputs.Slot = 1
Outputs.Channel = 1; //output number on card

Just tested it, it works:

1 Like

Maybe it is a “problem” or limitation in case of the PSM.
When I set the slot = 1 I do not have the "DIO_CMD_SET_OUT_ENALE… comande in the network trace. The FB report an error 29217.
If I select the slot 2, I have this line in the network trace but with an error.

The comment is in the acp10_mc.typ file.
I use the last avalable ACP10 Version 5.26.1

It might be that for the PLCopen Functionblock only axis were considered.

But as the other Documentation mentioned Axis/Channel it is not absolutly clear what the firmware would support. Nevertheless i don’t think that a manual configuration would be helpfull for you.

You can consider to create an offical support ticket to clarify it.

Greetings
Michael

Hello,

I assume you need the high resolution/speed of the outputcard on the drive in combination with this FunctionBlock.

If not, you can also use one of the functionblocks from this library: ASMcDcs.
With adjustable “On-Compensation” and if the velocity of your axis is “constant”, you can also achieve a good accurany.

Regards,
Alexander