Skip to content

FutureOrientedGB/plc_control

Repository files navigation

1. Sequence Diagrams

graph LR;
    client--rpc-->service<--rpc-->adapter_by_plc_type_m--modbus-->plc_type_m_addr_a
    adapter_by_plc_type_m--modbus-->plc_type_m_addr_b
    adapter_by_plc_type_m--modbus-->plc_type_m_addr_c
    service<--rpc-->adapter_by_plc_type_n--modbus-->plc_type_n_addr_x
    adapter_by_plc_type_n--modbus-->plc_type_n_addr_y
    adapter_by_plc_type_n--modbus-->plc_type_n_addr_z
Loading

1.1. activate/leave/remove adapter

sequenceDiagram
    autonumber
    participant adapter
    participant service

loop every 10 seconds
    adapter->>service: activate_adapter (ActivateAdapterRequest)
    service-->>adapter: return (ActivateAdapterResponse)
end

Note right of service: redis

adapter->>service: leave_adapter (LeaveAdapterRequest)
service-->>adapter: return (LeaveAdapterResponse)

Note right of service: redis

loop every 30 seconds
    service->>service: remove_expired_adapter
    Note right of service: redis
end
Loading

1.2. query types and schema

sequenceDiagram
    autonumber
    participant client
    participant service

client->>service: query_plc_types (QueryPlcTypesRequest)
Note right of service: redis
service-->>client: return (QueryPlcTypesResponse)

client->>service: query_plc_schema (QueryPlcSchemaRequest)
Note right of service: redis
service-->>client: return (QueryPlcSchemaResponse)
Loading

1.3. query devices

sequenceDiagram
    autonumber
    participant client
    participant service

client->>service: query_plc_devices (UpsertPlcDeviceRequest)
Note right of service: redis
service-->>client: return (UpsertPlcDeviceResponse)
Loading

1.4. upsert device

sequenceDiagram
    autonumber
    participant client
    participant service

client->>service: upsert_plc_device (UpsertPlcDevicesRequest)
Note right of service: redis
service-->>client: return (UpsertPlcDevicesResponse)
Loading

1.5. control plc

sequenceDiagram
    autonumber
    participant client
    participant service
    participant adapter
    participant plc

client->>service: control_plc (ControlPlcRequest)
Note right of service: dispatch to adapter by type
service->>adapter: control_plc (ControlPlcRequest)
adapter->>plc: modbus_write_registers(address, buf, count)
Note right of adapter: call plc by address
Note right of adapter: translate between protocol buffers and modbus registers
adapter-->>service: return (ControlPlcResponse)
service-->>client: return (ControlPlcResponse)
Loading

1.6. query plc

sequenceDiagram
    autonumber
    participant client
    participant service
    participant adapter
    participant plc

client->>service: query_plc (QueryPlcRequest)
Note right of service: dispatch to adapter by type
service->>adapter: query_plc (QueryPlcRequest)
adapter->>plc: modbus_read_registers(address, buf, count)
Note right of adapter: call plc by address
Note right of adapter: translate between protocol buffers and modbus registers
adapter-->>service: return (QueryPlcResponse)
service-->>client: return (QueryPlcResponse)
Loading

About

dynamic plc control through modbus

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages