Hi Chris,
Thanks for that! At the end of the process I will document everything so it 
will be easier for all to understand, adapt or improve it.


Etienne

> Le 12 mars 2020 à 22:34, Christofer Dutz <christofer.d...@c-ware.de> a écrit :
> 
> Hi Etienne,
> 
> that's amazing news :-) ... congratulations :-)
> 
> Also had a look at your mspec and I think you have done a great job with 
> that. I wasn't quite sure about the relation between CipRRData and 
> CipExchange, but your solution looks rock-solid.
> 
> And now reading that you even managed to get something working, that makes me 
> very happy.
> 
> Tomorrow I'll be a little consumed with signing the contract with the KNX 
> foundation but I'll try to have a look at your fork.
> 
> Thanks for your great work :)
> 
> Chris
> 
> 
> 
> Am 12.03.20, 17:50 schrieb "Etienne Robinet" <43...@etu.he2b.be>:
> 
>    Hi all,
>    again a productive day, I pushed to my branch and the driver support 
> reading, multiple reading and the camel component works (in karaf) and takes 
> a List of strings. Tested it on a different PLC and it also worked! Next I'm 
> going to implement the array readings and then maybe writing (tests needs to 
> be done too).
> 
>    Etienne
> 
>>    On 2020/03/12 07:18:32, Etienne Robinet <43...@etu.he2b.be> wrote: 
>> Hi Chris,
>> yes that's what I thought so I managed to work around like this: 
>> 
>> https://github.com/etiennerobinet/plc4x/blob/eip/protocols/eip/src/main/resources/protocols/eip/eip.mspec
>> 
>> And this works for reading! I managed to make a quick test and read via the 
>> tag name. Now my question is: can I create sub-types that are also 
>> discriminated with sub-subtypes? That would allow to create the ReadRequest 
>> only, as the fields before are mainly constant/implicit.
>> Etienne
>> 
>>> On 2020/03/11 20:24:14, Christofer Dutz <christofer.d...@c-ware.de> wrote: 
>>> Hi Etienne,
>>> 
>>> you are defining the type CipRRData twice ... once as one of the sub-types 
>>> of EipPacket and once as a dedicated discriminated type.
>>> 
>>> Chris
>>> 
>>> 
>>> PS: I have no idea why I didn't finish writing this email and I just 
>>> noticed when closing everything down ... sorry for the late reply.
>>> 
>>> 
>>> 
>>> Am 11.03.20, 09:30 schrieb "Etienne Robinet" <43...@etu.he2b.be>:
>>> 
>>>    Hi all,
>>> 
>>>    I have a quick question. I've been working on the CIP encapsulation but 
>>> hitting a problem with the mspec design. Here is the error I am facing: 
>>> https://i.imgur.com/iCfh59n.png
>>> 
>>>    The problem here is that this CipRRData should also be of type 
>>> EipPacket. When the command of an EipPacket is '0x66' this means SendRRData 
>>> (for Read/Write and Request/Response so I have to discriminate it on the 
>>> sub level). The problem is that after generation, CipRRData implements 
>>> Message but does not extend EipPacket. How should I do it? Here is the 
>>> mspec:
>>> 
>>>    [discriminatedType 'EipPacket'
>>>        [discriminator uint 16 'command']
>>>        [implicit      uint 16 'len' 'lengthInBytes - 24']
>>>        [simple        uint 32 'sessionHandle']
>>>        [simple        uint 32 'status']
>>>        [array         uint 8  'senderContext' count '8']
>>>        [simple        uint 32 'options']
>>>        [typeSwitch 'command'
>>>                ['0x0065' EipConnectionRequest
>>>                    [const  uint    16   'protocolVersion'   '0x01']
>>>                    [const  uint    16   'flags'             '0x00']
>>>                ]
>>>                ['0x0066' EipDisconnectRequest
>>>                ]
>>>                ['0x006F' CipRRData
>>>                    [const  uint    32  'EipInterface' '0x00000000']
>>>                    [const  uint    8   'timeout'   '0x0000']
>>>                ]
>>>            ]
>>>    ]
>>>    [discriminatedType 'CipRRData'
>>>        [simple         uint        8       'itemNb']
>>>        [array          CipItem     'items'    length  'itemNb']
>>>        [discriminator  uint        8       'CipService']
>>>        [typeSwitch 'CipService'
>>>            ['0x52' CipUnconnectedRequest
>>>                [simple CommandData    'data']
>>>            ]
>>>            ['0xCC' CipReadResponse
>>>                [reserved   uint            8   '0x0000']
>>>                [simple     uint            8   'status']
>>>                [simple     uint            8   'extStatus']
>>>                [simple     uint            8    'dataType']
>>>                [array      uint            8   'data'  length  'dataType']
>>> 
>>>            ]
>>>        ]
>>>    ]
>>> 
>>>    [type 'CipItem'
>>>        [simple uint    16  'typeID']
>>>        [simple uint    16  'size']
>>>    ]
>>> 
>>>    [discriminatedType 'CommandData'
>>>        [reserved         uint    8   '0x02']
>>>        [reserved         uint    8   '0x20']   // 
>>> setRequestPathLogicalClassSegment
>>>        [reserved         uint    8   '0x06']   // set request class path
>>>        [reserved         uint    8   '0x24']   // 
>>> setRequestPathLogicalInstanceSegment
>>>        [reserved         uint    8   '0x01']   // setRequestPathInstance
>>>        [discriminator  uint    8   'CipService']
>>>        [typeSwitch 'CipService'
>>>            ['0x4C' CipReadRequest
>>>                [simple     uint    8   'RequestPathSize']
>>>                [reserved   uint    8   '0x91']
>>>                [array      uint    8   'tag'   length  '(RequestPathSize*2) 
>>> - 1']
>>>                [reserved   uint    16  '0x0001']  //itemCount set to 1 for 
>>> now
>>>            ]
>>>        ]
>>> 
>>>    ]
>>> 
>>> 
>>>    [enum int   16   'CIPDataTypeCode' [uint 8  'size']
>>>        ['0X00C1'   BOOL            ['1']]
>>>        ['0X00CA'   REAL            ['4']]
>>>        ['0X00C4'   DINT            ['4']]
>>>        ['0X00C3'   INT             ['2']]
>>>        ['0X00C2'   SINT            ['1']]
>>>        ['0X02A0'   STRUCTURED      ['88']]
>>>        ['0X02A0'   STRING          ['88']]
>>>        ['0X02A0'   STRING36        ['40']]
>>>        ['-1'       UNKNOWN         ['-1']]
>>>    ]
>>> 
>>> 
>>>    Thanks for any help!
>>> 
>>>    Etienne 
>>>    On 2020/03/10 15:18:47, Etienne Robinet <43...@etu.he2b.be> wrote: 
>>>> Hi all,
>>>> I've managed to implement the EIP Session Register/Unregister (used for 
>>>> connected message which is best for high frequency fetching). I will push 
>>>> it to my branch and create a document explaining my steps.
>>>> Next I want to do was to to the CIP encapsulation part for accessing tag 
>>>> by their name. The thing is, CIP is (from what I heard) proper to Allen 
>>>> Bradley. Should I leave it in the EIP driver or modify and adapt the 
>>>> current AB driver later on? For now I will continue on eip.
>>>> 
>>>> Etienne
>>>> 
>>>> On 2020/03/10 14:41:42, Cesar Garcia <cesar.gar...@ceos.com.ve> wrote: 
>>>>> Hi,
>>>>> 
>>>>> You can document the process step by step, you will surely find 
>>>>> observation
>>>>> points.
>>>>> 
>>>>> I am working with the handwritten S7 driver, but in the future I would
>>>>> support the team in migrate to mspec, so the experience you will gain with
>>>>> the Etheret / IP is very important.
>>>>> 
>>>>> Best regards,
>>>>> 
>>>>> El mar., 10 mar. 2020 a las 9:17, Christofer Dutz (<
>>>>> christofer.d...@c-ware.de>) escribió:
>>>>> 
>>>>>> Hi Etienne,
>>>>>> 
>>>>>> I would strongly suggest you install the Antlr plugn for the IDE you use.
>>>>>> The problem is that ANTLR seems to gobble up a lot of errors and tries to
>>>>>> be smart in a lot of cases.
>>>>>> Whenever I have problems like this I use the ANTLR visual parser to parse
>>>>>> a block of mspec (one type at a time) and try to narrow down the cause.
>>>>>> 
>>>>>> Chris
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Am 10.03.20, 13:31 schrieb "Etienne Robinet" <43...@etu.he2b.be>:
>>>>>> 
>>>>>>    Hi all,
>>>>>>    I've been struggling with implementing the EIP driver. I started
>>>>>> writing the mspec after creating both a module for the protocol and the 
>>>>>> one
>>>>>> from the driver. I copied and adapted the pom(s) from the AB-ETH but only
>>>>>> the enum is generated.
>>>>>>    Here is a link to the forked branch:
>>>>>> https://github.com/etiennerobinet/plc4x/tree/eip
>>>>>> 
>>>>>>    I've been studying the EIP/CIP protocol and now I am confident what
>>>>>> the packages should contain but I can not figure out how to generate this
>>>>>> with the templates. Am I missing something?
>>>>>> 
>>>>>>    Etienne
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> -- 
>>>>> *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: 0416-681.03.99*
>>>>> 
>>>>> *Cel: 0414-760.98.95*
>>>>> 
>>>>> *Hotline Técnica SIEMENS: 0800 1005080*
>>>>> 
>>>>> *Email: support.aan.automat...@siemens.com
>>>>> <support.aan.automat...@siemens.com>*
>>>>> 
>>>> 
>>> 
>>> 
>>> 
>> 
> 
> 

Reply via email to