Hi Together,

As symbolic addressing is already implemented in ADS you can look there how it 
is currently implemented.

Sebastian

> Am 24.08.2018 um 11:12 schrieb Christofer Dutz <christofer.d...@c-ware.de>:
> 
> Hi Julian,
> 
> but wouldn't Symbolic Addressing, just be a different Query String for a 
> S7CommPluss driver instance? That could probably return:
> 
> - SymbolicAddressingQuery
> - StandardAddressingQuery
> 
> ... 
> Or could you reference structures with a symbolic name?
> 
> And you all have to keep in mind ... by using something like "@Field('address 
> string')" we will be producing code hard-coded to one type...
> 
> Chris
> 
> 
> 
> 
> Am 24.08.18, 11:03 schrieb "Julian Feinauer" <j.feina...@pragmaticminds.de>:
> 
>    Hey Chris,
> 
> 
> 
> 
> 
>    this definition seems valid to me but is lacking one thing which is the 
> "killer feature" for me, the "symbolic addressing".
> 
>    I spent some time the last week to "disassemble" parts of the TIA file 
> format (zap14).
> 
>    The aim is to take the zap14 file and to extract all symbolic names and 
> the respective offsets (in not optimized blocks, of course).
> 
>    I plan then to be able to init something (Connection, EntitiyManager) with 
> these information and use the symbolic names for the rest of the "session".
> 
>    And my feeling is that this would fit better in an layer on top of the 
> current Connection than directly in the Connection.
> 
> 
> 
>    What do you think?
> 
>    Or is this something you would not incorporate in our JPA at all?
> 
> 
> 
>    Julian
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>    Am 24.08.18, 10:25 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        Hi Julian,
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        well I think I would define that "JPA" (Java PLC API ;-) ) layer the 
> following way (Joking, but lacking a name, I'll just call it JPA):
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        - Each driver can provide the types he likes
> 
> 
> 
> 
> 
> 
> 
>        - Each request item can address exactly one of these types
> 
> 
> 
> 
> 
> 
> 
>        - As soon as someone wants to reference more items with one query and 
> eventually re-use that --> This is where JPA comes in
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        Would that be a valid definition?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        We already thought about something like that and there was a thread to 
> this [1] so maybe it's worth following up on that thread ... Have to admit 
> that I also have to re-read it first ;-)
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        Chris
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        [1] 
> https://lists.apache.org/thread.html/dfca30f6c3319e592c4a6412924edc9a31f2e18844204dc373eebc5d@%3Cdev.plc4x.apache.org%3E
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>        Am 24.08.18, 10:18 schrieb "Julian Feinauer" 
> <j.feina...@pragmaticminds.de>:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            Hi all,
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            I decided to start a new thread to answer to Sebastians mail below 
> regarding the Plc4X JPA Like layer.
> 
> 
> 
> 
> 
> 
> 
>            First, I think, we should get a feeling of what we all think this 
> layer could or should do and what kind of features we want to incorporate 
> there.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            From my perspective this layer should allow the following:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>              1.  Provide access to fields via “symbolic names” or aliases. 
> They could be provided by the system (S7CommPlus) or they could be registered 
> with the “EntityManager”
> 
> 
> 
> 
> 
> 
> 
>              2.  Annotations for POJOs “PlcEntities”
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            I Imagine something like
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            @PlcEntity
> 
> 
> 
> 
> 
> 
> 
>            class Pojo {
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                  @PlcTimestamp
> 
> 
> 
> 
> 
> 
> 
>                  private long timestamp;
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                  @PlcField(“%DB8:DBL4:INT”)
> 
> 
> 
> 
> 
> 
> 
>                  private int value;
> 
> 
> 
> 
> 
> 
> 
>            }
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            Of course this is a very first sketch but I suggest to collect our 
> ideas on a Confluence to develop the idea “over time”.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            Best
> 
> 
> 
> 
> 
> 
> 
>            Julian
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>            Am 24.08.18, 09:03 schrieb "Sebastian Rühl" 
> <sebastian.ruehl...@googlemail.com.INVALID>:
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                Hi Julian,
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                Depending on the type of change this might something I could 
> implement to ADS locally if its just a change of the Address format.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                Chatting with Chris we stumbled over the size attribute in a 
> ReadRequestItem. This might become obsolete too as in its form right now it 
> isn’t that helpful.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                FYI: I was about to read something like this from the plc 
> https://infosys.beckhoff.com/index.php?content=../content/1031/tcplclibutilities/html/tcplclibutilities_timestruct.htm&id=
>  
> <https://infosys.beckhoff.com/index.php?content=../content/1031/tcplclibutilities/html/tcplclibutilities_timestruct.htm&id=>
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                What we can see here that we need read 8 words from the plc. 
> We can do that by suppling the IndexGroup/IndexOffset and a Length(ADS) of 16 
> Bytes. Then I would need to chunk the response into 2 bytes. Im still not 
> sure if this is something I would integrate into the plc4x directly or into a 
> layer above aka JPA/Plc4xJPA (Java Persistence Layer alike) [maybe for the 
> basic structs of ADS it might be worth it]. Then there are complex types 
> which are mixed 
> https://infosys.beckhoff.com/index.php?content=../content/1031/tcplclibutilities/html/tcplclibutilities_timestruct.htm&id=
>  
> <https://infosys.beckhoff.com/index.php?content=../content/1031/tcplclibutilities/html/tcplclibutilities_timestruct.htm&id=>.
>  Here a chunking into 8 would not work as you would need to read fixed 
> different chunks (aligned to it type) from a byte stream. For this I would 
> then use a „RAW“ read and slice it in the application level (or PLC4XJPA).
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                Maybe working on the Plc4xJPA (working title you name it ;) 
> would be a good idea to get some impression of requirements from that side 
> too (I’ll will scope that on my next TODOs).
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                What is still missing in your PR suggestion „3) Define 2 types 
> of ItemRequest/-Responses:“. But that might be ok as these changes are an 
> addition to that and as I wrote in the first sentence this might be local to 
> the S7 address format in the first step anyway so in my opinion you are good 
> to go (Maybe leave out the renaming of the query for now to keep the PR 
> footprint a bit lower).
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                Regarding API design: Its hard. It should be simple yet 
> powerful. So if the first iteration doesn’t fit well we just refactor it :)
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>                Sebastian
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 

Reply via email to