PLCnext on LinkedInPLCnext on Instagram  PLCnext on YouTube Github PLCnext CommunityStore PLCnext Community


 How to create a Blog Entry

Find user stories of interesting ideas and solutions in this blog.
Note: The Makers Blog shows applications and user stories of community members that are not tested or reviewed by Phoenix Contact.

For questions, please go to the FORUM section and create a new entry there.

Want to add your own solution here? Just login as a registered user and click the "Create Blog entry" button. Find a short intro video by clicking the "How to create a blog entry" button. If you experience any problems with editing or publishing please contact us at This email address is being protected from spambots. You need JavaScript enabled to view it..

For those who are unfamiliar with the details of the PLCnext architecture, the following diagram might proof helpful.


As you can see non real-time components can communicate with the PLCnext runtime via Remote Service Calls and Access to shared data with the GDS and the the Operating System APIs. There are services running on the PLC exposing a part of this functionality to the network and these are the service we are going to use to create a simple GUI-Application that will use some of the available services.

Depending on the  project at hand, sometimes there is a need to rely on Time table and schedule functionality. Especially in building applications, but can be practical in lots of situations.

Because this is really well integrated in the Emalytics (Niagara) framework (which we have on the ILC2050 BI controller), I decided to make a makersblog where I explaine the functionality of this and integrate the output of this schedule/calendar function into the AXC F 2152  via Modbus TCP.

Written by: Damian Bombeeck


In this tutorial I will show you how to download, build and install a third-party open-source library, in my case libcurl, on your PLCnext AXC F 2152 controller. I’ll go through the different steps and explain why these steps are needed, furthermore I’ll include all bash commands, pieces of code and side-notes concerning the installation. The tutorial is mainly focussed on CMake and won’t include languages as C#, JSON or Java.

"Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. Use the conda install command to install 720+ additional conda packages from the Anaconda repository." This and further information could be accessed on the official Miniconda website. If some packages are not available via PIP, Miniconda could be a solution.

What if you do not need a newer version of Python than the one that comes preinstalled on the controller (3.5.6), but you do want pip installed? There is a simple way to do so!

You can download the installation script via the curl command:

curl https://bootstrap.pypa;io/ -o

The above command downloads an installation file to the current directory which you can execute with the following command:

This will install pip on your controller together with wheel and setuptools.

If you wish not to install these, you can install pip with the following command:

python --no-wheel --no-setuptools

If you do need all the new bells and whistles of the latest Python distribution I gladly advise you to watch Martins Makers blog regarding Python!

With Java 9, a new tool called jlink was introduced. It combines modules and builds an all-in runtime image. On the one hand, the whole 32 bit ARM JDK can be run on an AXC F 2152. But with jlink and modules it is possible to reduce the resources needed for your Java application. It creates a bundle with just the necessary parts of the JDK needed for your application.