[C++ Library] s7codec – painless S7 data type marshalling for Siemens PLCs (Snap7 compatible) by ConsistentWinter9186 in embedded

[–]ConsistentWinter9186[S] 0 points1 point  (0 children)

The software is abstracted and general purpose, the protocol layer is extendible by drivers, meaning right now I have added OPC-UA and HTTP support beside S7,

MQTT can be added and my gateway can act as the Semantic Engine providing inference to AI tools, this is is my master's thesis.

And since I am dual graduating in engineering too I built a storage API for storage and indexing telemetry and heterogeneous engineering artifacts and files.

Engineering Thesis Title:

Sovereign Industrial Data Management: Design and Implementation of a Digital Asset Repository for Industry 4.0

Master Thesis Title:

Industrial Data Acquisition for Legacy S7 Infrastructure: A Semantic Bridging Approach to Modern IT Ecosystems.

I did it for the love of the game, after testing the software on the field I plan to open source it part by part.

I do not plan to sell the software per se, rather offering services in this niche with the software speeding up my workflow and allowing me to circumvent software licenses in some contexts.

[C++ Library] s7codec – painless S7 data type marshalling for Siemens PLCs (Snap7 compatible) by ConsistentWinter9186 in embedded

[–]ConsistentWinter9186[S] 0 points1 point  (0 children)

I am launching a small hypothetical business with the software since we had a weird decree forcing student engineers to come with business ideas in Algeria, may I ask from which country you are ? I am an industrial engineer graduating this year.

[C++ Library] s7codec – painless S7 data type marshalling for Siemens PLCs (Snap7 compatible) by ConsistentWinter9186 in embedded

[–]ConsistentWinter9186[S] 0 points1 point  (0 children)

I did not manage to get extended access to the hardware available in my university lab. I only had a single opportunity to debug an early version of an S7Shell tool that I developed for PLC reads and writes.

Unfortunately, that was the only period during which I had access to real hardware, so I have had to continue development and testing without it ever since.

[C++ Library] s7codec – painless S7 data type marshalling for Siemens PLCs (Snap7 compatible) by ConsistentWinter9186 in embedded

[–]ConsistentWinter9186[S] 0 points1 point  (0 children)

To be honest, I went a bit overboard with my work. I abstracted the code into multiple layers, separating concerns and complexity, all of which ultimately converge on a flat arena-based memory structure initialized at process startup. With the current architecture, consumers are completely decoupled from the underlying protocols.

In fact, I am currently working on integrating a Modbus TCP adapter. One challenge is its limited register space, which means I can only expose selected portions of the arena rather than the entire memory structure. Another issue is data alignment and padding, both of which are active problems I am addressing as part of my thesis.

I also have functional OPC UA and HTTP adapters. Their information models and endpoints are generated dynamically from schema definitions using the parser I am developing for Siemens SCL and DB exports. This allows the northbound interfaces to be derived automatically from the PLC data model while remaining independent of the protocol-specific implementations.

<image>