If the first slave has DC enabled and enouth PDOs to needs more than [EC_MAXLRWDATA - EC_FIRSTDCDATAGRA] bytes in the process image, the first segmentsize will be zero instead and this cause the wrongly reading for the wkc from then incoming messages

pull/243/head
Antonluca Paruolo 2019-01-11 16:58:29 +01:00
parent b4f3a306e4
commit a71345e3d5
1 changed files with 3 additions and 3 deletions

View File

@ -1171,7 +1171,7 @@ int ecx_config_map_group(ecx_contextt *context, void *pIOmap, uint8 group)
oLogAddr = LogAddr;
if ((segmentsize + diff) > (EC_MAXLRWDATA - EC_FIRSTDCDATAGRAM))
{
context->grouplist[group].IOsegment[currentsegment] = segmentsize;
context->grouplist[group].IOsegment[currentsegment] = segmentsize > 0 ? segmentsize:EC_FIRSTDCDATAGRAM;
if (currentsegment < (EC_MAXIOSEGMENTS - 1))
{
currentsegment++;
@ -1230,7 +1230,7 @@ int ecx_config_map_group(ecx_contextt *context, void *pIOmap, uint8 group)
oLogAddr = LogAddr;
if ((segmentsize + diff) > (EC_MAXLRWDATA - EC_FIRSTDCDATAGRAM))
{
context->grouplist[group].IOsegment[currentsegment] = segmentsize;
context->grouplist[group].IOsegment[currentsegment] = segmentsize > 0 ? segmentsize:EC_FIRSTDCDATAGRAM;
if (currentsegment < (EC_MAXIOSEGMENTS - 1))
{
currentsegment++;
@ -1363,7 +1363,7 @@ int ecx_config_overlap_map_group(ecx_contextt *context, void *pIOmap, uint8 grou
if ((segmentsize + diff) > (EC_MAXLRWDATA - EC_FIRSTDCDATAGRAM))
{
context->grouplist[group].IOsegment[currentsegment] = segmentsize;
context->grouplist[group].IOsegment[currentsegment] = segmentsize > 0 ? segmentsize:EC_FIRSTDCDATAGRAM;
if (currentsegment < (EC_MAXIOSEGMENTS - 1))
{
currentsegment++;