Hey everybody,

first, a great compliment for starting this excellent project and bringing it 
this far forward.
I am on the dev mailing list since some months and was following the 
development very interested but was not able to give any input due to other 
duties.
We are a small german start-up doing (at least some of) the IoT and Industry 
4.0 stuff everybody is talking about. Currently, we have our own home-build 
implementation of the S7 protocol as we do a lot of communication with Siemens 
PLCs.
We also had some discussions and ideas of a more general interface as we start 
to incorporate other devices and protokolls in our stack. And from my 
perspective PLC4J is the “ideal” approach and fits nearly perfect with our 
ideas and thus, we are currently thinking about replacing our own code with 
PLC4J and in turn, try to bring this project forward in the directions we aim 
to go.

Thus, from my side a warm welcome to the community and all contributors and I’m 
really looking forward for the discussions with you!

And let me start with a first idea of a feature, I think we would need.
For a short background, we are doing a lot of interaction with PLCs and usually 
read a lot of data (many variables) from the PLC with high frequencies.
Thus, our approach is not to read single addresses and cast them in one step 
but to read one connected memory region (datablock) and extract all variables 
of interest from the block and cast them to the respective types.
The main reason for this is to reduce the communication load on the PLC side.
I hope that I’m not duplicating existing ideas or concepts but I didn’t find 
anything specific to this problem.

To be able to switch to PLC4J my idea was to have a concept of “Batch” Reads or 
Writes, kind of like the JDBCs batch mode.
This could have two variants. One would be the possibility to give the driver a 
list of variables to read and the driver batches them as it makes sense and 
then performs the read opaque and returns all the result.
The other option, especially in the async case could be that the reader 
internally batches subsequent calls until certain thresholds (number of 
commands, time limit) are met and then performs batched reads of consecutive 
memory regions.

What do you think of this approach?

Best!
Julian
pragmatic industries

Reply via email to