Owner: Tatsoft Engineering | Updated: March 2026 | FrameworX: fx-2020.1.3+
Download
? Download PharmaTablet.dbsln![]()
No hardware required — uses ValueSimulator to generate all process data.
The PharmaTablet example demonstrates a complete pharmaceutical tablet manufacturing plant built in FrameworX, covering three production stages: granulation, tablet compression, and film coating. Simulated process data is collected in real time, historized to PostgreSQL, and synchronized to Snowflake every 10 seconds — showcasing a full OT/IT data pipeline with no custom middleware.
[ValueSimulator] --> [FrameworX Runtime] --> [Unified Namespace]
|
+---------------------------+---------------------------+
| | |
[HMI Display] [Historian] [Scripts]
| |
[PostgreSQL] (10s cycle)
PharmaDatabase |
PharmaTable [Snowflake DW]
All tags are organized under an ISA-95 compliant Unified Namespace — a single logical hierarchy that decouples data consumers (HMI, Historian, Scripts) from the underlying device layer. Replacing the simulator with a real PLC requires only a device binding change; nothing else in the solution needs to be updated.
UNS Path |
Equipment |
Key Variables |
|---|---|---|
|
High-Shear Granulator |
Temperature, Impeller Speed, Chopper Speed, Moisture, Phase, Batch ID |
|
Tablet Press |
Turret Speed, Compression Force, Tablet Weight, Thickness, Production Count, Reject Count |
|
Film Coating Pan |
Inlet/Outlet Temp, Pan Speed, Spray Rate, Atomization Pressure, Coat Weight Gain |
All process variables are continuously historized via the FrameworX Historian module into a PostgreSQL database (PharmaDatabase, table PharmaTable). The Historian handles timestamping, compression, and deadband filtering automatically.
A server-side script (write_postgre_to_snowflake) runs on a 10-second cycle, reading new rows from PostgreSQL and writing them incrementally to Snowflake. This creates a near-real-time bridge to the cloud data warehouse for analytics and reporting workloads.
Property |
Value |
|---|---|
Sync interval |
10 seconds |
Source |
PostgreSQL · |
Destination |
Snowflake (configurable) |
Sync mode |
Incremental — new rows only |
Configuration Required
Snowflake credentials (account, warehouse, database, schema, user, password) must be set inside the script before starting the runtime.
The MainPage display shows a plant-wide process overview in a single screen, organized left to right following the physical production flow.
Zone |
Symbol |
Gauges |
|---|---|---|
Granulator |
Animated blower (impeller motion) |
SemiCircle — Temperature; Linear — Moisture (color-ranged) |
Tablet Press |
Tacho — Turret Speed |
CircularGauge — Compression Force; KPI boxes — Production / Rejects |
Coating Pan |
Tacho — Pan Speed |
Dual vertical linear gauges — Inlet / Outlet Temperature |
Two live TrendCharts at the bottom track Press parameters (Compression Force, Weight, Thickness) and thermal data (Granulator Temperature, Coating Inlet/Outlet Temps) over a 5-minute rolling window.
Component |
Required |
Notes |
|---|---|---|
FrameworX |
|
fx-2020.1.3 or later, Enterprise license |
PostgreSQL |
|
Version 12+. Create |
Snowflake Account |
|
Trial account sufficient for demo. |
Physical PLC |
|
Not required — ValueSimulator generates all data. |
PharmaTablet.dbsln in the FrameworX Designer.PharmaTable is created automatically on first run.write_postgre_to_snowflake script and set your account, warehouse, database, schema, username, and password at the top of the file.Verify the pipeline
Run SELECT COUNT in your Snowflake worksheet — the row count should increase every 10 seconds while the runtime is active.
FROM PharmaTable