You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@plc4x.apache.org by Alessio Bernesco Làvore <al...@gmail.com> on 2020/09/02 14:50:09 UTC

MODBUS over RTU configuration

Hi everyone,

i'm trying to complete some tests connecting a Modbus RTU device (digital
input converter).

The device is connected using a USB/485 converter, running with pyModbus
i'm able to communicate with the device.

I'm using this connection string:

PlcConnection plcConnection = new
PlcDriverManager().getConnection("modbus:serial:///dev/ttyUSB0?unit-identifier=1");

Then:
PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
builder.addItem("value-0", "holding-register:14");
PlcReadRequest readRequest = builder.build();
PlcReadResponse response = readRequest.execute().get();

But i was unable to obtain a response, watching at the logs there are
plenty of:
io.netty.channel.nio.NioEventLoop        : Migrated 1 channel(s) to the new
Selector.
Selector.select() returned prematurely 512 times in a row; rebuilding
Selector
org.apache.plc4x.java.transport.serial.SerialPollingSelector@37f2b566.

Another important part is that i'm unable to find where i can configure the
serial communication parameters, like baud rate, stop bits, etc.

Greetings,
Alessio

Re: MODBUS over RTU configuration

Posted by Christofer Dutz <ch...@c-ware.de>.
Well the PLC4X folks have just recently started working on a new initiative: PLC4PY (All PLC4X drivers in native Python implementations)

Unfortunately I'm consumed with my PLC4C ... if you want to join them ... they would be happy about anyone helping.

But if you want to get rid of Python (which I can understand very well ;-) ) feel free to stick to PLC4J, which is obviously the most mature PLC4X ecosystem.

Chris



Am 02.09.20, 17:38 schrieb "Alessio Bernesco Làvore" <al...@gmail.com>:

    Yes, in fact right now we are using a python edge system (written by
    ourselves) to connect, but i'd like to migrate it to java.
    We mainly interact with OPC-UA or ModBus devices but sometimes the latter
    are Serial 485 and so we need an RTU enabled driver.

    I'll constantly keep an eye on the list and I'll contribute to the topic,
    if I can give any help.

    Greetings,
    Alessio

    On Wed, Sep 2, 2020 at 5:33 PM Christofer Dutz <ch...@c-ware.de>
    wrote:

    > Hi Alessio,
    >
    > thanks for volunteering to help with testing ... as Otto will agree ...
    > testing stuff is sometimes a good thing to do ;-)
    >
    > Even if it's not highest priority for you, we should continue the
    > discussion as this issue will come up sooner or later.
    >
    > Chris
    >
    >
    > Am 02.09.20, 17:29 schrieb "Alessio Bernesco Làvore" <
    > alessio.bernesco@gmail.com>:
    >
    >     Hello Chris,
    >     thank you!
    >
    >     I'm currently using some exotic RTU devices, just for test, so mine is
    > a
    >     low priority question.
    >     Of course i'm fully available to test any release against those
    > devices.
    >
    >     Greetings,
    >     Alessio
    >
    >     On Wed, Sep 2, 2020 at 5:14 PM Christofer Dutz <
    > christofer.dutz@c-ware.de>
    >     wrote:
    >
    >     > Hi Alessio,
    >     >
    >     > welcome on this super-cool community list of ours :-)
    >     >
    >     > Unfortunately I have a little "uncool" news ... while working on the
    > new
    >     > drivers, it occurred to me that we currently are absolutely able to
    > run one
    >     > protocol over multiple transports, however if the transports require
    >     > different handling on the lowest level, we currently haven't got
    > that base
    >     > covered.
    >     >
    >     > We started discussing options on how to solve this problem, but the
    >     > discussion is ongoing ...
    >     >
    >     > Unfortunately I didn't update the documentation ... as I thought
    > we'd be
    >     > able to implement this sooner.
    >     >
    >     > Possibly the 0.6.x version of PLC4X could work as starting with
    > 0.7.0 we
    >     > have deleted all existing drivers and have replaced them with new,
    >     > generated ones and are still working on implementing all the
    > features the
    >     > old ones had. Unfortunately you seem to be the first person to ask
    > for
    >     > serial Modbus, so we hadn't prioritized that up too much.
    >     >
    >     > So for now .. please give the 0.6.1 a go (might have slightly
    > different
    >     > syntax and connection string) and join in on the discussion here on
    > the
    >     > list and possibly help us finish this ... as none of us have a serial
    >     > Modbus device, it's sort of tricky to implement a driver for it.
    >     >
    >     > Chris
    >     >
    >     >
    >     >
    >     >
    >     > Am 02.09.20, 16:50 schrieb "Alessio Bernesco Làvore" <
    >     > alessio.bernesco@gmail.com>:
    >     >
    >     >     Hi everyone,
    >     >
    >     >     i'm trying to complete some tests connecting a Modbus RTU device
    >     > (digital
    >     >     input converter).
    >     >
    >     >     The device is connected using a USB/485 converter, running with
    >     > pyModbus
    >     >     i'm able to communicate with the device.
    >     >
    >     >     I'm using this connection string:
    >     >
    >     >     PlcConnection plcConnection = new
    >     >
    >     >
    > PlcDriverManager().getConnection("modbus:serial:///dev/ttyUSB0?unit-identifier=1");
    >     >
    >     >     Then:
    >     >     PlcReadRequest.Builder builder =
    > plcConnection.readRequestBuilder();
    >     >     builder.addItem("value-0", "holding-register:14");
    >     >     PlcReadRequest readRequest = builder.build();
    >     >     PlcReadResponse response = readRequest.execute().get();
    >     >
    >     >     But i was unable to obtain a response, watching at the logs
    > there are
    >     >     plenty of:
    >     >     io.netty.channel.nio.NioEventLoop        : Migrated 1 channel(s)
    > to
    >     > the new
    >     >     Selector.
    >     >     Selector.select() returned prematurely 512 times in a row;
    > rebuilding
    >     >     Selector
    >     >
    >  org.apache.plc4x.java.transport.serial.SerialPollingSelector@37f2b566.
    >     >
    >     >     Another important part is that i'm unable to find where i can
    >     > configure the
    >     >     serial communication parameters, like baud rate, stop bits, etc.
    >     >
    >     >     Greetings,
    >     >     Alessio
    >     >
    >     >
    >
    >


Re: MODBUS over RTU configuration

Posted by Alessio Bernesco Làvore <al...@gmail.com>.
Yes, in fact right now we are using a python edge system (written by
ourselves) to connect, but i'd like to migrate it to java.
We mainly interact with OPC-UA or ModBus devices but sometimes the latter
are Serial 485 and so we need an RTU enabled driver.

I'll constantly keep an eye on the list and I'll contribute to the topic,
if I can give any help.

Greetings,
Alessio

On Wed, Sep 2, 2020 at 5:33 PM Christofer Dutz <ch...@c-ware.de>
wrote:

> Hi Alessio,
>
> thanks for volunteering to help with testing ... as Otto will agree ...
> testing stuff is sometimes a good thing to do ;-)
>
> Even if it's not highest priority for you, we should continue the
> discussion as this issue will come up sooner or later.
>
> Chris
>
>
> Am 02.09.20, 17:29 schrieb "Alessio Bernesco Làvore" <
> alessio.bernesco@gmail.com>:
>
>     Hello Chris,
>     thank you!
>
>     I'm currently using some exotic RTU devices, just for test, so mine is
> a
>     low priority question.
>     Of course i'm fully available to test any release against those
> devices.
>
>     Greetings,
>     Alessio
>
>     On Wed, Sep 2, 2020 at 5:14 PM Christofer Dutz <
> christofer.dutz@c-ware.de>
>     wrote:
>
>     > Hi Alessio,
>     >
>     > welcome on this super-cool community list of ours :-)
>     >
>     > Unfortunately I have a little "uncool" news ... while working on the
> new
>     > drivers, it occurred to me that we currently are absolutely able to
> run one
>     > protocol over multiple transports, however if the transports require
>     > different handling on the lowest level, we currently haven't got
> that base
>     > covered.
>     >
>     > We started discussing options on how to solve this problem, but the
>     > discussion is ongoing ...
>     >
>     > Unfortunately I didn't update the documentation ... as I thought
> we'd be
>     > able to implement this sooner.
>     >
>     > Possibly the 0.6.x version of PLC4X could work as starting with
> 0.7.0 we
>     > have deleted all existing drivers and have replaced them with new,
>     > generated ones and are still working on implementing all the
> features the
>     > old ones had. Unfortunately you seem to be the first person to ask
> for
>     > serial Modbus, so we hadn't prioritized that up too much.
>     >
>     > So for now .. please give the 0.6.1 a go (might have slightly
> different
>     > syntax and connection string) and join in on the discussion here on
> the
>     > list and possibly help us finish this ... as none of us have a serial
>     > Modbus device, it's sort of tricky to implement a driver for it.
>     >
>     > Chris
>     >
>     >
>     >
>     >
>     > Am 02.09.20, 16:50 schrieb "Alessio Bernesco Làvore" <
>     > alessio.bernesco@gmail.com>:
>     >
>     >     Hi everyone,
>     >
>     >     i'm trying to complete some tests connecting a Modbus RTU device
>     > (digital
>     >     input converter).
>     >
>     >     The device is connected using a USB/485 converter, running with
>     > pyModbus
>     >     i'm able to communicate with the device.
>     >
>     >     I'm using this connection string:
>     >
>     >     PlcConnection plcConnection = new
>     >
>     >
> PlcDriverManager().getConnection("modbus:serial:///dev/ttyUSB0?unit-identifier=1");
>     >
>     >     Then:
>     >     PlcReadRequest.Builder builder =
> plcConnection.readRequestBuilder();
>     >     builder.addItem("value-0", "holding-register:14");
>     >     PlcReadRequest readRequest = builder.build();
>     >     PlcReadResponse response = readRequest.execute().get();
>     >
>     >     But i was unable to obtain a response, watching at the logs
> there are
>     >     plenty of:
>     >     io.netty.channel.nio.NioEventLoop        : Migrated 1 channel(s)
> to
>     > the new
>     >     Selector.
>     >     Selector.select() returned prematurely 512 times in a row;
> rebuilding
>     >     Selector
>     >
>  org.apache.plc4x.java.transport.serial.SerialPollingSelector@37f2b566.
>     >
>     >     Another important part is that i'm unable to find where i can
>     > configure the
>     >     serial communication parameters, like baud rate, stop bits, etc.
>     >
>     >     Greetings,
>     >     Alessio
>     >
>     >
>
>

Re: MODBUS over RTU configuration

Posted by Christofer Dutz <ch...@c-ware.de>.
Hi Alessio,

thanks for volunteering to help with testing ... as Otto will agree ... testing stuff is sometimes a good thing to do ;-)

Even if it's not highest priority for you, we should continue the discussion as this issue will come up sooner or later.

Chris


Am 02.09.20, 17:29 schrieb "Alessio Bernesco Làvore" <al...@gmail.com>:

    Hello Chris,
    thank you!

    I'm currently using some exotic RTU devices, just for test, so mine is a
    low priority question.
    Of course i'm fully available to test any release against those devices.

    Greetings,
    Alessio

    On Wed, Sep 2, 2020 at 5:14 PM Christofer Dutz <ch...@c-ware.de>
    wrote:

    > Hi Alessio,
    >
    > welcome on this super-cool community list of ours :-)
    >
    > Unfortunately I have a little "uncool" news ... while working on the new
    > drivers, it occurred to me that we currently are absolutely able to run one
    > protocol over multiple transports, however if the transports require
    > different handling on the lowest level, we currently haven't got that base
    > covered.
    >
    > We started discussing options on how to solve this problem, but the
    > discussion is ongoing ...
    >
    > Unfortunately I didn't update the documentation ... as I thought we'd be
    > able to implement this sooner.
    >
    > Possibly the 0.6.x version of PLC4X could work as starting with 0.7.0 we
    > have deleted all existing drivers and have replaced them with new,
    > generated ones and are still working on implementing all the features the
    > old ones had. Unfortunately you seem to be the first person to ask for
    > serial Modbus, so we hadn't prioritized that up too much.
    >
    > So for now .. please give the 0.6.1 a go (might have slightly different
    > syntax and connection string) and join in on the discussion here on the
    > list and possibly help us finish this ... as none of us have a serial
    > Modbus device, it's sort of tricky to implement a driver for it.
    >
    > Chris
    >
    >
    >
    >
    > Am 02.09.20, 16:50 schrieb "Alessio Bernesco Làvore" <
    > alessio.bernesco@gmail.com>:
    >
    >     Hi everyone,
    >
    >     i'm trying to complete some tests connecting a Modbus RTU device
    > (digital
    >     input converter).
    >
    >     The device is connected using a USB/485 converter, running with
    > pyModbus
    >     i'm able to communicate with the device.
    >
    >     I'm using this connection string:
    >
    >     PlcConnection plcConnection = new
    >
    > PlcDriverManager().getConnection("modbus:serial:///dev/ttyUSB0?unit-identifier=1");
    >
    >     Then:
    >     PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
    >     builder.addItem("value-0", "holding-register:14");
    >     PlcReadRequest readRequest = builder.build();
    >     PlcReadResponse response = readRequest.execute().get();
    >
    >     But i was unable to obtain a response, watching at the logs there are
    >     plenty of:
    >     io.netty.channel.nio.NioEventLoop        : Migrated 1 channel(s) to
    > the new
    >     Selector.
    >     Selector.select() returned prematurely 512 times in a row; rebuilding
    >     Selector
    >     org.apache.plc4x.java.transport.serial.SerialPollingSelector@37f2b566.
    >
    >     Another important part is that i'm unable to find where i can
    > configure the
    >     serial communication parameters, like baud rate, stop bits, etc.
    >
    >     Greetings,
    >     Alessio
    >
    >


Re: MODBUS over RTU configuration

Posted by Alessio Bernesco Làvore <al...@gmail.com>.
Hello Chris,
thank you!

I'm currently using some exotic RTU devices, just for test, so mine is a
low priority question.
Of course i'm fully available to test any release against those devices.

Greetings,
Alessio

On Wed, Sep 2, 2020 at 5:14 PM Christofer Dutz <ch...@c-ware.de>
wrote:

> Hi Alessio,
>
> welcome on this super-cool community list of ours :-)
>
> Unfortunately I have a little "uncool" news ... while working on the new
> drivers, it occurred to me that we currently are absolutely able to run one
> protocol over multiple transports, however if the transports require
> different handling on the lowest level, we currently haven't got that base
> covered.
>
> We started discussing options on how to solve this problem, but the
> discussion is ongoing ...
>
> Unfortunately I didn't update the documentation ... as I thought we'd be
> able to implement this sooner.
>
> Possibly the 0.6.x version of PLC4X could work as starting with 0.7.0 we
> have deleted all existing drivers and have replaced them with new,
> generated ones and are still working on implementing all the features the
> old ones had. Unfortunately you seem to be the first person to ask for
> serial Modbus, so we hadn't prioritized that up too much.
>
> So for now .. please give the 0.6.1 a go (might have slightly different
> syntax and connection string) and join in on the discussion here on the
> list and possibly help us finish this ... as none of us have a serial
> Modbus device, it's sort of tricky to implement a driver for it.
>
> Chris
>
>
>
>
> Am 02.09.20, 16:50 schrieb "Alessio Bernesco Làvore" <
> alessio.bernesco@gmail.com>:
>
>     Hi everyone,
>
>     i'm trying to complete some tests connecting a Modbus RTU device
> (digital
>     input converter).
>
>     The device is connected using a USB/485 converter, running with
> pyModbus
>     i'm able to communicate with the device.
>
>     I'm using this connection string:
>
>     PlcConnection plcConnection = new
>
> PlcDriverManager().getConnection("modbus:serial:///dev/ttyUSB0?unit-identifier=1");
>
>     Then:
>     PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
>     builder.addItem("value-0", "holding-register:14");
>     PlcReadRequest readRequest = builder.build();
>     PlcReadResponse response = readRequest.execute().get();
>
>     But i was unable to obtain a response, watching at the logs there are
>     plenty of:
>     io.netty.channel.nio.NioEventLoop        : Migrated 1 channel(s) to
> the new
>     Selector.
>     Selector.select() returned prematurely 512 times in a row; rebuilding
>     Selector
>     org.apache.plc4x.java.transport.serial.SerialPollingSelector@37f2b566.
>
>     Another important part is that i'm unable to find where i can
> configure the
>     serial communication parameters, like baud rate, stop bits, etc.
>
>     Greetings,
>     Alessio
>
>

Re: MODBUS over RTU configuration

Posted by Christofer Dutz <ch...@c-ware.de>.
Hi Alessio,

welcome on this super-cool community list of ours :-)

Unfortunately I have a little "uncool" news ... while working on the new drivers, it occurred to me that we currently are absolutely able to run one protocol over multiple transports, however if the transports require different handling on the lowest level, we currently haven't got that base covered. 

We started discussing options on how to solve this problem, but the discussion is ongoing ... 

Unfortunately I didn't update the documentation ... as I thought we'd be able to implement this sooner. 

Possibly the 0.6.x version of PLC4X could work as starting with 0.7.0 we have deleted all existing drivers and have replaced them with new, generated ones and are still working on implementing all the features the old ones had. Unfortunately you seem to be the first person to ask for serial Modbus, so we hadn't prioritized that up too much.

So for now .. please give the 0.6.1 a go (might have slightly different syntax and connection string) and join in on the discussion here on the list and possibly help us finish this ... as none of us have a serial Modbus device, it's sort of tricky to implement a driver for it.

Chris




Am 02.09.20, 16:50 schrieb "Alessio Bernesco Làvore" <al...@gmail.com>:

    Hi everyone,

    i'm trying to complete some tests connecting a Modbus RTU device (digital
    input converter).

    The device is connected using a USB/485 converter, running with pyModbus
    i'm able to communicate with the device.

    I'm using this connection string:

    PlcConnection plcConnection = new
    PlcDriverManager().getConnection("modbus:serial:///dev/ttyUSB0?unit-identifier=1");

    Then:
    PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
    builder.addItem("value-0", "holding-register:14");
    PlcReadRequest readRequest = builder.build();
    PlcReadResponse response = readRequest.execute().get();

    But i was unable to obtain a response, watching at the logs there are
    plenty of:
    io.netty.channel.nio.NioEventLoop        : Migrated 1 channel(s) to the new
    Selector.
    Selector.select() returned prematurely 512 times in a row; rebuilding
    Selector
    org.apache.plc4x.java.transport.serial.SerialPollingSelector@37f2b566.

    Another important part is that i'm unable to find where i can configure the
    serial communication parameters, like baud rate, stop bits, etc.

    Greetings,
    Alessio