I tried to use domain type in PRes and PReq. As result I have success with payload data <= 36 bytes. But I need more payload size.
Could anybody say please how to transfer more payload of PReq and PRes with domain type?
My changes are:
On MN side:
In objdict.h file is added 0xA450 and 0xA8D0 domain objects.
In EplApiProcessImageSetup.c file is linked 0xA450 and 0xA8D0 objects.
On CN side
In objdict.h file is added 0x2000 and 0x2200 domain objects
Created mnobd.txt file
Details please find in attached domain.zip file.
I have increased the payload size as you wrote but anyway it doesn't work. Please, find in attachments new mnobd.txt and log files. Do I perhaps have to add anything else to mnobd.txt?
There is no sense to create xdd file with domain because the current openCONFIGURATOR version doesn't support domain types in PDO. This mnobd.txt I have created manually using as example already generated file. And by txt2cdc I generate mnobd.cdc.
It works with mnobd.txt file attached in this post. Also here is the xdc file used to generate the mnobd.txt file by openCONFIGURATOR where I added the domain type limited support (I can share my git branch if need).
Could please help me fix one issue I encountered with adding domain? When I add second CN in openCONFIGURATOR (with the same xdc attached here) and try to build it then OCFM_ERR_SUBINDEX_ALREADY_EXISTS exception is thrown from AddSubIndex() function of APIOperations.cpp file. Could you please give me a hint what is it subIndexId and where it is initialized and might some additional information that can help me?
Thanks for your interest in fixing this. Could you please share with us your git patch for the specific feature, we'll have a look into it as this might also prove helpful for the openPOWERLINK community.
Your mnobd.txt looks correct.
Regards,
Powerlink-team
Kalycito
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Is any way by X20ET8819 to capture the payload more then 1416 bytes?
The all 1490 bytes really is transfered in PReq and PRes but in traces it cannot be observed. I checked it by comparing the sent and received packages on MN and CN sides.
There are following last 3 lines in a package of trace:
Size: 1490 [22-23]
Payload Data:(1416 bytes) [24-1439]
Packet sliced at byte 1440
Best regards,
Victor
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This code prevents for using cross traffic settings. In my private version I have commented it.
There is wrong counting for MN mapping offset.
It generate lines like this:
1A00 01 00000008 2E9000000001A450
1A00 02 00000008 2E902E900002A450
1A01 01 00000008 2E9000000003A450
1A01 02 00000008 2E902E900004A450
but need:
1A00 01 00000008 2E9000000001A450
1A00 02 00000008 2E9000000002A450
1A01 01 00000008 2E9000000003A450
1A01 02 00000008 2E9000000004A450
Could you please help me to fix it?
I cannot understand what sense of this mapping on MN side for CN cross traffic.
Additionally, one more question. For domain I use A8D0 and A450 indexes on MN side. Could you leave these indexes for domain in your future versions of openPOWERLINK, or say me please what numbers are you going to use for domain?
Best regards,
Victor
Last edit: Victor 2014-02-12
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The openPOWERLINK MN is following the CANopen standard CiA 302-4 for assigning indexes to datatypes for the process images. This standard does not cover the datatype DOMAIN, so I recommend you to create your own objects inside the manufacturer specific profile area (i.e. 0x2000 - 0x5FFF). We cannot guarantee a reservation of 0xA8D0 and 0xA450 due to this fact.
As openCONFIGURATOR on the other hand cannot handle DOMAIN objects automatically (for the mapping, it needs to know the length of the mapped data), a general solution is not easily possible. At least on the CN-side the user has to enter the mapping length manually.
In general, I ask you to switch to the openCONFIGURATOR forum for any openCONFIGURATOR-specific discussions.
Best regards,
Wolfgang
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It seems currently there isn't any topic for discussions about openCONFIGURATOR. The questions I wrote about the throw exception and the counting mapping offset was result of my mistake in xdc file. I forgot to set node number in 1401/01 object of xdc file.
Best regards,
Victor
Last edit: Victor 2014-02-13
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello All,
I tried to use domain type in PRes and PReq. As result I have success with payload data <= 36 bytes. But I need more payload size.
Could anybody say please how to transfer more payload of PReq and PRes with domain type?
My changes are:
On MN side:
On CN side
Details please find in attached domain.zip file.
Thanks.
Best regards,
Victor
Last edit: Victor 2014-02-04
Hello Victor,
I had a look into your mnobd.txt and I feel for domain objects, if you are interested in using more payload size, then you have to do the following,
Please let me know if you face any issues. Also if possible, please share us your XDD.
Regards,
Powerlink-Team
Kalycito
Hello Powerlink-Team Kalycito,
Thank you for your answer.
I have increased the payload size as you wrote but anyway it doesn't work. Please, find in attachments new mnobd.txt and log files. Do I perhaps have to add anything else to mnobd.txt?
There is no sense to create xdd file with domain because the current openCONFIGURATOR version doesn't support domain types in PDO. This mnobd.txt I have created manually using as example already generated file. And by txt2cdc I generate mnobd.cdc.
Best regards,
Victor
Hello Powerlink-Team Kalycito,
It works with mnobd.txt file attached in this post. Also here is the xdc file used to generate the mnobd.txt file by openCONFIGURATOR where I added the domain type limited support (I can share my git branch if need).
Could please help me fix one issue I encountered with adding domain? When I add second CN in openCONFIGURATOR (with the same xdc attached here) and try to build it then OCFM_ERR_SUBINDEX_ALREADY_EXISTS exception is thrown from AddSubIndex() function of APIOperations.cpp file. Could you please give me a hint what is it subIndexId and where it is initialized and might some additional information that can help me?
Thanks.
Best regards,
Victor
Hello Powerlink-Team Kalycito,
I have fixed it. Currently, my version openCONFIGURATOR with domain works ok :)
Only openPOWERLINK has some strange behavior:
Could you please check my generated mnobd.txt file attached here? Is it look correct?
Best regards,
Victor
Hello Victor,
Thanks for your interest in fixing this. Could you please share with us your git patch for the specific feature, we'll have a look into it as this might also prove helpful for the openPOWERLINK community.
Your mnobd.txt looks correct.
Regards,
Powerlink-team
Kalycito
All of I wrote in my previous post work ok.
Is any way by X20ET8819 to capture the payload more then 1416 bytes?
The all 1490 bytes really is transfered in PReq and PRes but in traces it cannot be observed. I checked it by comparing the sent and received packages on MN and CN sides.
There are following last 3 lines in a package of trace:
Size: 1490 [22-23]
Payload Data:(1416 bytes) [24-1439]
Packet sliced at byte 1440
Best regards,
Victor
Hello Powerlink-team Kalycito,
My changes are here in branch victor_1_3_0:
git@github.com:victorlp/openCONFIGURATOR.git
It seems current version of openCONFIGURATOR as against of 1.2.0 version works incorrectly for cross traffic configurations.
For example:
if((outPrevSize + mnPDOObj.dataSize) > (atoi((const char*) abC_DLL_ISOCHR_MAX_PAYL) * 8))
{
exceptionObj.OCFMException(OCFM_ERR_VALUE_NOT_WITHIN_RANGE);
char customError[200];
sprintf(customError, "Maximum payload limit exceeded for the TPDO Channel %s in MN ", indexObj->GetIndexValue());
CopyCustomErrorString(&(exceptionObj._ocfmRetCode), customError);
throw exceptionObj;
}
This code prevents for using cross traffic settings. In my private version I have commented it.
It generate lines like this:
1A00 01 00000008 2E9000000001A450
1A00 02 00000008 2E902E900002A450
1A01 01 00000008 2E9000000003A450
1A01 02 00000008 2E902E900004A450
but need:
1A00 01 00000008 2E9000000001A450
1A00 02 00000008 2E9000000002A450
1A01 01 00000008 2E9000000003A450
1A01 02 00000008 2E9000000004A450
Could you please help me to fix it?
I cannot understand what sense of this mapping on MN side for CN cross traffic.
Additionally, one more question. For domain I use A8D0 and A450 indexes on MN side. Could you leave these indexes for domain in your future versions of openPOWERLINK, or say me please what numbers are you going to use for domain?
Best regards,
Victor
Last edit: Victor 2014-02-12
Hi Victor,
The openPOWERLINK MN is following the CANopen standard CiA 302-4 for assigning indexes to datatypes for the process images. This standard does not cover the datatype DOMAIN, so I recommend you to create your own objects inside the manufacturer specific profile area (i.e. 0x2000 - 0x5FFF). We cannot guarantee a reservation of 0xA8D0 and 0xA450 due to this fact.
As openCONFIGURATOR on the other hand cannot handle DOMAIN objects automatically (for the mapping, it needs to know the length of the mapped data), a general solution is not easily possible. At least on the CN-side the user has to enter the mapping length manually.
In general, I ask you to switch to the openCONFIGURATOR forum for any openCONFIGURATOR-specific discussions.
Best regards,
Wolfgang
Hello Wolfgang,
Thank you for your answer.
It seems currently there isn't any topic for discussions about openCONFIGURATOR. The questions I wrote about the throw exception and the counting mapping offset was result of my mistake in xdc file. I forgot to set node number in 1401/01 object of xdc file.
Best regards,
Victor
Last edit: Victor 2014-02-13