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:
1. In objdict.h file is added 0xA450 and 0xA8D0 domain objects.
2. In EplApiProcessImageSetup.c file is linked 0xA450 and 0xA8D0 objects.
On CN side
1. In objdict.h file is added 0x2000 and 0x2200 domain objects
2. Created mnobd.txt file
Details please find in attached domain.zip file.
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.
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.
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?
I have fixed it. Currently, my version openCONFIGURATOR with domain works ok :)
Only openPOWERLINK has some strange behavior:
1. In trace I can see that package size = 1490 bytes but real payload data size = 1416 bytes
2. When I press ESC the MN finishes with memory core dumped
Could you please check my generated mnobd.txt file attached here? Is it look correct?
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.
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
Hello Powerlink-team Kalycito,
My changes are here in branch victor_1_3_0:
It seems current version of openCONFIGURATOR as against of 1.2.0 version works incorrectly for cross traffic configurations.
1. There is throw exception in function GenerateMNOBD() of APIOperations.cpp file:
if((outPrevSize + mnPDOObj.dataSize) > (atoi((const char*) abC_DLL_ISOCHR_MAX_PAYL) * 8))
sprintf(customError, "Maximum payload limit exceeded for the TPDO Channel %s in MN ", indexObj->GetIndexValue());
This code prevents for using cross traffic settings. In my private version I have commented it.
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?
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.
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.