Hello,
We have been working on a product for almost a year now and it seems like the portfolio is about to grow. We have used C++ to develop most of our complex logic, and have used the PLCnext engineer to glue them together, and to provide the HMI connections.
One of the main issues at the moment is that as our hardware platform began to evolve and diversify we started maintaining a software branch for each of them, with incompatible PLCnext Engineer projects. However, all of them still have more or less the same basis with minor variations. As you can imagine, we are beginning to deal with a lot more overhead for fixing issues and adding features to shared components.
Now, to get to the point: we are thinking of creating an architecture which can alleviate these issues. The idea is to introduce a hardware abstraction layer, which allows us to have a main software component which always stays the same no matter what our hardware is, and can be somehow configured in a broad sense. Then for each hardware platform, we want to create a separate but lightweight PLCnext Engineer project.
To explore the possibilities here I had a few questions:
* Is there any advice on how to approach such cases? What options are out there?
* Is it possible to put two components into a single block and publish it as a new component?
* Is it possible to have nested PLCnext engineer projects to encapsulate certain aspects and reuse them? I have noticed the button "File -> Release as Library" but I have not yet been able to figure what it actually does and how it can be used.
* Is it possible to somehow package HMI screens along with components and then include them in a project?