Modbus RTU communication from 4PPC70

Hello, I am having an issue communicating between PLC-HMI combo of 4PPC70-101G-23B and a Belimo NMV-D3-MOD HVAC actuator with Modbus comms.

I am using the DRV_mbus library with the modification of included example.
4PPC70 has RS485 on IF9.
Belimo is configured with 9600 8N1 ModbusRTU, address 10.
I want to read addresses 0000-0013.

Using the provided code I always get error 20210 from MBMaster, which is "mbERR_ILG_IDENT Invalid ID or ID is 0 ". Yes, the returned ident=0 in monitor mode;

I presume this means that the block can’t even open comms. Which smells to me like bad interface addressing possibly. What is the correct address here for interface “IF9”? I have tried both “IF9” and “SL0.SS1.IF9”, second of which is more similar to the original example, no success, same error 20210.

I have configured my IF9 as follows. I tried all permutations of Activating ModbusRTU on the bottom, activating terminating resistor, no change.
image

This is in datamod.dat file:

"LibDRVmbus.EventDev1Read ", 03, $0A, "LibDRVmbus.LocalDev1Read ", 0000, 0013

This is in INIT program (.status is 8258 which I was not able to find at the first glance)

Master.MBMOpen_0.enable := TRUE;
Master.MBMOpen_0.pDevice := ADR(‘IF9’); (* Device description string )
Master.MBMOpen_0.pMode := ADR(‘/PHY=RS485 /PA=N /DB=8 /SB=1 /BD=9600’); (
Mode description string )
Master.MBMOpen_0.pConfig := ADR(‘datamod’); (
Data object name )
Master.MBMOpen_0.timeout := 5000; (
Timeout in milliseconds (the value must be a multiple of 10 and >250ms) )
Master.MBMOpen_0.ascii := 0; (
0 = RTU / 1 = ASCII *)
Master.MBMOpen_0();

And CYCLIC (.status is 20210)

IF (Master.S1 = FALSE) THEN
Master.MBMaster_0.enable := TRUE;
Master.MBMaster_0.ident := Master.MBMOpen_0.ident;
Master.MBMaster_0();
ELSE

I am going to check with oscilloscope on the RS485 lines to see if there is anything coming out of IF9 at all, to narrow down whether this is physical addressing issue or config.

Any ideas? Thanks!

I do believe I am having an addressing issue, since the scope is not even seeing a blip on the RS485 outputs.
Based on Automation Help, SLx is current processor, so SL0, SSx is current slot, in case it is onboard HW, SS0. Then IF9.

After changing pDevice string to SL0.SS0.IF9, still no communication on RS485 sadly.

8252 error which falls out of the MBMOpen FBK is
" 8252 A serial device with the specified name cannot be found on the target."
Which makes it rather obvious.
However, SL0.SS0.IF9, SL0.SS1.IF9 do not work for 4PPC70

Hello,

8258 is described here: B&R Online Help
With the “Suggestion for error correction” it might be worth disabling the ModbusRTU communication in your project settings and just use the library.
=> It is stated, that the resources might be in use due to a project configuration.

BR Fabian

1 Like

Also check:

https://help.br-automation.com/#/en/6/communication%2Fnetworkconfiguration%2Fnetworkconfiguration_serialsg4.html

Turns out, that the last sentence in error description 8252 is critical:


After right clicking IF9 and restoring it to default settings, everything works with simple pDevice descriptor of “IF9”