Back to top

AKD Mapping profinet telegram 400 - unable to map higher indexes

0 votes
+ vote
Vote up!

Hello,

I am having trouble with mapping telegram 400 of an AKD drive over profinet. 

Mapping of all "one word" parameters is fine, I am using examples from here - https://www.kollmorgen.com/en-us/developer-network/sample-projects-siemens-s7-1200-s7-1500-plcs-and-akd-profinet-drive/ but lets say I want to map fe. HOME.ACC - 2192 - DWord.. I tried many variants by changing example program, but I just cant get it to work. 

        #bySDODataArray[0] := 16#fe; //Request Reference
        #bySDODataArray[1] := 16#02; //2 for write PNU
        #bySDODataArray[2] := 16#00; //Axis# is 0 for AKD
        #bySDODataArray[3] := 16#01; // Number of parameters to write at a time
        // Set PNU 916 subindex 0
        #bySDODataArray[4] := 16#10; //Attribute is 0x10
        #bySDODataArray[5] := 16#01; //Number of elements =1
        #bySDODataArray[6] := 16#03; //0x394 for PNU 916
        #bySDODataArray[7] := 16#94; //PNU 916
        #bySDODataArray[8] := 16#00; //subindex
        #bySDODataArray[9] := 16#00; //subindex 0 for 1st word of telegram
        // To PNU 2 (ZSW1)
        #bySDODataArray[10] := 16#42; //Format =0x42 for Word
        #bySDODataArray[11] := 16#01; //Number of values
        #bySDODataArray[12] := 16#00; //data
        #bySDODataArray[13] := 16#02;//02; //data - Signal #2 (0x02) for ZSW1

This is the code that does the mapping, 16#02 data is okay and working, 16#21 etc. also, but if I want higher index, I have to divide somehow 0x890 (2192 in hex) to two, so I tried putting 16#08 to [12] and 16#90 to [13] and vice versa, tried setting [10] to 16#43, tried setting [11] to 16#02, tried adding [14] a [15] and putting data there, and all different variants of it, but I just cant get it to work. 

Any idea what I am doing wrong? Can it be mapped by terminal somehow? I can see what is mapped somewhat by pn.diag, but nothing to change the telegram.

Thanks for any help

0 Comments

2 Answers

0 votes
+ vote
Vote up!

Oh, okay, I get it now that I can only use some limited signals - HOME.ACC was only an example, I will actually need IL.LIMITN, IL.LIMITP and UPPER bits of FB1.P now, that is my current problem.
So I can not use all signals that have index number but I am still not sure which ones I can use, as I was actually taking this discussion as a base - https://www.kollmorgen.com/en-us/node/4732/#node-4733
Where you replied to use 2230 (for IL.LIMITN) etc., but I dont see it in profinet manual, that I can use 2230, so why can I use 2230 but not HOME.ACC - 2192 ? Is there a list somewhere, that I just dont see? I did not actually try 2230 yet. 

Also, small subquestion, I need to know how many turns did I do even when using modulo. From what I see I'd need UPPER bits of FB1.P, but I dont know the address for it or something that has that information. I probably wont be able to map that info to telegram, but even when directly reading PNUs, I dont see where I can get these upper bits.

Thanks for your answer

Comments

Sorry, that example is incorrect. It should use the "signal" numbers, not PNU numbers.
The AKD Profinet RT Communications manual lists the available device-specific signals. The PROFIdrive standard lists the signals available for standard telegrams. (Not all standard telegrams are available in the AKD drive.)

Signal for IL.LIMITN and IL.LIMITP is 110.
There is no signal for FB1.P.
Signal for PL.FB (XIST_A, position feedback) is 28. Signal 29 is the next upper 32 bits, but I don't know if this works in the AKD. The AKD itself supports a 64bit position value, but I don't know if this is handled through Profinet. Regardless, if you are using modulo, PL.FB will roll over and not indicate which motor revolution you are currently on. You would need to keep track of the roll-overs in the PLC. Or don't use modulo.

jcoleman02 - Mon, 07/06/2020 - 06:10
Log in or register to post comments

0 votes
+ vote
Vote up!

Telegram 400 must be mapped via PNU's through Profinet.  There is no way to do it in Workbench.

It would have worked similar to one of the ways you tried, assuming you did it like you said.  However, you don't map the PNU number of the drive parameter.  You map it based on the Signal number.  And there is no signal number for HOME.ACC.

You could, however, map DRV.ACC using signal number 108 (0x006C).  The list of available signal numbers can be found in the AKD Profinet manual.

        #bySDODataArray[0] := 16#fe; //Request Reference
        #bySDODataArray[1] := 16#02; //2 for write PNU
        #bySDODataArray[2] := 16#00; //Axis# is 0 for AKD
        #bySDODataArray[3] := 16#01; // Number of parameters to write at a time
        // Set PNU 916 subindex 0
        #bySDODataArray[4] := 16#10; //Attribute is 0x10
        #bySDODataArray[5] := 16#01; //Number of elements =1
        #bySDODataArray[6] := 16#03; //0x394 for PNU 916
        #bySDODataArray[7] := 16#94; //PNU 916
        #bySDODataArray[8] := 16#00; //subindex
        #bySDODataArray[9] := 16#00; //subindex 0 for 1st word of telegram
        // To PNU 2 (ZSW1)
        #bySDODataArray[10] := 16#42; //Format =0x42 for Word
        #bySDODataArray[11] := 16#01; //Number of values
        #bySDODataArray[12] := 16#00; //data
        #bySDODataArray[13] := 16#6C; //data - Signal #108 (0x6C) for DRV.ACC

Make sure to specify [9] correctly to make the appropriate word in the telegram represent DRV.ACC.  You probably don't want it in the 1st word.

The default mapping for telegram 400 is based on telegram 9.  So you can start with how telegram 9 is mapped and then just map the additional words.  Or you can change it to be completely custom.

Comments

-

Wolf - Wed, 07/01/2020 - 07:51
Log in or register to post comments
ANSWER THIS QUESTION
You may login with either your assigned username or your e-mail address.
The password field is case sensitive.

If you do not have an account, click here to register.