632 lines
18 KiB
JSON
632 lines
18 KiB
JSON
{
|
|
"ui":
|
|
{
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.111",
|
|
"port": 8501,
|
|
"docker_network": "vlan1"
|
|
}
|
|
},
|
|
|
|
"hmis":
|
|
[
|
|
{
|
|
"name": "hmi1",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.31",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections": [],
|
|
"outbound_connections":
|
|
[
|
|
{
|
|
"type": "tcp",
|
|
"ip": "192.168.0.21",
|
|
"port": 502,
|
|
"id": "plc1_con"
|
|
},
|
|
{
|
|
"type": "tcp",
|
|
"ip": "192.168.0.22",
|
|
"port": 502,
|
|
"id": "plc2_con"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil":
|
|
[
|
|
{
|
|
"address": 102,
|
|
"count": 1,
|
|
"id": "tank_input_valve_state"
|
|
},
|
|
{
|
|
"address": 103,
|
|
"count": 1,
|
|
"id": "tank_output_valve_state"
|
|
},
|
|
{
|
|
"address": 106,
|
|
"count": 1,
|
|
"id": "conveyor_engine_state"
|
|
}
|
|
],
|
|
"discrete_input": [],
|
|
"input_register":
|
|
[
|
|
{
|
|
"address": 101,
|
|
"count": 1,
|
|
"id": "tank_level"
|
|
},
|
|
{
|
|
"address": 104,
|
|
"count": 1,
|
|
"id": "bottle_level"
|
|
},
|
|
{
|
|
"address": 105,
|
|
"count": 1,
|
|
"id": "bottle_distance_to_filler"
|
|
}
|
|
],
|
|
"holding_register": []
|
|
},
|
|
"monitors":
|
|
[
|
|
{
|
|
"outbound_connection_id": "plc1_con",
|
|
"id": "tank_level",
|
|
"value_type": "input_register",
|
|
"address": 1,
|
|
"count": 1,
|
|
"interval": 0.5
|
|
},
|
|
{
|
|
"outbound_connection_id": "plc1_con",
|
|
"id": "tank_input_valve_state",
|
|
"value_type": "coil",
|
|
"slave_id": 1,
|
|
"address": 2,
|
|
"count": 1,
|
|
"interval": 0.5
|
|
},
|
|
{
|
|
"outbound_connection_id": "plc1_con",
|
|
"id": "tank_output_valve_state",
|
|
"value_type": "coil",
|
|
"slave_id": 1,
|
|
"address": 3,
|
|
"count": 1,
|
|
"interval": 0.5
|
|
},
|
|
{
|
|
"outbound_connection_id": "plc2_con",
|
|
"id": "bottle_level",
|
|
"value_type": "input_register",
|
|
"slave_id": 1,
|
|
"address": 1,
|
|
"count": 1,
|
|
"interval": 0.5
|
|
},
|
|
{
|
|
"outbound_connection_id": "plc2_con",
|
|
"id": "bottle_distance_to_filler",
|
|
"value_type": "input_register",
|
|
"slave_id": 1,
|
|
"address": 2,
|
|
"count": 1,
|
|
"interval": 0.5
|
|
},
|
|
{
|
|
"outbound_connection_id": "plc2_con",
|
|
"id": "conveyor_engine_state",
|
|
"value_type": "coil",
|
|
"slave_id": 1,
|
|
"address": 3,
|
|
"count": 1,
|
|
"interval": 0.5
|
|
}
|
|
],
|
|
"controllers": []
|
|
}
|
|
],
|
|
|
|
"plcs":
|
|
[
|
|
{
|
|
"name": "plc1",
|
|
"logic": "plc1.py",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.21",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections":
|
|
[
|
|
{
|
|
"type": "tcp",
|
|
"ip": "192.168.0.21",
|
|
"port": 502
|
|
}
|
|
],
|
|
"outbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"comm_port": "ttyS1",
|
|
"id": "tank_level_sensor_con"
|
|
},
|
|
{
|
|
"type": "rtu",
|
|
"comm_port": "ttyS3",
|
|
"id": "tank_input_valve_con"
|
|
},
|
|
{
|
|
"type": "rtu",
|
|
"comm_port": "ttyS5",
|
|
"id": "tank_output_valve_con"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil":
|
|
[
|
|
{
|
|
"address": 2,
|
|
"count": 1,
|
|
"io": "output",
|
|
"id": "tank_input_valve_state"
|
|
},
|
|
{
|
|
"address": 3,
|
|
"count": 1,
|
|
"io": "output",
|
|
"id": "tank_output_valve_state"
|
|
}
|
|
],
|
|
"discrete_input": [],
|
|
"holding_register": [],
|
|
"input_register":
|
|
[
|
|
{
|
|
"address": 1,
|
|
"count": 1,
|
|
"io": "input",
|
|
"id": "tank_level"
|
|
}
|
|
]
|
|
},
|
|
"monitors":
|
|
[
|
|
{
|
|
"outbound_connection_id": "tank_level_sensor_con",
|
|
"id": "tank_level",
|
|
"value_type": "input_register",
|
|
"slave_id": 1,
|
|
"address": 10,
|
|
"count": 1,
|
|
"interval": 0.2
|
|
}
|
|
],
|
|
"controllers":
|
|
[
|
|
{
|
|
"outbound_connection_id": "tank_input_valve_con",
|
|
"id": "tank_input_valve_state",
|
|
"value_type": "coil",
|
|
"slave_id": 1,
|
|
"address": 20,
|
|
"count": 1
|
|
},
|
|
{
|
|
"outbound_connection_id": "tank_output_valve_con",
|
|
"id": "tank_output_valve_state",
|
|
"value_type": "coil",
|
|
"slave_id": 1,
|
|
"address": 20,
|
|
"count": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "plc2",
|
|
"logic": "plc2.py",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.22",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections": [
|
|
{
|
|
"type": "tcp",
|
|
"ip": "192.168.0.22",
|
|
"port": 502
|
|
}
|
|
],
|
|
"outbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"comm_port": "ttyS7",
|
|
"id": "bottle_level_sensor_con"
|
|
},
|
|
{
|
|
"type": "rtu",
|
|
"comm_port": "ttyS9",
|
|
"id": "bottle_distance_con"
|
|
},
|
|
{
|
|
"type": "rtu",
|
|
"comm_port": "ttyS11",
|
|
"id": "conveyor_belt_con"
|
|
},
|
|
{
|
|
"type": "tcp",
|
|
"ip": "192.168.0.21",
|
|
"port": "502",
|
|
"id": "plc1_con"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil":
|
|
[
|
|
{
|
|
"address": 3,
|
|
"count": 1,
|
|
"io": "output",
|
|
"id": "conveyor_engine_state"
|
|
},
|
|
{
|
|
"address": 11,
|
|
"count": 1,
|
|
"io": "output",
|
|
"id": "plc1_tank_output_state"
|
|
}
|
|
],
|
|
"discrete_input": [],
|
|
"holding_register": [],
|
|
"input_register":
|
|
[
|
|
{
|
|
"address": 1,
|
|
"count": 1,
|
|
"io": "input",
|
|
"id": "bottle_level"
|
|
},
|
|
{
|
|
"address": 2,
|
|
"count": 1,
|
|
"io": "input",
|
|
"id": "bottle_distance_to_filler"
|
|
}
|
|
]
|
|
},
|
|
"monitors":
|
|
[
|
|
{
|
|
"outbound_connection_id": "bottle_level_sensor_con",
|
|
"id": "bottle_level",
|
|
"value_type": "input_register",
|
|
"slave_id": 1,
|
|
"address": 20,
|
|
"count": 1,
|
|
"interval": 0.2
|
|
},
|
|
{
|
|
"outbound_connection_id": "bottle_distance_con",
|
|
"id": "bottle_distance_to_filler",
|
|
"value_type": "input_register",
|
|
"slave_id": 1,
|
|
"address": 21,
|
|
"count": 1,
|
|
"interval": 0.2
|
|
}
|
|
],
|
|
"controllers":
|
|
[
|
|
{
|
|
"outbound_connection_id": "conveyor_belt_con",
|
|
"id": "conveyor_engine_state",
|
|
"value_type": "coil",
|
|
"slave_id": 1,
|
|
"address": 30,
|
|
"count": 1
|
|
},
|
|
{
|
|
"outbound_connection_id": "plc1_con",
|
|
"id": "plc1_tank_output_state",
|
|
"value_type": "coil",
|
|
"slave_id": "1",
|
|
"address": 3,
|
|
"count": 1
|
|
}
|
|
]
|
|
}
|
|
],
|
|
|
|
"sensors":
|
|
[
|
|
{
|
|
"name": "tank_level_sensor",
|
|
"hil": "bottle_factory",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.11",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"slave_id": 1,
|
|
"comm_port": "ttyS2"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil":[],
|
|
"discrete_input": [],
|
|
"holding_register": [],
|
|
"input_register":
|
|
[
|
|
{
|
|
"address": 10,
|
|
"count": 1,
|
|
"physical_value": "tank_level_value"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "bottle_level_sensor",
|
|
"hil": "bottle_factory",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.12",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"slave_id": 1,
|
|
"comm_port": "ttyS8"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil": [],
|
|
"discrete_input": [],
|
|
"input_register":
|
|
[
|
|
{
|
|
"address": 20,
|
|
"count": 1,
|
|
"physical_value": "bottle_level_value"
|
|
}
|
|
],
|
|
"holding_register": []
|
|
}
|
|
},
|
|
{
|
|
"name": "bottle_distance_to_filler_sensor",
|
|
"hil": "bottle_factory",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.13",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"slave_id": 1,
|
|
"comm_port": "ttyS10"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil": [],
|
|
"discrete_input": [],
|
|
"input_register":
|
|
[
|
|
{
|
|
"address": 21,
|
|
"count": 1,
|
|
"physical_value": "bottle_distance_to_filler_value"
|
|
}
|
|
],
|
|
"holding_register": []
|
|
}
|
|
}
|
|
],
|
|
|
|
"actuators":
|
|
[
|
|
{
|
|
"name": "tank_input_valve",
|
|
"logic": "input_valve_logic.py",
|
|
"hil": "bottle_factory",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.14",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"slave_id": 1,
|
|
"comm_port": "ttyS4"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil":
|
|
[
|
|
{
|
|
"address": 20,
|
|
"count": 1,
|
|
"physical_value": "tank_input_valve_state"
|
|
}
|
|
],
|
|
"discrete_input": [],
|
|
"holding_register": [],
|
|
"input_register": []
|
|
},
|
|
"physical_values":
|
|
[
|
|
{
|
|
"name": "tank_input_valve_state"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "tank_output_valve",
|
|
"logic": "output_valve_logic.py",
|
|
"hil": "bottle_factory",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.15",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"slave_id": 1,
|
|
"comm_port": "ttyS6"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil":
|
|
[
|
|
{
|
|
"address": 20,
|
|
"count": 1,
|
|
"physical_value": "tank_output_valve_state"
|
|
}
|
|
],
|
|
"discrete_input": [],
|
|
"holding_register": [],
|
|
"input_register": []
|
|
}
|
|
},
|
|
{
|
|
"name": "conveyor_belt_engine",
|
|
"logic": "conveyor_belt_logic.py",
|
|
"hil": "bottle_factory",
|
|
"network":
|
|
{
|
|
"ip": "192.168.0.16",
|
|
"docker_network": "vlan1"
|
|
},
|
|
"inbound_connections":
|
|
[
|
|
{
|
|
"type": "rtu",
|
|
"slave_id": 1,
|
|
"comm_port": "ttyS12"
|
|
}
|
|
],
|
|
"registers":
|
|
{
|
|
"coil":
|
|
[
|
|
{
|
|
"address": 30,
|
|
"count": 1,
|
|
"physical_value": "conveyor_belt_engine_state"
|
|
}
|
|
],
|
|
"discrete_input": [],
|
|
"input_register": [],
|
|
"holding_register": []
|
|
},
|
|
"physical_values":
|
|
[
|
|
{
|
|
"name": "conveyor_belt_engine_state"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
|
|
"hils":
|
|
[
|
|
{
|
|
"name": "bottle_factory",
|
|
"logic": "bottle_factory_logic.py",
|
|
"physical_values":
|
|
[
|
|
{
|
|
"name": "tank_level_value",
|
|
"io": "output"
|
|
},
|
|
{
|
|
"name": "tank_input_valve_state",
|
|
"io": "input"
|
|
},
|
|
{
|
|
"name": "tank_output_valve_state",
|
|
"io": "input"
|
|
},
|
|
{
|
|
"name": "bottle_level_value",
|
|
"io": "output"
|
|
},
|
|
{
|
|
"name": "bottle_distance_to_filler_value",
|
|
"io": "output"
|
|
},
|
|
{
|
|
"name": "conveyor_belt_engine_state",
|
|
"io": "input"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
|
|
"serial_networks":
|
|
[
|
|
{
|
|
"src": "ttyS1",
|
|
"dest": "ttyS2"
|
|
},
|
|
{
|
|
"src": "ttyS3",
|
|
"dest": "ttyS4"
|
|
},
|
|
{
|
|
"src": "ttyS5",
|
|
"dest": "ttyS6"
|
|
},
|
|
{
|
|
"src": "ttyS7",
|
|
"dest": "ttyS8"
|
|
},
|
|
{
|
|
"src": "ttyS9",
|
|
"dest": "ttyS10"
|
|
},
|
|
{
|
|
"src": "ttyS11",
|
|
"dest": "ttyS12"
|
|
}
|
|
],
|
|
|
|
"ip_networks":
|
|
[
|
|
{
|
|
"docker_name": "vlan1",
|
|
"name": "ics_simlab",
|
|
"subnet": "192.168.0.0/24"
|
|
}
|
|
]
|
|
} |