AB9004-B Read-write Issue

I am attempting to configure a PDO for the Anybus Gateway to display two of my transactions. Since I did not see a way to do so using the configuration menu in the Anybus Client, I have been working on using the CANbus Master to send the signals to the Anybus to make the configuration.

The following are the results:
40 02 1a 02 00 00 00 00 (read 1a02sub01)

43 02 1a 02 08 00 01 10 (1a02sub02 contains a reference to 1001asub00 with 8 bits)
23 02 1a 02 10 02 0a 21 (set 1a02sub02 to reference 210asub02 with 16 bits)
80 02 1a 02 00 00 01 06 (Object Access Error)

but the following worked to change the number of mapped values for the PDO
2f 02 1a 00 02 00 00 00 (set 1a02sub00 to 02

60 02 1a 00 00 00 00 (confirmation of change of 1a02sub00)

Reattempting the first commands still returned the Object Access Error. Is there a specific protocol for changing the transmit PDOs?


Hello @Asimpson,

To first clarify the CAN side of this gateway uses the CANopen protocol. Typically the mapping is handled by the CANopen Masters configuration software to setup a mapping, showing what devices to send data (TPDO’s) and what devices to receive that data (RPDO’s). Here is a screen show showing a simple setup with our CANopen Masters configurations software.

This is setting up a TPDO from a the CANopen slave of an AB9004 and the corresponding RPDO on the Master. Then there is a TPDO and RPDO in to opposite direction.

To try and more directly answer you questions messages used to configure the device are SDO’s. These would be used to write to the TPDO and RPDO mapping objects on the device. Again this is typically handled by the CANopen Master configuration software and is often slightly abstracted like in the screen shot above. You can see the mapping in the EDS file and it is printed in chapter 7 of the user guide.

Here is a link to some details on CANopen. SDO services

I understand using the SDO to set the TPDO, but when I did, it gave an access denied, do I have to disable the PDO before configuring the mapping, because I also received an access error when I put it into preoperational mode before attempting to edit the TPDO configuration? I’m writing the configuration code and want to make sure I know what state the Anybus has to be in in-order to change those values.

I figured out the process for modifying the PDO, I have to set the PDO map count to 0, then configure the PDO mappings, then set the map count to what I want (all while in pre-operational state).
However, I found a different issue which is that the re-mappings do not persist after applying configuration changes or even simply rebooting. There are Default configurations, is there a way for me to make these changes persist or will I have to re-run this configuration setup every time the device reboots?

Often the configuration is just set by the master on startup. You should be able to set the the Store Parameters parameter to keeps its configuration after a reboot. image

Thank you for the pointer, but being a 32 bit value I doubt that 0x1010 sub 02 (or 01 if that would be the correct one to modify) is simply a boolean. I’ve not been able to find a table for the valid values for the register to hold. Is there such a table, or some value that I should set it to to save the changes I make? the value in both 1010 sub 01 and 02 are box 0x01 00 00 00, and it’s not saving.

Hi @Asimpson,

That is the correct object, it is a standard CANopen object. I colleague of mine pointed out you actually need to write SAVE to the parameter to trigger the save. Not sure why it isn’t in this user manual but here is screen shot from another that mentions it.