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" <[email protected]>:

    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 <[email protected]> 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 <[email protected]> 
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" <[email protected]>:
    > > 
    > >     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 <[email protected]> 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 <[email protected]> 
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 (<
    > >     > > [email protected]>) 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" 
<[email protected]>:
    > >     > > >
    > >     > > >     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: [email protected]
    > >     > > <[email protected]>*
    > >     > > 
    > >     > 
    > >     
    > > 
    > > 
    > 
    

Reply via email to