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
parent
b4f3a306e4
commit
a71345e3d5
|
@ -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++;
|
||||
|
|
Loading…
Reference in New Issue