Exemplo n.º 1
0
        'type': 'System',
        'addresstype': 'pointer',
    }

# We connect, as we did in example 2
MyApparatus.Connect_All(MyExecutor, simulation=True)

# Instead of using elemental procedures, we use more abstract procedures for
# pumps but... how do we know whick pumps are used for what material?
# Turns out that we do not need to know a specific pump's name.
red_pump_name = MyApparatus.findDevice({'descriptors': ['pump', 'red']})
green_pump_name = MyApparatus.findDevice({'descriptors': ['pump', 'green']})
blue_pump_name = MyApparatus.findDevice({'descriptors': ['pump', 'blue']})

# Now we create two procedures that let us handle our system more abstractly
PumpOn = Procedures.Pump_PumpOn(MyApparatus, MyExecutor)
PumpOff = Procedures.Pump_PumpOff(MyApparatus, MyExecutor)

# We can further complicate our control problem with some real-world issues
# like delays between pump signal and response.  For this example, we will
# assume all the materials and pumps behave the same but this is usually not
# the case.
PumpOn.requirements['pumpon_time']['value'] = 1
PumpOff.requirements['pumpoff_time']['value'] = 2

# These procedures are used much like the ones in Example 2 but they require
# More information

for n in range(5):
    PumpOn.Do({'name': red_pump_name})
    PumpOff.Do({'name': red_pump_name})