zenon is a software platform from COPA-DATA for manufacturing and the energy industry. Machines and equipment are controlled, monitored and optimized. zenon’s particular strength is open and reliable communication in heterogeneous production facilities. Open interfaces and over 300 native drivers and communication protocols support the horizontal and vertical integration. This allows for continuous implementation of the Industrial IoT and the Smart Factory. Projects with zenon are highly scalable.
zenon is ergonomic, both for the engineer and for the end user. The engineering environment is flexible and can be used for a wide range of applications. The principle of “setting parameters instead of programming” helps engineers to configure projects quickly and without errors. Complex functions for comprehensive projects are supplied out-of-the-box to create intuitive and robust applications. Users can thereby contribute to increased flexibility and efficiency with zenon
You can create a container for a zenon Service Engine. This container contains a reference to the zenon files. Log files, Service Engine files and licenses are stored there.
In addition to this short manual, a complete user documentation is also available.
To create the container:
On your host, create a folder in which the Service Engine files of your Service Engine container are stored. Settings information and projects are stored there. This folder is called data path in the documentation. You can find the structure in the zenonDataTemplate.zip.
Copy the Service Engines files into the data-path\projects subfolder. If this folder is empty, the files will be created in the container the first time the Service Engine is started.
Configure the zenon installation. To do this, edit the files in data path. You can find detailed information on this in the zenon Configure Service Engine for Docker chapter.
Change the values in the zenon6.ini (data path\system\zenon6.ini):
VBF30: path to the Service Engine project. For example: C:\zenondata\projects[workspace]
DEFANWENDUNG30: Name of the Service Engine project.
Change the settings.xml (data-path\settings.xml). Here you can configure the license server, the primary DNS name and the processes to be started.
Open PowerShell.
Enter the following command: docker run -d -v [data-path]:C:\zenondata --name [Container-Name] copadata/service-engine-windows
data-path: path to the folder which should contain the saved data. The path you created in the first step.
Container name: name of the newly created container, for example: zenon
Example: docker run -d -v C:\zenondata:C:\zenondata --name zenon copadata/service-engine-windows
In this way, the files are created in the [data-path] folder.
Stop the container.
To do this, enter: docker stop [Container-Name]Container name: Name of the container which was created before with docker run.
To be able to use zenon in a Docker container, the required services must be available. These are automatically activated during installation.
This makes it possible:
to transfer Service Engine files by remote transport
to read back Service Engine files by remote transport
to automatically start, reload and close Service Engine
For the start, all the necessary subfolders and files must be available in the data path:
System\K5LICENSE.INI: license for zenon Logic.
System\License.ini: license for zenon.
System\zenon6.ini: settings for zenon
settings.xml: Settings for license server, container start behavior and Primary DNS-Suffix.
Projects\: collects project files.
LOG\: collects log files.
The configured license server is checked during the start. If a valid network license is available, Service Engine is licensed. If there is no valid license available, Service Engine cannot be started.
CodeMeter license server: This entry is needed by license.ini.
Primary DNS suffix: For network forwarding.
To configure settings.xml:
Go to the ...\ path [data path]\.
Open the settings.xml file.
Go to the <CodeMeterLicenseServer> section.
Enter the name of the computer on which the license is stored between the Tags <Address> and </Address>.
Repeat this step if necessary for an additional server entry.
Switch to the <Network> section.
Enter the primary DNS suffix for your network between the Tags <PrimaryDnsSuffix> and <\PrimaryDnsSuffix>.
This is the part of your DNS entry without the hostname.
If this entry remains empty, the default settings of the container will be used.
If necessary, you can configure the autostart of the Service Engine in the container. To do this, enter the following service and program information between tags <Autostart> and </Autostart>.
<Program>: initiates the section for the start of the service.
<Active></Active>: activates the autostart for the service. Active: true Inactive: false For example: <Active>true</Active>.
<Path></Path>: path to the service. For example, C:\zenonSetup\64\zenSysSrv.exe.
To be able to use zenon in a Docker container, you must provide a valid license and define the location where the license is saved.
Sources of information for:
License: license certificate or license manager
License storage location: Codemeter Web Admin
To license zenon for Docker:
Go to the ...\ path [data path]\system.
Open the License.ini file.
Enter the license information according to your license certificate:
SERIAL0 =: Serial number of your license. This entry is mandatory.
SERIAL0_DESC =: optional description of the use of the license.
SERIAL0_LOCATION =: License server address. This entry is mandatory.
Save the file.
Stop and restart the Docker container.
Enter: docker stop [container name] and docker start [container name]
A licensed zenon is available to you in the Docker container.
Edit the following entries:
[PATH]VBF30= Enter the path to the workspace here. Example: C:\zenondata\projects\Workspace1[DEFAULT]DEFANWENDUNG30= Enter the project name here.
For the zenon Service Engine server to run and be accessible, a Docker container is needed which can be accessed from the outside via the container hostname. Should access take place across domains, the fully qualified hostname (FQDN) must be used.
Note: According to Windows conventions, hostnames may not contain more than 15 characters.
You need an external network switch in your Hyper-V server. Check this in the Virtual Switch Manager setting on the Hyper-V server. If no external switch is available, you need to create one. This external switch is used by the Docker container.
SET THE PRIMARY DNS SUFFIX IN THE DOCKER CONTAINER
If you would like to use a server name with a DNS suffix, you must communicate the Primary DNS Suffix to the Docker container. For example: zenRT001.domain.internal. If the Primary DNS Suffix is not set, the zenon Service Engine does not recognize that it acts as the server. This is also the case if the Docker container can be pinged from the outside.
You can configure the suffix in the settings.xml in the Tag <Settings><Network><PrimaryDnsSuffix>.
You can create a container with an external switch using the following command:
docker run -d -v [data path]c:\zenondata --network [name of external switch] --hostname [unique host name] --name [container name] copadata/service-engine-windows
use the previously configured hostname zenRT001.domain.internal as the server name in your zenon network project.
You can use the same hostname for the zenon remote transport.
After the Service Engine files have been transferred and the zenon Service Engine in the Docker container has been started, zenon clients can access the server via zenRT001.domain.internal.
When a Docker container is restarted, it receives a new IP address. However, the DNS cache for the hostname of the container is not updated at the same time. Connections with the container by hostname are thus no longer possible.
Solutions:
In the context of the same domain: Execute the ipconfig /flushdns command line.
In general: Wait until the DNS cache has been updated after the defined timeout.