import snap7 import time def WriteMerker(client, byteOffset, bitOffset, disable): val, = c.read_area(snap7.types.Areas.MK, 0, byteOffset, 1) if disable: val &= ~(1 << bitOffset) else: val |= (1 << bitOffset) return c.write_area(snap7.types.Areas.MK, 0, byteOffset, bytearray([val])) def SetStarboardIn(client, disable): # STARBOARD_PUMP_IN_ACTIVE is %M0.1 WriteMerker(client, 0, 1, disable) def SetStarboardOut(client, disable): # STARBOARD_PUMP_OUT_ACTIVE is %M0.0 WriteMerker(client, 0, 0, disable) def SetCentralIn(client, disable): # CENTRAL_PUMP_IN_ACTIVE is %M0.3 WriteMerker(client, 0, 3, disable) def SetCentralOut(client, disable): # CENTRAL_PUMP_OUT_ACTIVE is %M0.2 WriteMerker(client, 0, 2, disable) def SetPortIn(client, disable): # PORT_PUMP_IN_ACTIVE is %M0.5 WriteMerker(client, 0, 5, disable) def SetPortOut(client, disable): # PORT_PUMP_OUT_ACTIVE is %M0.4 WriteMerker(client, 0, 4, disable) if __name__ == "__main__": c = snap7.client.Client() # Rack 0, slot 1 (doesn't really matter) c.connect("10.88.13.2", 0, 1) print("here") # Enable the pumps SetStarboardOut(c, False) SetCentralIn(c, False) SetPortIn(c, False) # Wait 5 seconds time.sleep(5) # Disable the pumps SetStarboardOut(c, True) SetCentralIn(c, True) SetPortIn(c, True)