DLaty (Customer) asked a question.

Issues with Modbus RTU communicating with Beijer HMI. Help with configuration

Hi folks, Trying to get a Beijer 7" HMI to communicate with my P3-550 CPU using the RS-485 port on the base of the CPU, and the COM6 port of Beijer HMI.

 

I have tried to configure the two using the same modbus settings, but Im coming from Allen Bradley world where everything these days is Ethernet IP and configured through RS linx. Not much experience setting up Modbus from scratch between two devices.

Here are some screenshots of my settings in each device.

 

At the Productivity CPU I get a "timeout error" and at the HMI I get an error saying " Unable to open port" and sometimes I also get an Error 3, 39999 "Requested WORD device with address 39999 not found in any area"

 

image.png 

imageimageimageimage 

 


  • Todd Dice (Customer)

    1. Parity from the first image shows none, so change connection on CPU to none.
    2. Do you have a chart of the addresses you wish to read and write to?
    3. You will have to control the polling of each Modbus instruction. Productivity allows you to set those parameters within the instruction. It is a setting below the node address. You can then eliminate the N.C. and N.O. contacts and have a solid line from left rail to instruction.
    4. Do you normally communicate to the HMI via Ethernet? If so, you can make it possible in the P3K by opening the Hardware Config in the left hand pane, click on the Ethernet/IP tab and select a Generic Client. You will need to know data types and connection instances - OR - if Beijer offers an EDS file, you can add the client using it.
    Expand Post
  • Iowaeng1986 (Customer)

    is the hmi a modbus master or slave? Most HMI are Modbus masters so no code required in Productivity with exception of assigning modbus addresses to associated tags.

  • OkiePC (Customer)

    I agree with @Iowaeng1986 (Customer)​ 

    It is most common with Modbus to set the PLC serial port as the slave and the HMI protocol to Modbus RTU Master. Then they must have matching port settings except the Modbus ID must be unique.

     

    Once that is done, the HMI will read and write data to the Modbus addresses you have assigned to tags in the PLC. Note that Productivity Suite doesn't assign the Modbus addresses automatically. You have the freedom to assign them to suit your needs, and the software will choose the register type and fill in the prefix. It is important that after making changes in the Tag Database that you write the project to the controller before the changes are applied.

     

    Additionally, it is possible to be "off by 1" in the data addressing where some devices begin their address tables starting at 1 and others start at zero.

     

    Typically, you will use 16 bit Holding Registers for integers and two of them for 32 bit floats. When you assign Modbus addresses in Productivity Suite, the software will prevent you from overlaps and fill in the prefix for you. Holding Registers start at 400001.

     

    You can also use Input Registers for things that are read only. They start at 300001.

     

    The 3rd party software may begin those data addresses at 0 instead of one and may have a different quantity of zeros between the prefix code (4 or 3) and the element number at the end. So the HMI may access a tag assigned at 400001 by addressing it as 40000.

     

    Some HMI software gives you a place to select 0 or 1 based addressing.

     

    For 32 bit registers (long integers and floats) the word order is not defined by the Modbus specification, so they sometimes need to be "word swapped". Productivity Suite gives you a way to select word order under File > Project Properties > Modbus Server Settings. Your HMI software may also provide that option.

     

    For Boolean tags you can use coils, but I normally just use bits within normal Holding Registers.

    Expand Post
  • DLaty (Customer)

    Thank you, I will take this advice and re-configure the devices.