How to do Explicit Messaging by Anybus CompactCom M40 EIP?

Hi Tech Support,

I have done I/O Messaging by using Assembly Object (04h) / Instance 64h to get Adi1 and Instance 96h to set Adi64, see Adi map below copied from appl_adimap_separate16.c:

const AD_AdiEntryType APPL_asAdiEntryList[] = {
{ 1, “ABP_UINT16_GET”, ABP_UINT16, REG_NUM, APPL_WRITE_MAP_READ_ACCESS_DESC,
{
{ appl_aiUint16_1, NULL}
}, GetAdi1Value, NULL},
{ 64, “ABP_UINT16_SET”, ABP_UINT16, 8 , APPL_READ_MAP_WRITE_ACCESS_DESC,
{
{ appl_aiUint16_64, NULL}
}, NULL, SetAdi64Value},
};

Now I am trying to use Explicit Messaging to transfer data with ADIs. What object do I need to implement for the above ADIs? Or do I need to create separate ADIs for Explicit Messaging?

Hello David,

Is the compactcom unit on a developed product? Or is this being actively developed?

Hi Kevin,

Thanks for you quick response!

It is a my actively developed board. It had been tested with M40 EIP, M40 TCP and M40 ProfiBus.

Hi Kevin,

I have not heard any feed back from you about a week. Can you help me for the questions asap? I would appreciate your answers in advance.

Hi Tech Support,

If I can’t get help on my design, I need to decide what else I could do. Maybe I have to stop using Anybus products because that.

Hello,

I apologize for the delays. I recieved a call and I though I talked to you earlier this week. I apoloize for this issue.

I checked our documentation and spoke to our developers. The gateways do not utilize explicit messaging, it will not transfer through the gateway.

Kevin,

Thank you for the answer. Implicit message should be good for mine.

Hi David,

I should be able to help you out further with this issue I think Kevin was mixing this up with one of our gateways.

To access data via explicit message it has to be defined with read/write permissions. This would be done with the ADI object A2h see Page 100

When you create an ADI you can indicate if the ADI is mapped/assignable to processdata and also if the ADI has explicit read and/or write access. In your example it looks like you have Write configured for one and Read configured for another.

#define APPL_WRITE_MAP_READ_ACCESS_DESC ( ABP_APPD_DESCR_GET_ACCESS |
ABP_APPD_DESCR_MAPPABLE_WRITE_PD )

#define APPL_READ_MAP_WRITE_ACCESS_DESC ( ABP_APPD_DESCR_GET_ACCESS |
ABP_APPD_DESCR_SET_ACCESS |
ABP_APPD_DESCR_MAPPABLE_READ_PD )

Looking at the example you posted you should be able to explicitly request object 0xA2, instance 1 and instance 42. with attribute 5 holding the value.

Alternatively you look into the CIP Parameter Object. This has some limitations and I recommend looking at page 87 in the design guide. https://cdn.hms-networks.com/docs/librariesprovider7/default-document-library/manuals-design-guides/hms-scm-1202-031.pdf?sfvrsn=435fadd6_55

Deryck