Jump to content

Modbus addressing from a Scada system

Recommended Posts

Hi Everyone,

I've implemented Modbus communications with Unitronics Vision series, both serial and Ethernet.

I've been able to read and write MIs and MB successfully.


But I'm not able to access any other type of addresses.

Visilogic help shows a "slave adressing" table.

This table apparently indicates for example that in order to read SBs you should read coils starting at 3000 address

or in order to read OPLC discrete inputs you should read coils starting at 4000


Timer coils->6000


MBs 3000-4095->8000

(similar story for registers different from MIs)


well, this simply doesn't work, reading addresses 3000 or 4000 does not return SBs or Inputs, also any attemp to read a coil address above 4095 will return an error.


Modbus offcourse supports 1xxxx addresses for inputs, but Unitronics OPLCS seem to support only 0xxxx (coils) and 4xxxx (registers).


There is offcourse the chance to "map" SBs or Inputs to MBs and then read them as MBs, but is not a clean way to do it, and you need to consume MBs just for mapping purposes.


I guess there should be a way to read inputs, since there is a "Read Input" function block in Visilogic Modbus Master.


So, please tell me I'm wrong and tell how can SBs and Inputs via Modbus from a Unitronics OPlc.


Thank You!





Link to comment
Share on other sites

Hi Joe,

What Vision model are you using?

Please note that the slave addressing is different for the Standard (V120, V230, V260, V280, V290, V530) and the Enhanced models (V130, V350, V560/570, V1040, V1210).

The values stated above are for the Standard models only, and that might explain why this implementation is not working for you.


If you still cannot implement Modbus communication, please feel free to send your application to support@unitronics.com.

Link to comment
Share on other sites

Hello Eyal,

Thank you for your response.


I'm using and enhanced controller V350.

The slave addressing table for enhanced controllers shows the following:

Coils (Read Coils Modbus Command)

0000h -> MB0

3000h-> XB

4000h-> O

5000h-> SB

6000h-> I

7000h-> T

8000h-> C


However, like i mentioned, the V350 only responds to the Modbus Read Coil command for MBs

and the highest address the controller responds is 4095 (decimal) without returning an error.


So, like I said, it is not possible to read via Modbus any discrete address besides MBs.


Could you please check with your teammates if anyone has tried this before?

Again, We are talking about reading V350 operand values (other than MBs and MIs) from any Modbus Master Software (Scada, OPC, etc.)


Thank You!


Link to comment
Share on other sites


We have many project which successfully implemented Modbus communication, both RTU and TCP. As stated in the Slave Addressing page in Visilogic help file, the stated addresses should be referred as hexadecimal values, and not decimal.

The only reason that you were actually able to read MB's and MI's is because the first values (0-10) are identical bot in decimal and hexadecimal bases.

Try changing the base to hex and see if the issue persists (don't forget to check that the operand value corresponds to the hex format - for example ML40=7028h).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...