Help setting up the Modbus side of a ABC that converts proprietary serial to Modbus

I’m having a problem I wonder if you could help me with. I’m trying to send the value 1h from the ComTest Pro to my ABC and ComTest shows that the ABC is responding “Illegal data address”. It works, doesn’t complain, if I set “Register” to 0 – but I get the error when I put what I think are more appropriate addresses in “Register”. Here’s what its log shows for the two attempts:

Anybus1

My reading of the ABC manual suggests that if I write into address 0x200 it will fill the first bytes of the “Output Data area” – so that’s why I used Register=512 (0x200) in ComTest.

I have a query setup in the Anybus Configuration Manager that uses function code 6 (Write Single Register) to write to Register Address 0 of my proprietary device.

I thought that ComTest Pro needed to write into 0x200 to fill the place that my Write Single Register in the ABC would draw its data value from. See the two screenshots below for how the Register Address and Register Value were setup.

Anybus2

Anybus3

The Subnet Monitor screen looks like this:

Anybus4

When I tell ComTest to write a value of 55 to Register=0 – and it doesn’t complain – I don’t see the value 55 anywhere in the Data Areas. See two screenshots below.

Anybus5

Anybus6

Suggestions?

Thanks,
Rich

Hi Rich,

You are getting that error “illegal data address” because you are trying to write to address space that is Read Only.
image

Can you try changing the Data Location to 0 under the Register Value here:
image

Then let me know whether or not you see the value show up in the first input register.

Kyle

Hi Kyle,

Thanks for answering.

I think you’re mistaken on the READ ONLY.

One side of the ABC is connected to a serial port on my PC that is acting like the real serial device of ours – but that side is working – I can see data from the serial device getting into the ABC. It’s the other side of the ABC that isn’t working. I’m using the ComTest tool to feed Modbus to the ABC on that side. I thought that side of the communications, to make a request of the serial device on the other side of the communications, was supposed to write into the Output Data area?

Rich

To try to be more clear …

It’s NOT the subnetwork that is sending the ResetStats command, it’s the Fieldbus side.

I’m new to Modbus/Fieldbus etc but I know I’m sending the ResetStats request to the Ethernet connection on the AB7072.

The picture that you sent shows that the Output Data area is Read/Write for that

Rich

To try to be more clear …

It’s NOT the subnetwork that is sending the ResetStats command, it’s the Fieldbus side.

I’m new to Modbus/Fieldbus etc but I know I’m sending the ResetStats request to the Ethernet connection on the AB7072.

The picture that you sent shows that the Output Data area is Read/Write for that

Rich

OK, I was thinking that your PC was on the subnet side when it’s actually on the Fieldbus side and connected to the Modbus TCP slave. In this case, the only settings for that side in the ABCM are the Fieldbus settings here:

image

You’ll want to choose the EIP & Modbus TCP 2-Port if you’re using the AB7072, set the TCP/IP settings and IO sizes.

The memory layout from the Fieldbus side will look like this:

image

Section 2.5 Modbus-TCP in the manual describes the different addressing modes, function codes, and register maps. Using Anybus addressing mode, it looks like register 1025 is the one you were trying to write to:

image

Kyle

Hi Kyle,

I get the “Illegal data address” if I write to Register 1025. I also get it if I write to the “512” I showed in the example I first posted.

I see that you mentioned “…and I/O sizes”. I had left them at their defaults. Should I have picked something else?

I have the EIP & Modbus TCP 2-Port selected. (At first I had the one that looked very much like it but w/o the “2-Port” selected and was getting a complaint about a mismatch when I downloaded. I corrected that by picking the one you named. I had corrected that before reaching out to tech support for the first time.)

I am using the AB7072.

Would it help if I setup a TeamViewer connection and let you remote in to my setup so you can see what I’m talking about. You could either watch me or take control of the mouse/keyboard.

Thanks,

Rich

Hi Rich,

I think a Teamviewer session is a good idea. Please give us a call at 312-893-5636, either in the next half hour, or tomorrow. We are here from 0800 to 1700 EST, Mon thru Fri, (reference the ticket #27245).

Kyle

Thanks Kyle.

I’ll try it tomorrow – likely between 10:30 and 13:00 CST.

(I’ll know the timeframe better tomorrow and will get you a better heads-up then.)

Rich

Sounds good Rich, we’ll talk to you then.

Hi Kyle,

Can we set it up for 15:45 EST today?

If so, should I just call the number you gave me then and ask for you?

If you’re busy would I get someone else?

Rich

Hi Rich,

I am probably not going to be available at that time today, but either Deryck or Tim could also help you with this if you want to give them the ticket number, 27245. I did speak to @deryck_hms about this one, so he is somewhat familiar already. Let me know if you get it resolved or not, because I may be able to call you back later this afternoon or tomorrow.

Kyle

Hi @richw,

I should be able to help you out with this. Give me a call at 312-893-5636 and ask for me. If I am not immediately available as Kyle mentioned Tim should be able to help you out.

If you prefer me to give you call please provide a number to call you at.

Deryck

Hi Rich,

Can you try this with the CAS Modbus Scanner and see if that works any better than comtest pro?

Hi Tim,

I will try it after I get out of a meeting and get back to you

Rich

Hi Tim,

I tried it with the CAS program instead of ComTest and had the same bad results. Just to be completely forthcoming with info: When I enter register addresses into the CAS tool they get offset by 40000 and an address of 0 isn’t accepted. For example, if I enter a 1 it gets turned into a 40001. It looks to be correct though because it acts the same way as ComTest did. To summarize what both of them did:

I can write to registers 0 through 8 (ComTest) and 40001 through 40009 (CAS) and get a response that says the write worked. In all cases I never saw anything get to the cells in any of the three areas depicted in the Node Monitor.

If I write to the following registers I get “Illegal data address” responses:

9 (ComTest) and 40010 (CAS)

511 (ComTest) and 40512 (CAS)

512 (Comtest) and 40513 (CAS)

1025 (ComTest) and 41025 (CAS)

1026 (ComTest) and 41026 (CAS)

The Fieldbus setting in ABC is “Modbus TCP address mode”

What I’m trying to do with the ABC - take data from a write made at a Fieldbus port and get it into the ABC Output Area - is pretty basic, isn’t it?

In the bigger picture, I’m trying to setup the ABC so that my serial device is sent a Write Single Register when the ABC gets a command from its Fieldbus side. That seems like it would typical usage of the ABC.

Can a person typically do this with other ABCs and see the value from the Fieldbus show up in the Node Monitor?

Do you have a AB7072 you can try these experiments on? I could send you mine. I’m also open to more TeamViewer sessions.

Rich

Hi Rich, I was experimenting on these for the last half hour and have been seeing similar results. I’m going to take a look at this again in the morning and see if I can get to the bottom of this.

Right now I’m reading/writing from 2 different Masters for this device and I can confirm that it is being written to and to the correct areas, but as of right now I’m not seeing that it’s updating in the Node Monitor

Thanks Tim.

The registers that can be accessed, to me, also don’t seem to be the whole range that the Areas suggest they could be.

Rich

Hi Rich,

After testing this out on a few devices I’m thinking there may be a bug with the node monitor. Can you try and set the fieldbus to be the 1 port instead of 2? We tried it with all the same settings apart from the fieldbus change and that seemed to make the monitor work

Hi Tim,

It’s not any better. By that I mean that:

  1.   I never see a data value that I write show up anywhere in the Node Monitor view
    
  2.   I only seem to be able to write to registers 1 through 8. If I try another register I get the Illegal data address error.
    

I know I’m writing to the 1 port vs 2 port because the screenshot shows it and I get a warning that says “The selected Fieldbus does not match the Fieldbus detected by the ABC, do you want to continue?” I say “Yes”.

Rich