Skip to content

Industrial communication SDK

Equipment communication for SECS/GEM, Modbus and OPC UA

C, C++ and .NET libraries with simulators, documentation in Korean and English, and MCP servers for AI tools. Packages for Windows x64 and Linux x64; macOS arm64 for development.

C · C++ · .NET · Qt · MFC

Standards and protocols

  • SEMI E5 SECS-II
  • SEMI E37 HSMS
  • SEMI E4 SECS-I
  • SEMI E30 GEM
  • GEM300 capability catalog
  • Modbus TCP · RTU · ASCII
  • Modbus/TCP Security
  • OPC UA opc.tcp
  • OPC UA PubSub over MQTT 5.0

Coverage notes are on each product page.

Code

Real code from the SDK examples

These excerpts are copied from the examples that ship with the SDK.

OPC UA C client

Source: examples/opcua/opcua_client.c:149-171
memset(&options, 0, sizeof(options));
options.struct_size = (uint32_t)sizeof(options);
options.version = 1;
status = pdcomm_opcua_client_options_init(&options);
if (status != PDCOMM_OPCUA_OK) { print_error("options", status); goto done; }
options.timeout_ms = timeout;
options.policy = policy;
options.mode = mode;
options.flags = policy == PDCOMM_OPCUA_POLICY_NONE ? PDCOMM_OPCUA_ALLOW_NONE : 0;
options.certificate_der.data = certificate;
options.certificate_der.size = certificate_size;
options.private_key_pem.data = key;
options.private_key_pem.size = key_size;
options.trusted_server_der.data = trust;
options.trusted_server_der.size = trust_size;
status = pdcomm_opcua_client_connect((const uint8_t *)argv[1], strlen(argv[1]), &options, &client);
/* The SDK copied the identity; wipe the private key now. */
example_wipe(key, key_size);
key = NULL;
if (status != PDCOMM_OPCUA_OK) { print_error("connect", status); goto done; }
status = pdcomm_opcua_client_activate_anonymous(client);
if (status != PDCOMM_OPCUA_OK) { print_error("activate", status); goto done; }
printf("Session activated (anonymous)\n");

From the OPC UA C client example: open a SignAndEncrypt secure channel with the client certificate, private key and trusted server certificate, then activate an anonymous session.

Simulators

Test against a simulator before the equipment arrives

Each simulator runs as a desktop app, a headless program and an MCP server, and uses the same engine as the SDK.

Overview workspace of the host simulator with TCP and HSMS selected and GEM communicating.

SECS/GEM simulator

Plays the host or the equipment side of a GEM connection, with 12 workspaces from Overview to SECS-I and GEM300.

Simulator guide

Platforms

Platforms and bindings

What each product ships for, as listed in the documentation.

ProductWindows x64Linux x64macOS arm64Bindings
SECS/GEM SDK and simulator Package Package Development only C, C++, .NET (Qt examples)
Modbus SDK and simulator Package Package Package C, C++, .NET, Qt, MFC
OPC UA SDK and simulator Package Package Package C, C++, .NET, Qt and MFC clients
MQTT (OPC UA PubSub) Via OPC UA simulator Via OPC UA simulator Via OPC UA simulator No SDK binding

macOS is for development and testing; run final tests on the operating system you deploy to. Linux packages are verified on Ubuntu 24.04. Packages don't include .NET; reference the assemblies or source projects in the SDK folder.

Licensing

Simple developer licensing

  • Licensed per named developer, per module.
  • Royalty-free distribution for OPC UA, Modbus and MQTT applications.
  • SECS/GEM equipment adds a runtime license per machine, bound to its host id.
  • 30-day evaluation for every account. First year of maintenance included.

Try PDComm on your own equipment

Create an account, choose your modules and platform, and download with a 30-day evaluation license.