ag_gen/examples/SystemV12cda4.2.nm
2021-09-23 13:55:29 -05:00

744 lines
27 KiB
Plaintext
Executable File

network model =
assets :
#Digital
tempSensor1; #CS/CDA
tempSensor2; #CS/CDA
seismicSensor1; #CS/CDA
automaticScram; #CS/CDA
operator; #CS/CDA
controlRodController; #CS/CDA
controlBlade1; #CS/CDA
controlBlade2; #CS/CDA
controlBlade5; #CS/CDA
controlBlade4; #CS/CDA
pulseControlRod; #CS/CDA
buildingCompressedAir; # Affects control rod movment, which is a CS, thus CDA
pressureTankSolenoidValve; # Affects control rod movment, which is a CS, thus CDA
linearPowerSensor;#aka CIC #CS/CDA
nlogPowerSensor; #CS/CDA
pulsePowerSensor;#aka UIC #CS/CDA
controlSystemRecorder; #Listed as CS in Fig 2., thus CDA if digital
buildingEvacAlarm; #CS/CDA (S/EP)
beamRoomScramChain; #CS/CDA if digital
highFluxMonitor; #CS/CDA
periodSensor; #CS/CDA
logNHVFailureSensor; #CS/CDA
linearHVFailureSensor; #CS/CDA
pulseHVFailureSensor; #CS/CDA
continuousAirMonitor; #CS/CDA (Safety)
areaMonitoringSystem; #CS/CDA (Safety)
diffuser; #CS/CDA (Safety)
coolantLevelSensor; #Can casue operator to be instructed to SCRAM, thus CDA
backupPower; #CS/CDA
bridge; #CDA since it can affect radiation levels, which is safety-realted
#water purification system
waterMakeupPump; #CS, CDA if digital
purificationRecirculationPump; #CS, CDA if digital
flowmeter; #Not normally visible, doesn't communicate... not a CS...
conductivityCell1; #CS/CDA
conductivityCell2; #CS/CDA
ionExchanger; #Not digital
poolTotalizer; #Not digital, but would be a CDA if replaced with a digital component
#heat exchange system
coolantTempSensor; #CS/CDA
heatExchangePump1; #CS/CDA
heatExchangePump2; #CS/CDA
conductivityCell3; #CS/CDA
towerTotalizer; #Not digital, but problably a CS. If so, would be a CDA if digital
coolingTowerFan; #Probably CS/CDA. Want to check on consequences of failure and update asset list
#Ventilation System
ventilationController; #CS/CDA
ventilationIntakeFan; #CS/CDA
ventilationOuttakeFan; #CS/CDA
ventilationAirDetector; #CS/CDA
ventilationDampers; #CS/CDA
ventilationDiluteFan; #CS/CDA
#Physical
#combining values
reactor; #CS
coolant; #CS
airborneRadiation; #CS
buildingPower;
seismicActivity;
# For CDA Generation
finishTag;
facts :
# Initial Critical Assets List
quality:reactor,critical=true;
# Statement of which assets are digital
quality:tempSensor1,digital=true;
quality:tempSensor2,digital=true;
quality:seismicSensor1,digital=true;
quality:automaticScram,digital=true;
quality:operator,digital=true;
quality:controlRodController,digital=true;
quality:controlBlade1,digital=true;
quality:controlBlade2,digital=true;
quality:controlBlade5,digital=true;
quality:controlBlade4,digital=true;
quality:pulseControlRod,digital=true;
quality:buildingCompressedAir,digital=true;
quality:pressureTankSolenoidValve,digital=true;
quality:linearPowerSensor,digital=true;
quality:nlogPowerSensor,digital=true;
quality:pulsePowerSensor,digital=true;
quality:controlSystemRecorder,digital=true;
quality:buildingEvacAlarm,digital=true;
quality:beamRoomScramChain,digital=true;
quality:highFluxMonitor,digital=true;
quality:periodSensor,digital=true;
quality:logNHVFailureSensor,digital=true;
quality:linearHVFailureSensor,digital=true;
quality:pulseHVFailureSensor,digital=true;
quality:continuousAirMonitor,digital=true;
quality:areaMonitoringSystem,digital=true;
quality:diffuser,digital=true;
quality:coolantLevelSensor,digital=true;
quality:backupPower,digital=true;
quality:bridge,digital=true;
# Tag for when CDAs can no longer be generated
quality:finishTag,completed=false;
#TempSensor Facts
quality:tempSensor1,status=ok;
quality:tempSensor2,status=ok;
quality:tempSensor1,temp:=50;
quality:tempSensor2,temp:=50;
quality:tempSensor1,calibration=normal;
quality:tempSensor2,calibration=normal;
quality:tempSensor1,powerStatus=on;
quality:tempSensor2,powerStatus=on;
topology:tempSensor1->automaticScram,connected_modbus_slave;
quality:tempSensor1,spoofed=false;
topology:tempSensor2->automaticScram,connected_modbus_slave;
quality:tempSensor2,spoofed=false;
topology:tempSensor1->controlSystemRecorder,connected_modbus_slave;
topology:tempSensor2->controlSystemRecorder,connected_modbus_slave;
topology:tempSensor1->operator,connected_modbus_slave;
quality:tempSensor1,spoofed=false;
topology:tempSensor2->operator,connected_modbus_slave;
quality:tempSensor2,spoofed=false;
topology:reactor<->tempSensor1,physical;
topology:reactor<->tempSensor2,physical;
topology:buildingPower->tempSensor1,power:=120;
topology:buildingPower->tempSensor2,power:=120;
quality:tempSensor1,platform=tempSensor;
quality:tempSensor2,platform=tempSensor;
#SeismicSensor Facts
quality:seismicSensor1,status=ok;
quality:seismicSensor1,powerStatus=on;
quality:seismicSensor1,magnitude:=.003;
topology:seismicSensor1->automaticScram,connected_modbus_slave;
quality:seismicSensor1,spoofed=false;
topology:seismicActivity<->seismicSensor1,physical;
topology:buildingPower->seismicSensor1,power:=120;
quality:seismicSensor1,platform=seismicSensor;
#Automatic Scram Facts
quality:automaticScram,status=ok;
quality:automaticScram,powerStatus=on;
quality:automaticScram,mode=manual;
quality:automaticScram,activated=false;
topology:automaticScram->controlRodController,connected_emag_power;
topology:automaticScram->tempSensor1,connected_modbus_master;
topology:automaticScram->tempSensor2,connected_modbus_master;
topology:automaticScram->seismicSensor1,connected_modbus_master;
topology:automaticScram->highFluxMonitor,connected_modbus_master;
topology:automaticScram->buildingEvacAlarm,connected_modbus_master;
topology:automaticScram->beamRoomScramChain,connected_modbus_master;
topology:automaticScram->logNHVFailureSensor,connected_modbus_master;
topology:automaticScram->linearHVFailureSensor,connected_modbus_master;
topology:automaticScram->pulseHVFailureSensor,connected_modbus_master;
topology:automaticScram->operator,connected_modbus_master;
topology:buildingPower->automaticScram,power:=120;
quality:automaticScram,platform=scramUnit;
#Operator Facts
quality:operator,status=ok;
quality:operator,powerStatus=on;
quality:operator,manualScram=false;
quality:operator,operationMode=manual;
quality:operator,consoleKey=inserted;
topology:operator->automaticScram,connected_modbus_slave;
quality:operator,spoofed=false;
topology:operator->coolantLevelSensor,audible;
topology:operator->coolantTempSensor,connected_modbus_master;
topology:operator->controlRodController,connected_modbus_master;
topology:operator->buildingEvacAlarm,connected_modbus_master;
topology:operator->tempSensor1,connected_modbus_master;
topology:operator->tempSensor2,connected_modbus_master;
topology:operator->linearPowerSensor,connected_modbus_master;
topology:operator->nlogPowerSensor,connected_modbus_master;
topology:operator->pulsePowerSensor,connected_modbus_master;
topology:operator->continuousAirMonitor,connected_modbus_master;
topology:operator->bridge,connected_modbus_master;
topology:operator->periodSensor,connected_modbus_master;
topology:operator->areaMonitoringSystem,connected_modbus_master;
topology:operator->ventilationAirDetector,connected_modbus_master;
topology:operator->conductivityCell1,connected_modbus_master;
topology:operator->conductivityCell2,connected_modbus_master;
topology:operator->conductivityCell3,connected_modbus_master;
topology:operator->heatExchangePump1,connected_modbus_master;
topology:operator->heatExchangePump2,connected_modbus_master;
topology:operator->diffuser,connected_modbus_master;
topology:buildingPower->operator,power:=120;
quality:operator,platform=operatorStation;
#Control Rod Facts
quality:controlRodController,status=ok;
quality:controlRodController,powerStatus=on;
quality:controlRodController,emagPower=on;
topology:controlRodController->operator,connected_modbus_slave;
quality:controlRodController,spoofed=false;
topology:controlRodController->pressureTankSolenoidValve,connected_modbus_master;
topology:controlRodController->nlogPowerSensor,connected_modbus_master;
topology:buildingPower->controlRodController,power:=120;
quality:controlRodController,platform=controlRodController;
#Control rod position intended to represent percent of max height
quality:controlBlade1,motorStatus=ok;
quality:controlBlade2,motorStatus=ok;
quality:controlBlade4,motorStatus=ok;
quality:controlBlade5,motorStatus=ok;
quality:controlBlade1,scrammable=true;
quality:controlBlade2,scrammable=true;
quality:controlBlade4,scrammable=true;
quality:controlBlade5,scrammable=false;
quality:controlBlade1,actualPosition:=.5;
quality:controlBlade2,actualPosition:=.5;
quality:controlBlade5,actualPosition:=1;
quality:controlBlade4,actualPosition:=.5;
quality:controlBlade1,reportedPosition:=.5;
quality:controlBlade2,reportedPosition:=.5;
quality:controlBlade5,reportedPosition:=1;
quality:controlBlade4,reportedPosition:=.5;
quality:pulseControlRod,actualPosition:=1;
quality:pulseControlRod,cylinderPosition:=1;
quality:pulseControlRod,reportedPosition:=1;
quality:pulseControlRod,pulsed=false;
quality:pulseControlRod,scrammable=true;
quality:controlBlade1,register=0;
quality:controlBlade2,register=4;
quality:controlBlade5,register=16;
quality:controlBlade4,register=12;
quality:pulseControlRod,register=8;
quality:controlBlade1,platform=controlBlade;
quality:controlBlade2,platform=controlBlade;
quality:controlBlade5,platform=controlBlade;
quality:controlBlade4,platform=controlBlade;
quality:pulseControlRod,platform=pulseControlRod;
#Subcomponent Connections
topology:controlBlade1->controlRodController,subcomponent;
topology:controlBlade2->controlRodController,subcomponent;
topology:controlBlade5->controlRodController,subcomponent;
topology:controlBlade4->controlRodController,subcomponent;
topology:pulseControlRod->controlRodController,subcomponent;
#pressureTankSolenoidValve conncetion is unidirectional
#Building Compressed Air
quality:buildingCompressedAir,status=ok;
quality:buildingCompressedAir,powerStatus=on;
quality:buildingCompressedAir,compressor=on;
quality:buildingCompressedAir,ctValve=open;#Compressor to Tank
quality:buildingCompressedAir,tankPressure:=80;#psi
topology:buildingCompressedAir->pressureTankSolenoidValve,pneumatic_closed;
topology:buildingPower->buildingCompressedAir,power:=120;
quality:buildingCompressedAir,platform=airCompressor;
#Pressure Tank Solenoid Valve
quality:pressureTankSolenoidValve,status=ok;
quality:pressureTankSolenoidValve,powerStatus=on;
quality:pressureTankSolenoidValve,tankPressure=80;#psi
topology:pressureTankSolenoidValve->controlRodController,connected_modbus_slave;
topology:pressureTankSolenoidValve->pulseControlRod,pneumatic_closed;
#buildingCompressedAir conncetion is unidirectional
#Power Sensors
#Power units are in percent max
#Linear
quality:linearPowerSensor,status=ok;
quality:linearPowerSensor,powerStatus=on;
quality:linearPowerSensor,powerLevel:=0.1;
topology:linearPowerSensor->highFluxMonitor,connected_modbus_slave;
topology:linearPowerSensor->controlSystemRecorder,connected_modbus_slave;
topology:linearPowerSensor->operator,connected_modbus_slave;
quality:linearPowerSensor,spoofed=false;
topology:reactor<->linearPowerSensor,physical;
topology:buildingPower->linearPowerSensor,power:=120;
quality:linearPowerSensor,platform=powerSensor;
#nlog
quality:nlogPowerSensor,status=ok;
quality:nlogPowerSensor,powerStatus=on;
quality:nlogPowerSensor,powerLevel:=0.1;
topology:nlogPowerSensor->operator,connected_modbus_slave;
quality:nlogPowerSensor,spoofed=false;
topology:nlogPowerSensor->controlRodController,connected_modbus_slave;
topology:reactor<->nlogPowerSensor,physical;
topology:buildingPower->nlogPowerSensor,power:=120;
quality:nlogPowerSensor,platform=powerSensor;
#Pulse
quality:pulsePowerSensor,status=ok;
quality:pulsePowerSensor,powerStatus=on;
quality:pulsePowerSensor,powerLevel:=0.1;
topology:pulsePowerSensor->highFluxMonitor,connected_modbus_slave;
topology:pulsePowerSensor->operator,connected_modbus_slave;
quality:pulsePowerSensor,spoofed=false;
topology:reactor<->pulsePowerSensor,physical;
topology:buildingPower->pulsePowerSensor,power:=120;
quality:pulsePowerSensor,platform=powerSensor;
#Control System Recorder
quality:controlSystemRecorder,status=ok;
quality:controlSystemRecorder,powerStatus=on;
quality:controlSystemRecorder,dataValid=true;
topology:controlSystemRecorder->tempSensor1,connected_modbus_master;
topology:controlSystemRecorder->tempSensor2,connected_modbus_master;
topology:controlSystemRecorder->linearPowerSensor,connected_modbus_master;
topology:buildingPower->controlSystemRecorder,power:=120;
quality:controlSystemRecorder,platform=controlSystemRecorder;
#Building Evacuation Alarm
quality:buildingEvacAlarm,status=ok;
quality:buildingEvacAlarm,powerStatus=on;
quality:buildingEvacAlarm,activated=false;
topology:buildingEvacAlarm->areaMonitoringSystem,connected_modbus_master;
topology:buildingEvacAlarm->coolingTowerFan,connected_modbus_slave;
topology:buildingEvacAlarm->operator,connected_modbus_slave;
quality:buildingEvacAlarm,spoofed=false;
topology:buildingEvacAlarm->automaticScram,connected_modbus_slave;
quality:buildingEvacAlarm,spoofed=false;
topology:buildingPower->buildingEvacAlarm,power:=120;
quality:buildingEvacAlarm,platform=evacuationAlarm;
#Beam Room Scram Chain
quality:beamRoomScramChain,status=ok;
quality:beamRoomScramChain,powerStatus=on;
quality:beamRoomScramChain,activated=false;
quality:beamRoomScramChain,accessGate=closed;
quality:beamRoomScramChain,keysInserted=true;
topology:beamRoomScramChain->automaticScram,connected_modbus_slave;
quality:beamRoomScramChain,spoofed=false;
topology:buildingPower->beamRoomScramChain,power:=120;
quality:beamRoomScramChain,platform=scramInput;#Need to check
#High Flux Monitor
quality:highFluxMonitor,status=ok;
quality:highFluxMonitor,powerStatus=on;
quality:highFluxMonitor,alarmActivated=false;
quality:highFluxMonitor,scramActivated=false;
topology:highFluxMonitor->linearPowerSensor,connected_modbus_master;
topology:highFluxMonitor->pulsePowerSensor,connected_modbus_master;
topology:highFluxMonitor->automaticScram,connected_modbus_slave;
quality:highFluxMonitor,spoofed=false;
topology:buildingPower->highFluxMonitor,power:=120;
quality:highFluxMonitor,platform=fluxMonitor;
#Period Sensor
quality:periodSensor,status=ok;
quality:periodSensor,powerStatus=on;
quality:periodSensor,output=5;#Period in seconds
topology:periodSensor->operator,connected_modbus_slave;
quality:periodSensor,spoofed=false;
topology:buildingPower->periodSensor,power:=120;
quality:periodSensor,platform=periodSensor;
#HV Failure Sensors
quality:logNHVFailureSensor,status=ok;
quality:logNHVFailureSensor,powerStatus=on;
quality:logNHVFailureSensor,activated=false;
quality:linearHVFailureSensor,status=ok;
quality:linearHVFailureSensor,powerStatus=on;
quality:linearHVFailureSensor,activated=false;
quality:pulseHVFailureSensor,status=ok;
quality:pulseHVFailureSensor,powerStatus=on;
quality:pulseHVFailureSensor,activated=false;
topology:logNHVFailureSensor->automaticScram,connected_modbus_slave;
quality:logNHVFailureSensor,spoofed=false;
topology:linearHVFailureSensor->automaticScram,connected_modbus_slave;
quality:linearHVFailureSensor,spoofed=false;
topology:pulseHVFailureSensor->automaticScram,connected_modbus_slave;
quality:pulseHVFailureSensor,spoofed=false;
topology:logNHVFailureSensor->nlogPowerSensor,power_monitor;
topology:linearHVFailureSensor->linearPowerSensor,power_monitor;
topology:pulseHVFailureSensor->pulsePowerSensor,power_monitor;
topology:buildingPower->logNHVFailureSensor,power:=120;
topology:buildingPower->linearHVFailureSensor,power:=120;
topology:buildingPower->pulseHVFailureSensor,power:=120;
quality:logNHVFailureSensor,platform=HVSensor;
quality:linearHVFailureSensor,platform=HVSensor;
quality:pulseHVFailureSensor,platform=HVSensor;
#Continous Air Monitor
quality:continuousAirMonitor,status=ok;
quality:continuousAirMonitor,powerStatus=on;
quality:continuousAirMonitor,airborneRadiation:=50;#cpm
quality:continuousAirMonitor,alarmActivated=false;
topology:continuousAirMonitor->operator,connected_modbus_slave;
quality:continuousAirMonitor,spoofed=false;
topology:continuousAirMonitor->ventilationController,connected_modbus_slave;
topology:airborneRadiation<->continuousAirMonitor,physical;
topology:buildingPower->continuousAirMonitor,power:=120;
quality:continuousAirMonitor,platform=CAM;
#Area Monitoring System
quality:areaMonitoringSystem,status=ok;
quality:areaMonitoringSystem,powerStatus=on;
quality:areaMonitoringSystem,cave_N16_level:=0;#mrem/hr
quality:areaMonitoringSystem,nBeamRoom_N16_level:=0;
quality:areaMonitoringSystem,sBeamRoom_N16_level:=0;
quality:areaMonitoringSystem,sample_N16_level:=0;
quality:areaMonitoringSystem,bridge_N16_level:=0;
quality:areaMonitoringSystem,room101_N16_level:=0;
topology:areaMonitoringSystem->buildingEvacAlarm,connected_modbus_slave;
topology:areaMonitoringSystem->coolingTowerFan,connected_modbus_slave;
topology:areaMonitoringSystem->operator,connected_modbus_slave;
quality:areaMonitoringSystem,spoofed=false;
topology:airborneRadiation<->areaMonitoringSystem,physical;
topology:buildingPower->areaMonitoringSystem,power:=120;
quality:areaMonitoringSystem,platform=N16Detector;
#Diffuser
quality:diffuser,status=ok;
quality:diffuser,powerStatus=on;
quality:diffuser,pressure=30;#psi
topology:diffuser->operator,connected_modbus_slave;
quality:diffuser,spoofed=false;
topology:buildingPower->diffuser,power:=120;
quality:diffuser,platform=diffuser;
#Coolant Level Sensor
quality:coolantLevelSensor,status=ok;
quality:coolantLevelSensor,powerStatus=on;
quality:coolantLevelSensor,level:=0.0;#defining 0 as neutral
topology:coolantLevelSensor->operator,connected_modbus_slave;
quality:coolantLevelSensor,spoofed=false;
topology:coolant<->coolantLevelSensor,physical;
topology:buildingPower->coolantLevelSensor,power:=120;
quality:coolantLevelSensor,platform=coolantLevelSensor;
#Backup power and connections
quality:backupPower,status=ok;
quality:backupPower,powerStatus=on;
quality:backupPower,chargeLevel:=1;#percent, 1 down to 0
#Only provides power when main power is off
topology:backupPower->buildingEvacAlarm,power:=0.0;
topology:backupPower->continuousAirMonitor,power:=0.0;
topology:backupPower->areaMonitoringSystem,power:=0.0;
topology:backupPower->coolantLevelSensor,power:=0.0;
topology:backupPower->seismicSensor1,power:=0.0;
topology:backupPower->nlogPowerSensor,power:=0.0;
topology:backupPower->linearPowerSensor,power:=0.0;
topology:backupPower->pulsePowerSensor,power:=0.0;
topology:buildingPower->backupPower,power:=120;#needs to charge
quality:backupPower,platform=backupPower;
#Bridge
quality:bridge,status=ok;
quality:bridge,powerStatus=on;
quality:bridge,actualPosition:=7.0;
quality:bridge,reportedPosition:=7.0;
topology:bridge->operator,connected_modbus_slave;
quality:bridge,spoofed=false;
topology:buildingPower->backupPower,power:=120;#needs power to move
quality:bridge,platform=bridge;
#Water Puritfication Systems
#Water Makeup Pump
quality:waterMakeupPump,status=ok;
quality:waterMakeupPump,powerStatus=on;
quality:waterMakeupPump,pumpStatus=off;
topology:coolant<->waterMakeupPump,physical;
topology:buildingPower->waterMakeupPump,power:=120;
#poolTotalizer connection is unidirectional
quality:waterMakeupPump,platform=pump;
#Purification Recirculation Pump
quality:purificationRecirculationPump,status=ok;
quality:purificationRecirculationPump,powerStatus=on;
quality:purificationRecirculationPump,pumpStatus=on;
topology:coolant<->purificationRecirculationPump,physical;
topology:buildingPower->purificationRecirculationPump,power:=120;
quality:purificationRecirculationPump,platform=pump;
#Flowmeter
quality:flowmeter,status=ok;
quality:flowmeter,powerStatus=on;
quality:flowmeter,flowRate:=10;#gpm
topology:coolant<->flowmeter,physical;
topology:buildingPower->flowmeter,power:=120;
quality:flowmeter,platform=flowmeter;
#Conductivity Cells 1 and 2
quality:conductivityCell1,status=ok;
quality:conductivityCell1,powerStatus=on;
quality:conductivityCell1,conductivity:=0.4;#in micromhos/cm
quality:conductivityCell2,status=ok;
quality:conductivityCell2,powerStatus=on;
quality:conductivityCell2,resistance:=0.1;#in MOhms
topology:conductivityCell1->operator,connected_modbus_slave;
quality:conductivityCell1,spoofed=false;
topology:conductivityCell2->operator,connected_modbus_slave;
quality:conductivityCell2,spoofed=false;
topology:coolant<->conductivityCell1,physical;
topology:coolant<->conductivityCell2,physical;
topology:buildingPower->conductivityCell1,power:=120;
topology:buildingPower->conductivityCell2,power:=120;
quality:conductivityCell1,platform=conductivitySensor;
quality:conductivityCell2,platform=conductivitySensor;
#Ion Exchanger (no power)
quality:ionExchanger,status=ok;
topology:coolant<->ionExchanger,physical;
quality:ionExchanger,platform=ionExchanger;
#Pool Totalizer (no power)
quality:poolTotalizer,status=ok;
topology:poolTotalizer<->waterMakeupPump,physical_switch;
topology:coolant<->poolTotalizer,physical;
quality:poolTotalizer,platform=totalizer;
#Heat Exchange System
#Coolant Temperature Sensor
quality:coolantTempSensor,status=ok;
quality:coolantTempSensor,powerStatus=on;
quality:coolantTempSensor,temp:=35;
topology:coolantTempSensor->operator,connected_modbus_slave;
quality:coolantTempSensor,spoofed=false;
topology:coolant<->coolantTempSensor,physical;
topology:buildingPower->coolantTempSensor,power:=120;
quality:coolantTempSensor,platform=coolantTempSensor;
#Heat Exchange Pumps
quality:heatExchangePump1,status=ok;
quality:heatExchangePump1,powerStatus=on;
quality:heatExchangePump1,pressureIn:=1.2;#psi
quality:heatExchangePump1,pressureOut:=1;
quality:heatExchangePump2,status=ok;
quality:heatExchangePump2,powerStatus=on;
quality:heatExchangePump2,pressureIn:=21.1;#psi
quality:heatExchangePump2,pressureOut:=3.7;
topology:heatExchangePump1->operator,connected_modbus_slave;
quality:heatExchangePump1,spoofed=false;
topology:heatExchangePump2->operator,connected_modbus_slave;
quality:heatExchangePump2,spoofed=false;
topology:coolant<->heatExchangePump1,physical;
topology:coolant<->heatExchangePump2,physical;
topology:buildingPower->heatExchangePump1,power:=120;
topology:buildingPower->heatExchangePump2,power:=120;
quality:heatExchangePump1,platform=pump;
quality:heatExchangePump2,platform=pump;
#Conductivity Cell 3
quality:conductivityCell3,status=ok;
quality:conductivityCell3,powerStatus=on;
quality:conductivityCell3,conductivity:=.75;#in micromhos/cm
topology:conductivityCell3->operator,connected_modbus_slave;
quality:conductivityCell3,spoofed=false;
topology:coolant<->conductivityCell3,physical;
topology:buildingPower->conductivityCell3,power:=120;
quality:conductivityCell3,platform=conductivitySensor;
#Tower Totalizer (no power)
quality:towerTotalizer,status=ok;
topology:coolant<->towerTotalizer,physical;
quality:towerTotalizer,platform=totalizer;
#Cooling Tower Fan
quality:coolingTowerFan,status=ok;
quality:coolingTowerFan,powerStatus=on;
quality:coolingTowerFan,fan=on;
quality:coolingTowerFan,secondaryCoolantTemp:=25;
topology:coolingTowerFan->buildingEvacAlarm,connected_modbus_master;
topology:coolingTowerFan->areaMonitoringSystem,connected_modbus_master;
topology:buildingPower->coolingTowerFan,power:=120;
quality:coolingTowerFan,platform=fan;
#Ventilation System
#Ventilaton Controller
quality:ventilationController,status=ok;
quality:ventilationController,powerStatus=on;
quality:ventilationController,mode=normal;
topology:ventilationController->ventilationIntakeFan,connected_modbus_master;
topology:ventilationController->ventilationOuttakeFan,connected_modbus_master;
topology:ventilationController->ventilationDiluteFan,connected_modbus_master;
topology:ventilationController->continuousAirMonitor,connected_modbus_master;
topology:ventilationController->ventilationDampers,connected_modbus_master;
topology:ventilationController->operator,connected_modbus_slave;
quality:ventilationController,spoofed=false;
topology:buildingPower->ventilationController,power:=120;
quality:ventilationController,platform=ventilationController;
#Intake Fan
quality:ventilationIntakeFan,status=ok;
quality:ventilationIntakeFan,powerStatus=on;
quality:ventilationIntakeFan,fan=on;
topology:ventilationIntakeFan->ventilationController,connected_modbus_slave;
topology:buildingPower->ventilationIntakeFan,power:=120;
quality:ventilationIntakeFan,platform=fan;
#Outtake Fan
quality:ventilationOuttakeFan,status=ok;
quality:ventilationOuttakeFan,powerStatus=on;
quality:ventilationOuttakeFan,fan=on;
topology:ventilationOuttakeFan->ventilationController,connected_modbus_slave;
topology:buildingPower->ventilationOuttakeFan,power:=120;
quality:ventilationOuttakeFan,platform=fan;
#Ventilation Air Detector
quality:ventilationAirDetector,status=ok;
quality:ventilationAirDetector,powerStatus=on;
quality:ventilationAirDetector,Ar41_level:=9.9;#cpm
quality:ventilationAirDetector,alarmActivated=false;
topology:ventilationAirDetector->operator,connected_modbus_slave;
quality:ventilationAirDetector,spoofed=false;
topology:buildingPower->ventilationAirDetector,power:=120;
topology:airborneRadiation<->ventilationAirDetector,physical;
quality:ventilationAirDetector,platform=Ar41Detector;
#Ventilation Dampers
quality:ventilationDampers,status=ok;
quality:ventilationDampers,powerStatus=on;
quality:ventilationDampers,dampers=open;
topology:ventilationDampers->ventilationController,connected_modbus_slave;
topology:buildingPower->ventilationDampers,power:=120;
quality:ventilationDampers,platform=dampers;
#Ventilation Dilute Fan
quality:ventilationDiluteFan,status=ok;
quality:ventilationDiluteFan,powerStatus=on;
quality:ventilationDiluteFan,fan=off;
topology:ventilationDiluteFan->ventilationController,connected_modbus_slave;
topology:buildingPower->ventilationDiluteFan,power:=120;
quality:ventilationDiluteFan,platform=fan;
#Physical qualites
#This is probably bad practice, reusing these names
quality:reactor,fuelTemp:=50;
quality:reactor,reactorPower:=0.1;
quality:coolant,coolantLevel:=0.0;
quality:coolant,coolantTemp:=35;
quality:airborneRadiation,cave_N16_level:=0;#mrem/hr appears to be the appropriate measurement.
quality:airborneRadiation,nBeamRoom_N16_level:=0;
quality:airborneRadiation,sBeamRoom_N16_level:=0;
quality:airborneRadiation,sample_N16_level:=0;
quality:airborneRadiation,bridge_N16_level:=0;
quality:airborneRadiation,room101_N16_level:=0;
quality:airborneRadiation,Ar41_level:=0;
quality:airborneRadiation,airborneRadiationLevel:=50;#cpm
quality:buildingPower,buildingPower=on;
quality:seismicActivity,seismicActivity:=0.003;
#Physical items are of the "physical" platform for now.
quality:reactor,platform=physical;
quality:coolant,platform=physical;
quality:airborneRadiation,platform=physical;
quality:buildingPower,platform=physical;
quality:seismicActivity,platform=physical;
tags:
.