How apache/plc4x works
Apache PLC4X provides libraries for uniform access to industrial PLCs across several language runtimes. A representative Java workflow selects a protocol driver from a connection URL, obtains and connects a protocol-specific connection, then uses that connection to communicate with a PLC. The repository also includes language-specific managers, protocol support, an object-to-PLC mapping tool, and specification-based code-generation components. Edges are limited to relationships shown in excerpts or documented in the README; unsampled subsystems are represented without inferred internal call chains.
Main entry points: MessageFormatParser.java MSpec Parser · PlcConnection.java Java Connection API · PlcEntityManager.java Object-PLC Mapping · DefaultPlcDriverManager.java Java Driver Manager
Components 18
Client APIs
- Java Driver Manager
plc4j/api/src/main/java/org/apache/plc4x/java/DefaultPlcDriverManager.java - Java Connection API
plc4j/api/src/main/java/org/apache/plc4x/java/api/PlcConnection.java - Go Driver Manager
plc4go/pkg/api/PlcDriverManager.go - Go Query Model
plc4go/pkg/api/model/plc_query.go - Python Driver Manager
plc4py/plc4py/PlcDriverManager.py - .NET Driver Manager
plc4net/api/PlcDriverManager.cs
Protocol Support
- Request Transactions
plc4go/spi/transactions/RequestTransactionManager.go - S7 SZL Service
plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/userdata/S7SzlService.java - Generated Protocol Models
plc4go/protocols - PLC4C Runtime
plc4c/api - OPC UA Chunk Storage
plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/chunk/MemoryChunkStorage.java
Application Tools
- Object-PLC Mapping
plc4j/tools/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java
Code Generation
- MSpec Parser
code-generation/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatParser.java - Java Generators
code-generation/language/java/src/main/java/org/apache/plc4x/codegeneration/language/java/generators - C Language Output
code-generation/language/c/src/main/java/org/apache/plc4x/language/c/CLanguageOutput.java - Go Language Output
code-generation/language/go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java - Python Language Output
code-generation/language/python/src/main/java/org/apache/plc4x/language/python/PythonLanguageOutput.java
Other components
- Industrial PLC
Connections 13
- Java Driver Manager → Java Connection API: creates and connects
plc4j/api/src/main/java/org/apache/plc4x/java/DefaultPlcDriverManager.java - Java Connection API → Industrial PLC: communicates with
plc4j/api/src/main/java/org/apache/plc4x/java/api/PlcConnection.java - Go Driver Manager → Industrial PLC: opens PLC connection
- Python Driver Manager → Industrial PLC: opens PLC connection
- .NET Driver Manager → Industrial PLC: opens PLC connection
- Request Transactions → Generated Protocol Models: coordinates protocol requests
- S7 SZL Service → Industrial PLC: requests device data
- Object-PLC Mapping → Java Driver Manager: uses connection manager
plc4j/tools/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java - Object-PLC Mapping → Java Connection API: reads PLC fields
plc4j/tools/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java - MSpec Parser → Java Generators: feeds generation
- MSpec Parser → C Language Output: feeds generation
- MSpec Parser → Go Language Output: feeds generation
- MSpec Parser → Python Language Output: feeds generation