You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@plc4x.apache.org by Christofer Dutz <ch...@c-ware.de> on 2020/01/18 08:52:37 UTC

[NOTICE] develop branch now switched to next-gen-core state

Hi all,

I just wanted to inform you that yesterday I merged the changes from the “next-gent-core-2” branch back to develop.
The next-gen S7 driver is now renamed from s7ng to s7 as it’s going to replace the old one fully (Still need to fix one thing and then it’s ready to go)
In its current state we have lost a lot of drivers which we once had.

I will put in some extra effort to port at least two of these drivers to Mspec as soon as possible (Modbus and EtherNet/IP)
Some drivers like the ADS and the S7 are currently still located in the sandbox, so be sure to enable the “with-sandbox” profile.

Would be cool if you could try it out.

Chris

Re: [NOTICE] develop branch now switched to next-gen-core state

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

I just committed a first version of the Modbus mspec ... I think if you take the modbus spec  from here (http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf)
And the little part about TCP from here (http://www.modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf)

I think you will understand the concepts of mspec pretty quickly.

The only tricky part might be the typeSwitch thing ... let me add a little explanation here:

In the typeSwitch you define a list of inputs for the case decision ... in the modbus mspec there is only one.
So in this case we have 3 inputs: Boolean error, Byte function, Boolean response
So what happens now is that for each case only the existing values are matched:
In case of the ModbusPduError sub-type, only the first parameter is checked, so if "error" is "true", it will use this type and ignore the following ones.
So that's why all other cases have the first parameter set to "false". Theoretically you could have a type with no arguments at all at the end, which would become some sort of "default-type", but in general this wouldn't make any sense.

An "implicit" type is one who's value is sort of redundant. So if I have a "length" field that defines the length of some payload ... the value of this field is implicitly defined by the data array. So in this case the value is only used during the parsing and is not persisted in the entity. In order to know the value when serializing, you need to specify an expression so the serializer can calculate the value ... I think there are several places where I'm using implicits ... please feel free to read and learn. 

On the website I should have a reasonably up-to-date documentation on the field types (http://plc4x.apache.org/developers/code-gen/protocol/mspec.html) ... I know there is room for improvement, but we'll keep on improving it.

Hope that gets you started.

Chris


Am 18.01.20, 10:22 schrieb "Lukas Ott" <ot...@gmail.com>:

    Hi Chris,
    
    I would like to learn more when you starting building the Mspec for Modbus
    and generate the drivers.
    So a little tutorial on how we build the Mspec - step by step not just the
    final result and more details on how the drivers are then generated using
    the Mspec.
    
    For example - Mspec -> Complex Type generates this class structure in the
    driver etc. So we can make it easier to start working on supporting other
    programming languages as well.
    Because the overall flow and building gets clearer.
    
    As you may know I am interested in supporting e.g. Python but for me
    personally the current complexity needs some break down to smaller tasks so
    that i have an entry point where i can support the project easier.
    
    Lukas
    
    Am Sa., 18. Jan. 2020 um 09:52 Uhr schrieb Christofer Dutz <
    christofer.dutz@c-ware.de>:
    
    > Hi all,
    >
    > I just wanted to inform you that yesterday I merged the changes from the
    > “next-gent-core-2” branch back to develop.
    > The next-gen S7 driver is now renamed from s7ng to s7 as it’s going to
    > replace the old one fully (Still need to fix one thing and then it’s ready
    > to go)
    > In its current state we have lost a lot of drivers which we once had.
    >
    > I will put in some extra effort to port at least two of these drivers to
    > Mspec as soon as possible (Modbus and EtherNet/IP)
    > Some drivers like the ADS and the S7 are currently still located in the
    > sandbox, so be sure to enable the “with-sandbox” profile.
    >
    > Would be cool if you could try it out.
    >
    > Chris
    >
    


Re: [NOTICE] develop branch now switched to next-gen-core state

Posted by Lukas Ott <ot...@gmail.com>.
Hi Chris,

I would like to learn more when you starting building the Mspec for Modbus
and generate the drivers.
So a little tutorial on how we build the Mspec - step by step not just the
final result and more details on how the drivers are then generated using
the Mspec.

For example - Mspec -> Complex Type generates this class structure in the
driver etc. So we can make it easier to start working on supporting other
programming languages as well.
Because the overall flow and building gets clearer.

As you may know I am interested in supporting e.g. Python but for me
personally the current complexity needs some break down to smaller tasks so
that i have an entry point where i can support the project easier.

Lukas

Am Sa., 18. Jan. 2020 um 09:52 Uhr schrieb Christofer Dutz <
christofer.dutz@c-ware.de>:

> Hi all,
>
> I just wanted to inform you that yesterday I merged the changes from the
> “next-gent-core-2” branch back to develop.
> The next-gen S7 driver is now renamed from s7ng to s7 as it’s going to
> replace the old one fully (Still need to fix one thing and then it’s ready
> to go)
> In its current state we have lost a lot of drivers which we once had.
>
> I will put in some extra effort to port at least two of these drivers to
> Mspec as soon as possible (Modbus and EtherNet/IP)
> Some drivers like the ADS and the S7 are currently still located in the
> sandbox, so be sure to enable the “with-sandbox” profile.
>
> Would be cool if you could try it out.
>
> Chris
>