Technical Data PLC Engine
At a Glance
The PLC Engine allows data processing in production lines.
It connects controllers, devices, SCADA systems and databases from various
manufacturers. It processes the data and dispatches them between the
connected devices and other systems. It collects data, manages them and
creates overviews for OEE applications.
Additional all the data can be handled over OPC. This are processed data and all data from the connected controllers, devices, OPC systems and databases.
PLC Engine is the perfect component for using it for communications in Industrie 4.0.
FunctionalityWith logic tables you define all the things your plant will need:
- Read and write data from industrial controllers and devices.
- Exchange data with databases. Read, write, update, delete.
- Read and write files, check for changes, create files, delete files.
- Send emails.
- Read and write data over OPC UA and Classic OP.
- Sequence chains with conditions for changing the actual step.
- Calculate data. Round, basic calculations, constants, conversions, reinterpretations.
- Check data. AND OR XOR NOT. Comparisons for equal, less, greater. Float number plausability.
- Manage data structures. Create them, decode structures.
- Collect data. Combine and separate texts. Combine and separate binary data.
- Lots of triggers: Time trigger, data change trigger, bit trigger, file create trigger, file modify trigger, directory change trigger.
Online diagnostics for shortening the configuration time
- Watch connections and their state.
- Watch variables. Status, value, who needs them.
- Watch logic tables and their behaviour.
- Watch and modify single variables (Status variable).
- Diagnostics logger for long term watching.
The configuration works in graphical style or with simple lists.
Lot of Wizards simplify this.
The example logs from barcode reader, adds a timestamp and writes both into a .csv file.
This example reads a barcode, gets the print data from a database and prints the result.
Diagnostics boost the startup in plants. Use Your smartphone or tablet and all of the status displays.
The diagnostics logger handles longer running information collecting.
- OPC Pipe Open interface
- OPC UA (Unified Architecture)
- OPC DA (Classic OPC over DCOM, available under Windows only)
The maximum number of OPC clients is depending on used resources only. A PC
from 2014 can handle multiple hundred connections.
All OPC interfaces are working locally in one PC or over network.
in case of Classic OPC Classic please do not use DCOM over networks, but it will be supported.
OPC UA supports the fast binary protocol. Security is supported in all variants. Multicast discovery is supported.
Data access data items are supported up to 200K each.
OPC UA functionality and limitations
The OPC UA implementation conforms to the specification 1.04.
An internal discovery server is active on standard, it supports multicast discovery also.
It can be used as a global discovery server.
Alternatively an external discovery server can be configured.
The session timeout will be limited to one hour.
AddNodes is supported with the following restrictions:
- AddNodes is possible only in Objects.Topics.Memory tree
- Reference type must be OpcUaId_Organizes
- NodeId can't be specified
- BrowseName can't contain a dot
- NodeClass must be Variable or Object
- NodeAttributes for Variable:
- DisplayName: unspecified or equal to BrowseName
- Description: unspecified or any text
- Value: is ignored; new variables will always be initialized to 0 (if numeric) or "" (if string type)
- OpcUaType_SByte, OpcUaType_Byte
- OpcUaType_Int16/32/64, OpcUaType_UInt16/32/64
- OpcUaType_Float, OpcUaType_Double
- One of the structure types under Types -> DataTypes -> BaseDataType -> Structure -> UserStructures; these are the structures known to the PLC Engine core.
- if the structure is given both here and via TypeDefinition, both settings must match
- if unspecified, OpcUaType_Byte or the structure type of the TypeDefinition is used
- ValueRank, ArrayDimensions: unspecified (= scalar), scalar or a one-dimensional array of any size
- AccessLevel, UserAccessLevel: unspecified or (OpcUa_AccessLevels_CurrentRead | OpcUa_AccessLevels_CurrentWrite)
- MinimumSamplingInterval: unspecified or 0
- Historizing: unspecified or 0
- WriteMask, UserWriteMask: unspecified or OpcUa_NodeAttributesMask_Value
- NodeAttributes for Object:
- DisplayName: unspecified or equal to BrowseName
- Description: unspecified or any text
- EventNotifier, WriteMask, UserWriteMask: unspecified or 0
- TypeDefinition for Variable:
- one of the structure types under Types -> VariableTypes -> BaseVariableType -> BaseDataVariableType -> UserStructures; these are the structures known to the PLC Engine core.
- TypeDefinition for Object:
Traffic between different OPC interfaces (tunneling) is supported. It will be used for the OPC DA tunnels.
- MQTT Client if a station need to be a device
- MQTT Broker, the server
MQTT comes from the Internet of Things world. It is simple and fast.
A device can simultanously send data to multiple devices.
You can use the client and broker on the same device at the same time.
Controller InterfacesAll controllers will be connected over network. Often this is Ethernet, WLAN or other networks. All serial Ethernet and MPI Ethernet gateways for industrial controllers usage are supported.
Configuration InterfacesThe configuration can be done with the shipped configuration software or over OPC with the System topic.
The connection for the configuration is encrypted with TLS 1.2. The encryption can be switched off for usage in countries where encryption is forbidden.
Network Redundancy for connections to controllers and devices
Connections to devices and controllers are supporting network redundancy.
Double and triple redundancy can be selected.
Two redundancy operation modi are possible.
In dynamic redundancy any of the connections is working as master. If it breaks another connection becomes the master connection.
In static redundancy the first connection is the master. If it breaks another connection becomes the master. If the first connection works again it will become the master connection again.
The connections of the redundancy should work on different netaork adapters.The adapters need different IP subnets for proberly work..
Controller Types and Controller Protocols
- Siemens S7 1200 and 1500 family. The optimized data blocks are supported, all symbols and comments are browsed online.
- Siemens S7 over RFC1006 and Sinec H1. Supported are S7 200, 300 and 400, Logo 8. Siemens CP or the Ethernet interface onboard the CPU can be used. Mainstream MPI Gateways as Hilscher Netlink, Helmholz Netlink, IBH Softec Netlink, INAT Echolink, Process Informatik S7Lan or Softing Netlink are supported, too. S7 compatible systems as VIPA Speed7 can be used, too.
- Siemens S5 over RFC1006, PLC Header, RAW or Sinec H1. Supported are Siemens CPs, INAT CPs, Helmholz CPs, IBH Softec S5Net, Process Informatik S5Lan.
- Rockwell Compact Logix and Control Logix, all firmware versions. Rockwell Micro 8 series as the 800, 810.
- Mitsubishi Melsec Q family.
- BACnet devices. BACnet is common used in building automation
- Devices using the Modbus TCP protocol.
- Phoenix Contact
- All systems and devices which can be accessed with OPC UA or Classic OPC.
- Raw data.
Bacnet will be used over IP / UDP.
Maximum length of strings: 256 Byte
Status text elements are supported (state_text)
Supported charsets: UTF-8, UTF-16, Latin-1
Unions ("Choice") and struktures ("Sequence") are existing for important values. All not implemented instances will not be shown.
Enum values are represented as UINT32. Some special enum are handled as bool. Values in "Octet-String" and "Bit-String" can be written in whole only.
BACnet - Writing values with priority-arrayThese object types have a priority-array in addition to their present-value property:
The BACnet spec says:
- priority-array is read-only and contains 16 entries (that can be a valid value or NULL).
- present-value is read-write and contains 1 value (the non-NULL value with the lowest priority from priority-array, or the value from relinquish-default if no non-NULL value in priority-array exists).
- Writing to present-value uses an optional priority parameter to write to the correct entry in priority-array.
The TANI implementation works as follows:
- priority-array is read-write and contains 16 structure entries with 2 fields:
* Value: the data value in this entry (or 0 if no valid value is present)
* ValueValid: a boolean value; 1 if Value is valid, 0 if not (NULL value).
- Writing to an element of priority-array implicitly uses a "write present-value with priority" operation to change the desired value
- Writing to priority-array[i].Value always creates a non-NULL entry
- Writing 0 to priority-array[i].ValueValid creates a NULL entry
- Writing 1 to priority-array[i].ValueValid creates a non-NULL entry with value 0 (this is usually not very useful)
- Writing to priority-array[i] (as a structured data type) creates a NULL entry when ValueValid is 0. Else a non-NULL entry with the specified Value is created.
- present-value is read-write and contains the value obtained by BACnet protocol.
- Writing to present-value doesn't transfer the priority parameter. The BACnet device will implicitly write to priority entry 16 in this case.
This mechanism was chosen to allow choosing the write priority via OPC without changing the read syntax for present-value property. This also allows writing NULL values via OPC.
PLC Engine is a database client. It connects with user and password to the database.
The standard SQL statements INSERT INTO, UPDATE, SELECT, DELETE, FUNCTION and PROCEDURE will be used over the wizards. Other statements will be configured directly.
- My SQL (from version 1.9 not under Windows XP)
- PostGre Sql (not for Windows XP)
- Microsoft SQL
- Sybase SQL Server, Sybase ASE, SAP ASE (Adaptive Server Enterprise)
- Oracle can be used with ODBC
In one database multiple sub databases can be used.
During the configuration the databases will be browsed. This will require depending on the type of the database or the interface a username and a password, possibly more.
The database itself need to be configured that it can be accessed.
PLC-Engine will need an account on each database.
For using PLC Engine on a PC the locally installed databases can be used also.
On PLC Engine Device a My SQL database is installed. This database will be managed completely by PLC Engine.
The OPC Server contains a logger for diagnostics purposes during plant startup. The logger can be configured. The system load can be big if all controller ; data are logged.
Maximum number of configurable connections: 1000.
Maximum length of a single item: 4GB.
Maximum number of elements each connection: 4 Million.
Maximum number of elements (Items): 16 Million.
Maximum OPC groups each connection: 100.
Maximum number of passive connection for each port is 999.
The OPC synchronous functions returning a bad quality immediately if the PLC connection is not established.
Changes in controller configuration will be checked all 10 seconds.
Fields can be up to 64K in length each.
Multi dimensional arrays can have up to seven dimensions.
Fields can be up to 64K in length each.The maximum amount of configurable
logic tables is 60000.
The maximum length of one logic table is 4GB.
Maximum number of entries on a logic element 60000.
File operations can handle up to 64K in each request. Adding data to a file is limited only by the space on the disk.
Multi dimensional arrays can have up to seven dimensions.
SpeedThe throughput will be mainly limited by the controller speed or the reaction time of OPC applications.
Read requests to the controller will be optimized as much the controller is supporting this. For that elements will be collected to blocks reading more than requested, but not for inputs and outputs. These optimizing can be affected by configuration separately for each connection. Optimizing can be switched off, too.
Write requests to the controller are collected or handled in that order the application did called the system.
On OPC all optimizing the individual OPC uses is supported.
The normal time in cyclic controller requests is 50ms.It can be faster if the controller polling interval is set to zero.
Only data are sent to OPC which did change in the controller between two read requests.
The throughput of one logic table normally will be handled below 10ms. Lot amounts of logic tables containing much of mathematics functions may rise the 10ms. This is true especially on embedded devices without a mathematical co processor.
No handling can be faster than the controller and device data acquisition. The same is true for database access.
Logic tables are constructed for linear logic. Loops are not possible.
A sequence chain supports the maximum of 65535 steps each.
Error Handling in Logic Tables
All logic elements which functions can fail are supporting an OK bit. The user need handle this preventing unexpected run-time behavior.
Variables and Structures
Structures can not contain loops.
A structure or variable can be up to 4GB in its size.
Status Diagnostics Lists
The status diagnostics lists are supporting arrays up to 100 values each. If an array is longer than 100 values the first 100 elements are shown only. Writing this array is not possible.
Field and text optimizingsThe from version 1.8 existing field optimizings will prevent reading the long fields too often, the index is requested on standard only.This optimizing bases of the fact that the index does net changed too frequently.
Usage of memory
- Program code: A minimum of 6MB is used. The exactly memory usage is depending of the internal behavior of the operating systems. So dynamic libraries are loaded once for all running instances using them. Example: If the standard library is not loaded already it will use additional 4MB of memory.
- User data: The minimum data usage is 2MB internally. Additional the controller data are held in memory for comparing new data. Each item uses the length of data and additional 64 bytes. Each configured connection occupies 4KB.
- Fields can be up to 64K in length each.The maximum amount of configurable logic tables is 60000.
- The maximum length of one logic table is 4GB.
- Maximum number of entries on a logic element 60000.
- Depending on the license the limits can be less.
Usage of computation timeThe consumed computation time is depending on the load with communication. Most the time it will be waited for controller data or OPC application reaction.
All software is working with events. This maximizes the throughput and minimizes the usage of computation time.
Multiple CPU are supported. Up to ten CPU will be used, the main work will be handled by three CPU.
InstallationThe installation does depending on the product install multiple parts separately. On uninstall not all products are deleted automatically. But all installed products can be deleted over the menu or the software part in the system control manager.
The user settings will be preserved and not deleted during uninstall.
- Windows 7, 8, 8.1, 10 (all versions). Older versions as XP and Vista also. 64 and 32 bit.
- Windows Server 2008, 2012, 2016 and 2018.
- Linux on the Raspberry and Odroid computers (64 and 32 bit).
- Linux on many Phytec devices.
- Linux on the Wiesemann & Theis pure.box 3, pure.box 5.
- Linux on a PC with Debian, Ubuntu, Suse, Arch, Centos, Redhat and other Distributions.
- Linux 64 Bit as Docker or Kubernetes Container.
- OPC DA will require Microsoft Windows. All from Microsoft supported operating systems for Intel and all user languages will be supported. The latest service pack must be present.
- Under Windows the OPC server are working as service, Linux runs them as daemon.
- The Raspberry version supports all Linux distributions offered for this platform.
- All other will run under lot of operation systems also, mostly Linux based.
- Under Linux the OPC Server needs a POSIX compatible System. The Standard Library needs V2.2 as minimum. The configuration software is bases on KDE 5 and is needing the kdelibs. Please use actual distributions like Debian, Ubuntu, Suse, Redhat or similar.
- Tested is: Windows Intel 32 and 64 bit, Linux Intel 32 and 64 Bit, Linux MIPS CPU, Linux ARM 32 and 64 Bit CPU.
- Running in virtual machines is supported. Docker containers are supported, too.
- Windows 7 needs as minimum service pack 1 for using the drivers.
- All configurations are compatible to all OPC servers, also over operating systems.