Files
Tempering-Machine-Control-S…/docs/02-hardware-communication.md

18 KiB

Hardware Communication Specification

Overview

The system communicates with industrial hardware using Modbus RTU protocol over RS-485 serial communication. This document details the communication architecture, protocols, and data structures.

Communication Architecture

┌─────────────────────────────────────────────────────────────┐
│                APPLICATION LAYER                           │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│  │   Recipe    │ │   Motor     │ │     Temperature         │ │
│  │  Control    │ │  Control    │ │      Control            │ │
│  └─────────────┘ └─────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
                               │
┌─────────────────────────────────────────────────────────────┐
│               COMMUNICATION LAYER                          │
│                                                             │
│  ┌─────────────┐     ┌─────────────┐     ┌─────────────┐   │
│  │    Write    │────▶│    Queue    │────▶│    Read     │   │
│  │    Queue    │     │   Manager   │     │    Queue    │   │
│  └─────────────┘     └─────────────┘     └─────────────┘   │
│         │                   │                   │          │
│         └───────────────────┼───────────────────┘          │
│                             ▼                              │
│              ┌─────────────────────────────┐                │
│              │      Serial Thread          │                │
│              │    (Queue Processor)        │                │
│              └─────────────────────────────┘                │
└─────────────────────────────────────────────────────────────┘
                               │
┌─────────────────────────────────────────────────────────────┐
│                 MODBUS RTU LAYER                           │
│                                                             │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│  │   Message   │ │     CRC     │ │      Timeout            │ │
│  │  Framing    │ │ Validation  │ │     Handling            │ │
│  └─────────────┘ └─────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
                               │
┌─────────────────────────────────────────────────────────────┐
│                PHYSICAL LAYER                              │
│                                                             │
│        ┌─────────────┐              ┌─────────────┐         │
│        │ Serial Port │─────RS485────│  Hardware   │         │
│        │   Driver    │              │ Controller  │         │
│        └─────────────┘              └─────────────┘         │
└─────────────────────────────────────────────────────────────┘

Modbus RTU Implementation

Supported Function Codes

Function Code Name Purpose Usage in System
0x01 Read Coils Read discrete outputs Motor status monitoring
0x03 Read Holding Registers Read output registers System status, setpoints
0x04 Read Input Registers Read input registers Temperature sensors, digital inputs
0x05 Write Single Coil Write single output Individual motor control
0x06 Write Single Register Write single register Individual setpoint updates
0x0F Write Multiple Coils Write multiple outputs Batch motor control
0x10 Write Multiple Registers Write multiple registers Configuration updates

Message Structure

Standard Modbus RTU Frame:
┌──────────┬─────────────┬──────────────┬──────────┬──────────┐
│ Slave ID │ Function    │     Data     │  CRC-16  │   End    │
│ (1 byte) │ Code        │   (N bytes)  │ (2 bytes)│  Frame   │
│          │ (1 byte)    │              │          │          │
└──────────┴─────────────┴──────────────┴──────────┴──────────┘

Example - Read Input Registers:
┌──────────┬─────────────┬──────────┬──────────┬──────────┬──────────┐
│   0x01   │    0x04     │  0x00    │  0x00    │  0x00    │  0x12    │
│ Slave ID │ Read Input  │ Start    │ Start    │ Number   │ Number   │
│          │ Registers   │ Addr Hi  │ Addr Lo  │ Regs Hi  │ Regs Lo  │
└──────────┴─────────────┴──────────┴──────────┴──────────┴──────────┘

CRC-16 Calculation

The system implements Modbus standard CRC-16 calculation:

Algorithm: CRC-16-IBM (polynomial 0xA001)
Initial Value: 0xFFFF
Final XOR: None
Bit Order: LSB first

Register Mapping

Holding Registers (Write/Read)

Address Name Type Range Units Purpose
0 Reset Error uint16 0-65535 Bitfield Error reset flags
1 HV Output uint16 0-65535 Bitfield High voltage outputs
2 LV Output uint16 0-65535 Bitfield Low voltage outputs
3 Motor Control uint16 0-65535 Bitfield Motor on/off states
4-5 Set Temperature 1 int32 -10000 to 6500 Deciselsius Tank bottom heater
6-7 Set Temperature 2 int32 -10000 to 6500 Deciselsius Tank wall heater
8-9 Set Temperature 3 int32 -10000 to 6500 Deciselsius Pump heater
10-11 Set Temperature 4 int32 -10000 to 6500 Deciselsius Fountain heater

Input Registers (Read Only)

Address Name Type Range Units Purpose
0 Board Flags uint16 0-65535 Bitfield System status flags
1 Input States uint16 0-65535 Bitfield Digital input states
2-4 Grid Voltages uint16 0-3000 Volts L1, L2, L3 voltages
5 Neutral Current uint16 0-1000 Deciselsius Neutral line current
6-7 Motor Currents uint16 0-1000 Deciselsius Motor 1, 2 currents
8-11 Temperatures int16 -1400 to 650 Deciselsius T1, T2, T3, T4 readings
12-13 Analog Inputs uint16 0-65535 Raw ADC General purpose analog
14-15 System Temps uint16 0-1000 Deciselsius Heat sink, internal
16 External Power uint16 0-1000 Deciselsius External power voltage
17 Grid Frequency uint16 0-1000 Decideciseconds Line frequency

Hardware Mapping System

Mapping Configuration

The system uses a CSV-based mapping file to associate logical names with hardware addresses:

Id,Name,Address,IsRead,BitNumbers
1,Pedal,1,1,0
2,Cover Sensor,1,1,1
3,E-Stop,1,1,2
4,Tank Bottom Temp,8,1,8
5,Tank Wall Temp,9,1,9
6,Pump Temp,10,1,10
7,Fountain Temp,11,1,11
8,Vibrator Heater,2,0,0
9,Mold Heater,2,0,1
10,Alarm,2,0,2
11,Vibrator,1,0,0
12,Mixer,3,0,0
13,Pump,3,0,1

Bit Field Operations

Motor control uses bit manipulation for individual motor control:

Motor Control Register (Address 3):
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│15 │14 │13 │12 │11 │10 │ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
  │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │
  │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   └─ Mixer
  │   │   │   │   │   │   │   │   │   │   │   │   │   │   └───── Pump
  │   │   │   │   │   │   │   │   │   │   │   │   │   └─────── Helix
  │   │   │   │   │   │   │   │   │   │   │   │   └─────────── Reserved
  │   │   │   │   │   │   │   │   │   │   │   └───────────────── Reserved
  └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─────────────────────── Reserved

Temperature Data Format

Temperature values are transmitted as signed 16-bit integers in deciselsius:

Temperature Conversion:
Raw Value: -273 (deciselsius)
Actual Temperature: -27.3°C

Special Values:
-10000: Heater disabled/off
Values > 6500: Invalid/error condition
Values < -1400: Sensor error

Communication Timing

Message Scheduling

Communication Timeline:
┌─────────────────────────────────────────────────────────────┐
│                    Message Cycle                           │
│                                                             │
│ ┌─────┐    ┌──────┐    ┌─────┐    ┌──────────────────────┐ │
│ │Write│    │ 4-Char│    │Read │    │     Wait for Next    │ │
│ │ Req │    │ Delay │    │Resp │    │       Cycle          │ │
│ └─────┘    └──────┘    └─────┘    └──────────────────────┘ │
│    │          │          │                 │              │
│   10ms      varies      50ms          configurable        │
│                │                                           │
│         Based on baud rate                                 │
│         (4 chars * 11 bits/char) / baud                   │
└─────────────────────────────────────────────────────────────┘

Retry Logic

Retry Sequence:
Attempt 1 ──┐
            │ Failure
            ▼
         Wait 1s ──┐
                   │
Attempt 2 ─────────┘──┐
                      │ Failure  
                      ▼
                   Wait 1s ──┐
                             │
Attempt 3 ───────────────────┘──┐
                                │ Failure
                                ▼
                            Set Error Flag
                            (Communication Timeout)

Error Detection and Recovery

Error Condition Detection Method Recovery Action
CRC Mismatch Frame validation Immediate retry
Timeout No response in 1s Retry up to 3 times
Invalid Length Frame size check Discard and retry
Communication Loss 3+ consecutive failures Set error flag, continue retrying
Port Error Serial port exception Reset port, retry

Queue Management

Write Queue (Priority Operations)

Write Queue Structure:
┌─────────────────────────────────────────────────────────────┐
│ Priority: Motor Control, Temperature Setpoints, Errors     │
│                                                             │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │   Motor     │ │ Temperature │ │       Error             │ │
│ │  Commands   │ │  Setpoints  │ │      Reset              │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
│       │               │                     │              │
│       └───────────────┼─────────────────────┘              │
│                       ▼                                    │
│              ┌─────────────────┐                           │
│              │ Serial Transmit │                           │
│              └─────────────────┘                           │
└─────────────────────────────────────────────────────────────┘

Read Queue (Monitoring Operations)

Read Queue Structure:
┌─────────────────────────────────────────────────────────────┐
│ Regular Monitoring: Sensors, Status, Diagnostics          │
│                                                             │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ Temperature │ │   Digital   │ │      Analog             │ │
│ │   Sensors   │ │   Inputs    │ │      Inputs             │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
│       │               │                     │              │
│       └───────────────┼─────────────────────┘              │
│                       ▼                                    │
│              ┌─────────────────┐                           │
│              │ Process Response│                           │
│              └─────────────────┘                           │
└─────────────────────────────────────────────────────────────┘

Configuration Parameters

Serial Port Settings

Parameter Default Range Description
Baud Rate 9600 1200-115200 Communication speed
Data Bits 8 7-8 Character size
Stop Bits 1 1-2 Frame termination
Parity None None/Odd/Even/Mark/Space Error detection
Timeout 1000ms 100-5000ms Response timeout
Retry Count 3 1-10 Maximum retry attempts
Send Interval 100ms 50-1000ms Minimum time between messages

Modbus Parameters

Parameter Default Description
Slave ID 1 Target device address
Function Codes 0x01,0x03,0x04,0x05,0x06,0x0F,0x10 Supported operations
Max Register Count 125 Maximum registers per request
CRC Validation Enabled Frame integrity checking
Broadcast Support Disabled Multi-device communication

This communication specification provides the complete details needed to implement a robust Modbus RTU communication system for the tempering machine hardware interface.