Platforms
Product Lines
Platforms Safecrete Safewall Mine Operating System (Coming Soon)
On this page

Legacy System Integration

Overview

The IndustryOS IoT Gateway excels at integrating legacy industrial systems with modern IoT platforms. This use case demonstrates connecting older equipment, SCADA systems, and proprietary protocols to IndustryOS for monitoring, analytics, and digital transformation.

Challenges

Common Legacy System Issues

  • Proprietary protocols - vendor-specific communication
  • Outdated interfaces - RS-232, RS-485, serial connections
  • No network connectivity - isolated equipment
  • Limited data access - basic monitoring only
  • No cloud support - on-premises only
  • Security concerns - exposed to internet risks

Solution Architecture

Gateway as Protocol Bridge

1
2
3
4
Legacy Devices  →  Gateway  →  IndustryOS Platform
(Modbus RTU)       (Protocol       (MQTT/HTTP)
(Serial)           Translation)
(Proprietary)

Benefits

  • Preserve existing infrastructure - no equipment replacement
  • Add modern capabilities - cloud connectivity, analytics
  • Secure communication - encrypted connections
  • Data aggregation - combine multiple sources
  • Remote monitoring - access from anywhere

Implementation Scenarios

Scenario 1: SCADA Integration

Challenge

Connect legacy SCADA system to cloud for remote monitoring.

Equipment

  • SCADA system with Modbus TCP
  • PLCs with Modbus RTU
  • HMI panels

Gateway Configuration

Modbus TCP for SCADA:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
  "modbus": {
    "type": "tcp",
    "host": "192.168.1.100",
    "port": 502,
    "devices": [
      {
        "deviceName": "SCADA-Master",
        "unitId": 1,
        "attributes": [
          {"tag": "SystemStatus", "address": 1000}
        ],
        "telemetry": [
          {"tag": "LineSpeed", "address": 2000},
          {"tag": "Production", "address": 2001}
        ]
      }
    ]
  }
}

Serial to Cloud:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "modbus": {
    "type": "serial",
    "port": "/dev/ttyUSB0",
    "baudrate": 9600,
    "devices": [
      {
        "deviceName": "PLC-001",
        "unitId": 1,
        "telemetry": [
          {"tag": "Temperature", "address": 100},
          {"tag": "Pressure", "address": 101}
        ]
      }
    ]
  }
}

Results

  • Real-time SCADA data in cloud
  • Historical data analysis
  • Remote monitoring
  • Alarm notifications

Scenario 2: RS-485 Equipment

Challenge

Modernise factory floor with RS-485 sensors.

Equipment

  • Temperature sensors (Modbus RTU)
  • Flow meters (Modbus RTU)
  • Energy meters (Modbus RTU)

Implementation

Gateway Setup:

  1. Install RS-485 to USB adapter
  2. Configure Modbus connector
  3. Map sensor registers
  4. Set polling intervals

Configuration:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
  "modbus": {
    "type": "serial",
    "port": "/dev/ttyUSB0",
    "baudrate": 9600,
    "parity": "N",
    "stopbits": 1,
    "devices": [
      {
        "deviceName": "Temp-Sensor-${unitId}",
        "unitId": 1,
        "pollPeriod": 5000,
        "telemetry": [
          {
            "tag": "temperature",
            "address": 0,
            "objectsCount": 1,
            "type": "16int",
            "multiplier": 0.1
          }
        ]
      }
    ]
  }
}

Benefits

  • Collect data from multiple sensors
  • Centralised monitoring
  • Trend analysis
  • Predictive maintenance

Scenario 3: Proprietary Protocol

Challenge

Integrate equipment with vendor-specific protocol.

Solution

Custom connector development.

Custom Connector:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class LegacyConnector(Connector):
    def __init__(self, gateway, config, connector_type):
        super().__init__()
        self._gateway = gateway
        self._protocol = VendorProtocol(config)
        
    def open(self):
        self._protocol.connect()
        self._start_polling()
        
    def _poll_devices(self):
        for device in self._devices:
            data = self._protocol.read_data(device)
            device_data = self._convert(data)
            self._gateway.send_to_storage(self.get_name(), device_data)

Scenario 4: Database Integration

Challenge

Extract data from legacy database.

Solution

ODBC connector for database access.

Configuration:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "odbc": {
    "connectionString": "DSN=LegacyDB;UID=user;PWD=pass",
    "devices": [
      {
        "deviceName": "Production-Line-1",
        "query": "SELECT * FROM production WHERE line_id = 1",
        "pollPeriod": 60000,
        "columns": {
          "production_count": "productionCount",
          "downtime_minutes": "downtime"
        }
      }
    ]
  }
}

Security Considerations

Network Segmentation

1
2
3
4
Legacy Network     DMZ Zone          Cloud
(192.168.1.0/24)   (Gateway)         (IndustryOS)
                   │
    Firewall ←────┴─────→ Firewall

Best Practices

  • Isolate legacy network - separate VLAN
  • Gateway as firewall - single point of access
  • Encrypted communication - TLS/SSL to cloud
  • No inbound connections - gateway initiates
  • Regular updates - security patches

Migration Strategy

Phase 1: Assessment

  1. Inventory legacy systems
  2. Document protocols
  3. Identify data requirements
  4. Plan network architecture

Phase 2: Pilot

  1. Select one system
  2. Install gateway
  3. Configure connector
  4. Validate data
  5. Monitor performance

Phase 3: Rollout

  1. Deploy additional gateways
  2. Migrate systems incrementally
  3. Train operators
  4. Document configurations

Phase 4: Optimisation

  1. Tune polling intervals
  2. Optimise data transmission
  3. Implement analytics
  4. Enable automation

Common Patterns

Pattern 1: Serial Aggregation

Multiple serial devices on one gateway:

1
2
3
4
5
6
7
8
connectors:
  - name: "Line 1 Sensors"
    type: "modbus"
    port: "/dev/ttyUSB0"
    
  - name: "Line 2 Sensors"
    type: "modbus"
    port: "/dev/ttyUSB1"

Pattern 2: Protocol Translation

Convert between protocols:

1
Modbus Device → Gateway → MQTT Broker

Pattern 3: Data Buffering

Handle intermittent connectivity:

1
2
3
4
5
6
7
{
  "reportStrategy": {
    "type": "onReportPeriod",
    "reportPeriod": 300000,
    "maxBufferSize": 10000
  }
}

Troubleshooting

No Data Received

Check:

  1. Physical connections
  2. Serial port settings (baud, parity)
  3. Modbus addresses
  4. Poll period configuration

Intermittent Data

Verify:

  1. Network stability
  2. Device response time
  3. Poll interval vs response time
  4. Gateway resources

Data Quality Issues

Review:

  1. Data type mappings
  2. Multipliers and offsets
  3. Byte order
  4. Register addresses

Next Steps

  • Protocol Conversion
  • Edge Data Collection
  • Industrial Automation
  • Gateway Features