As a side note to hardware stuff.. I was thinking of getting some test devices with ethernet/ip a while ago. Stephen was kind to point me at affordable Rockwell products I could get in EU (still didn't happen). Recently someone at openhab community forums mentioned MOXA ioLogik E1200 family in context of basic digital I/O or pulse (S0) counter. It turned out that this device have several protocols. It has modbus tcp, ethernet/ip and some weird flavor of opc (moxa aopc).
As far I understand activation of EIP requires only online registration.
I will think of organizing some for myself to cross check EIP stuff at some day as I am too contained to get into PLC programming. It is definitely in price range I could sacrifice to expand home lab.


Best,
Łukasz



On 19.01.2022 18:13, Stephen Snow wrote:
Hi Chris,
On Wed, 2022-01-19 at 12:52 +0000, Christofer Dutz wrote:
Hi Stephen,

Thanks for your input :-)

You're welcome, it's easy to be an armchair quarterback.;)

With my statement I was referring to Modbus-TCP which will most
likely be used with TCP,
Agree.
but I agree I should have chosen a different example. (We should
investigate how Modbus-ASCII differs and mabe also directly support
that).
Sorry, my bad, it is actually just ASCII for all PLC's (that I have
used anyway), and it is based on Hayes modem protocol. It is the
traditional serial communication for remote units at places like waste
water treatment plants, etc...
I guess even Modbus is probably the version with the most variants in
transport being used. However, I would highly doubt, that for example
PROFINET will be anything else than raw ethernet frames sent on a raw
transport (with UDP for setting up the connection).

Agreed.

I didn't want to limit PLC4X to use only the "supported" ones, in
general I think if a user wants to do PROFINET via Serial, the
framework shouldn't keep him from trying, but the user shouldn't
expect it to work.

Okay, implimentation specifics can be an area of concern, so in my mind
"expect to work" has always come with caveats and in my experiences
too.
Also testing all these combinations is a bit tricky, as they require
hardware for testing, and I at least don't have that.

I have some ...
  * Rockwell Automation Micro820-20QBB, 1xSerial (RS-232/RS-485,
    Modbus/ASCII capable), 1xEth (Ethernet/IP, Modbus-TCP)
  * Omron CP1H PLC (x2), 2xSerial RS-232 Omron protocols, 1xUSB prg port
  * Red Lion Control's G308C, 1xEth, 1xRS485, 2xRS232, 1xUSB, pretty
    much any protocol you can pick for all ports except USB. (HMI with a
    micro PLC and mini PC more or less)
  * Raspberry Pi IIb, 1xEth, 1xSerial (needs linedriver addon for that)
  * Allen-Bradley PowerFlex 523 VFD, DSI I believe can run as Modbus RTU
If you need something (code) tested, I don't mind helping. I had a
Modicon PLC around but had to return it, M221.
Would you please be so kind and start a new thread about the problems
you were mentioning?

Sure, let me poke at it for a bit.
Are you planning on bringing your Modbus-RTU work back to the
project? Cause that's been something there was quite a bit of
discussion about and interest for.

Yes, I volunteered to help Ben with it, I forked the repo (Modbus-RTU)
and cloned it which I am working with now.

I think for protocols like EIP, KNX and BacNET there seems to be a
wider range of interpretations in the Specs, and we have seen a
number of "interpretation" by vendors that seem to differ from the
specs. So it might be that for the one or the other device or vendor,
we might have to come up with flavors, variants or modes in the
drivers. However again, this is a bit problematic as we don't have
the hardware.

I want to get the Rockwell Automation CIP protocol (EIP) sorted since I
will be more likely to use it around here in Allen-Bradley land. Again,
any particular needs here I don't mind helping where I can with.

Auto-discovery is also something we have started working on ... I
think the Go version is a bit more ahead regarding that, but for
example PROFINET (WIP) already allows auto-detecting devices. Do you
want to join in on working on this (Auto-discovery in general)?

Yes.
I think regarding your request to tweak the settings of the
transport: Transports do have a list of supported options and we
generally wanted to run the transports with sensible defaults
(defaults provided by the corresponding driver) and make them
overridable with options in the connection-string. So some of this
tweaking should already be possible. However especially regarding
serial transport options, I haven't got any hardware using any non-
defaults, so difficult to test.

Again, testing is something I can do for the above hardware I list.
Unfortunately, I haven't been as active with Siemens S7 products as I
would have liked since the use is low in my area. The S5 and Sinumerik
platforms were the ones I was familiar with, PLC and CNC systems. So I
am not as cozy with Siemens Canada as I was back then. Not sure any of
my old contacts would be around.

Stephen
Chris



-----Original Message-----
From: Stephen Snow <s40...@gmail.com>
Sent: Mittwoch, 19. Januar 2022 13:33
To: dev@plc4x.apache.org; Łukasz Dywicki
<lukasz.dywi...@connectorio.com>
Subject: Re: [DISCUSS] Extend PlcDriver with "supportedTransports"?

Hello,
I would like to just add to this conversation if I may.
On Wed, 2022-01-19 at 11:00 +0000, Christofer Dutz wrote:
Well the problem with eagerly including transports is:

For example, using Modbus ... most transports being used will
probably
be onls TCP.
Not entirely true, there is Modbus Ascii which is used over serial
and is not limited in scope like RTU. Sometimes referred to as
extended.
And with Modbus-RTU it should only work with Serial, but there are
people using serial-to-network converters, so you also could use
Modbus-RTU via TCP transport
Yes, been there done that.
... also, if we ever support passive-mode we would be adding raw-
passive. I think initially I made the drivers explicitly depend on
the
default transports and have people include the optional ones. I
think
for the raw transports on some systems you needed to run the
application as root or with privileged network access.

So for this project, which is an API to talk to any PLC presumably, I
think that the end use case does determine the extent to which
discovery is desirable. In my use case(s) I am trying to make a
viable product from, I am finding the driver inflexible in the
regards to messaging. As an example, I can connect both via TCP and
via Serial transport to the same PLC. After a bit of bashing, I was
able to get a response via Modbus-RTU from a lone address in the PLC.
But the physical serial connection was established and I could also
build a message manually and just use the serial transport to
send/receive it and works fine. I was getting netty.io complaints
going through the PLC4X protocol. The TCP connection is EIP protocol
and the PLC is a Rockwell Automation Micro820, so at this time I am
going to dig into the EIP protocol bit to determine why the message
is failing with it since the structure is what the PLC is expecting.
I believe that there was some discussion of Allen-Bradley CIP
protocol issues, I'm going to dig into that presently.
But admittedly this has been so many years ago .. I don't even know
if
this is a problem today.

My reasoning on using "supported" is that these are the transports
we
are aware of and explicitly support, if the user uses S7 with
Serial
for example, that's not "supported" and if he has trouble with this
... well I guess it's his problem ;-)

So, I have worked as a Systems Integrator, a Solution Provider, and a
machine builder (turn-key solutions) for a long time and have seen
almost everything that was made for purpose 'A' being made to work
for purpose 'B'. The one thing about PLC's is that they can be used
for a broad range of tasks, though they are more specialized
generally, but that is usually I/O count or motion capability. IMO,
the driver(s) should work with whatever transport is available
(within reason). I frequently am connected (out in the field) to one
device on a network, using one driver, and talking to two or more
devices on the network via pass-thru, which most OEM's like Siemens
support, does PLC4X contemplate supporting such? From the POV of the
user, I would like to connect to a e'net switch, and browse to
connect, this is my current goal, discoverable PLC with automatic
connection.
I understand my use case is likely very specific in that I am a sole
proprietor and follow my customers needs while trying to look out for
their future needs, so I am not always doing the latest and greatest,
just what they require (and are willing to pay for).

So, what would you be proposing on returning? @Łukasz Dywicki ...
instead of returning "tcp" to return "Class<TcpTransport>" (or
however
we do it)?

I would return a transport object, ie the instance that was created.
I need to be able to after connection change things like baud rate
etc., or in the case of Modbus-RTU protocol, the timing of the
communication instructions needs to be configurable and should be
easily exposed with getter/setter methods. Also, from the POV of a
serial transport, I need to be able to set the port mode in some
cases (RS-232 or RS-485 or RS-
422) for whatever purpose, like talking on an RS-232/RS-485/RS-422
network all over the serial port.

Stephen

Chris


-----Original Message-----
From: Łukasz Dywicki <l...@code-house.org>
Sent: Mittwoch, 19. Januar 2022 11:47
To: dev@plc4x.apache.org
Subject: Re: [DISCUSS] Extend PlcDriver with "supportedTransports"?

I come over this issue yesterday, but on other end. While trying to
get
0.10 running under OSGi I found that "wiring" if fine but whole
thing
fails to work at runtime.
This boils down to several things, but Transport SPI lookup too. I
agree that listing supported transports types (tcp/udp/serial/can)
is
fine for start. On other hand it is unlikely we will ever get S7
working over serial line so we could in theory declare that it
works
only with TcpTransport. Later one is actually beneficiary, at least
for OSGi, cause it makes S7 driver classpath aware of TcpTransport
requirement.
This was issue Etiane was facing back then while working with Camel
components to wire everything in.

Anyhow, I am fine with both, with some level of preference for
listing
transports directly. If we scope dependencies properly end users
will
get drivers working out of the box with very few entries in their
build tool.

Best,
Łukasz

On 19.01.2022 10:44, Christofer Dutz wrote:
Hi Cesar,

right now, I would only like to give back a list of strings that
are
the codes of the supported transports.
Perhaps we should extend the transports to give tooling more
assistance on how a given transport is to be configured.

Chris


-----Original Message-----
From: Cesar Garcia <cesar.gar...@ceos.com.ve>
Sent: Sonntag, 9. Januar 2022 17:29
To: Apache PLC4X <dev@plc4x.apache.org>
Subject: Re: [DISCUSS] Extend PlcDriver with
"supportedTransports"?

How are they?

Not only the transport, but also the data structures of the
items.

This would allow the user to have a reference of what you can
request in the items.

Looking to the future, this would be a must for the OPC-UA
server.

Kind regards,

El dom, 9 ene 2022 a las 6:10, Christofer Dutz
(<christofer.d...@c-ware.de>)
escribió:

Hi all,

I know initially I built the Plc4X API to generally allow any
form
of driver to use any form of transport.
However, this only would have worked in theory.

I think we should probably have every driver provide a list of
supported transports.
This would also help make tool integration easier.

If we see that for example sometimes, we have ModbusRTU passed
along TCP/UDP connections via serial-to-ethernet adapters, we
can
definitely support that and if we come across a mode of
operation,
that we haven't encountered, it should be easy to extend.

But this way we could ensure that we build the drivers in a way
that they know what to expect.

What do you think?



--
*CEOS Automatización, C.A.*
*GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,* *PISO 1,
OFICINA
2, AV. RAUL LEONI, SECTOR GUAMACHITO,*

*FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI*
*Ing.
César García*

*Cel: +58 414-760.98.95*

*Hotline Técnica SIEMENS: 0800 1005080*

*Email: support.aan.automat...@siemens.com
<support.aan.automat...@siemens.com>*


Reply via email to