You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@plc4x.apache.org by Niclas Hedhman <ni...@hedhman.org> on 2018/02/12 10:11:59 UTC

Serialport comms?

Hi,
I was thinking about converting some of my protocol implementations to
plc4x, but I have only worked in the serialport space, (e.g Modbus/RTU
rather than Modbus/TCP).

There is a ancient Java specification (Java Comms API), which is not only
literally from last millennium, but rather poor as well.

So, what choices do we have?

* GNU has an implementation, which is rather bad Java code and the C/native
side needed a bit tweaking last time I worked with it.

* The best implementation I know is commercial, but perhaps we can entice a
code donation and/or a Apache Licensed API. I'll investigate that one...

* Our own implementation from scratch, which kind of belongs in Apache APR,
at least the C/native part.


Cheers
-- 
Niclas Hedhman, Software Developer
http://polygene.apache.org - New Energy for Java

Re: Serialport comms?

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

I guess the situation with the Serial protocols is identical to the ones for the IP-Based drivers. But I think also supporting serial protocols would be a valuable addition to PLC4X as still a lot of devices out in the wild only support this form of communication.

In the IP space we also see open-source drivers (usually with GPL License) which also look like ancient C translated to Java. I think we shouldn't even touch these GPL licensed drivers as using them directly would make PLC4X GPL and using their code as "inspiration" to implement our own would make PLC4X a "derivative work" and hereby GPL too, which we want to prevent at all costs. In the IP world we are currently implementing the drivers from scratch based on information we can get in a license that allows using that to implement a derivative work.

Beckhoff has been extremely kind in providing us with the specs for their protocols as well as allowing us to use that to implement our own driver. Siemens isn't that forthcoming (till now) ... most alternate source for information was usually available with a GPL license and we hereby couldn't use that. When implementing the Siemens S7 driver, the part that took most time, was to find information with an Apache compatible license and to reverse-engineer the missing parts :-/

Well if you could convince the commercial company to donate, that would be awesome. Depending on the code-quality we could then either integrate that directly or use it to implement a new driver from scratch.

If we can't get anyone to donate anything, we would have to implement the driver from scratch. Which I don't think is a too bad thing as this way we can directly write code that fits nicely into our existing landscape. 

So my preference would be:

- Get them to donate 
- Implement from the spec
- Use existing open-source driver (if licensing allows it)

Chris
 

Am 12.02.18, 11:16 schrieb "hedhman@gmail.com im Auftrag von Niclas Hedhman" <hedhman@gmail.com im Auftrag von niclas@hedhman.org>:

    Hi,
    I was thinking about converting some of my protocol implementations to
    plc4x, but I have only worked in the serialport space, (e.g Modbus/RTU
    rather than Modbus/TCP).
    
    There is a ancient Java specification (Java Comms API), which is not only
    literally from last millennium, but rather poor as well.
    
    So, what choices do we have?
    
    * GNU has an implementation, which is rather bad Java code and the C/native
    side needed a bit tweaking last time I worked with it.
    
    * The best implementation I know is commercial, but perhaps we can entice a
    code donation and/or a Apache Licensed API. I'll investigate that one...
    
    * Our own implementation from scratch, which kind of belongs in Apache APR,
    at least the C/native part.
    
    
    Cheers
    -- 
    Niclas Hedhman, Software Developer
    http://polygene.apache.org - New Energy for Java