Added mining testing firmware

This commit is contained in:
2018-07-29 00:02:01 -07:00
parent 5b33b80196
commit b79693c855

View File

@@ -28,44 +28,26 @@ DEFAULT_PAN_TILT_CONTROL_TOPIC = "chassis/pan_tilt/control"
PAN_TILT_NODE_ID = 1 PAN_TILT_NODE_ID = 1
COMMUNICATIONS_TIMEOUT = 0.01 # Seconds COMMUNICATIONS_TIMEOUT = 0.15
# Seconds
RX_DELAY = 0.01 RX_DELAY = 0.01
TX_DELAY = 0.01 TX_DELAY = 0.01
DEFAULT_HERTZ = 20 DEFAULT_HERTZ = 20
PAN_TILT_MODBUS_REGISTERS = { MINING_MODBUS_REGISTERS = {
"CENTER_ALL": 0, "LIFT_SET": 0,
"TILT_SET": 1,
"TARE": 2,
"CAL_FACTOR": 3,
"PAN_ADJUST_POSITIVE": 1, "LIFT_POSITION": 4,
"PAN_ADJUST_NEGATIVE": 2, "TILT_POSITION": 5,
"TILT_ADJUST_POSITIVE": 3, "MEASURED_WEIGHT": 6
"TILT_ADJUST_NEGATIVE": 4
} }
PAN_TILT_CONTROL_DEFAULT_MESSAGE = [ POSITIONAL_THRESHOLD = 20
0, # No centering
0, # No pan positive adjustment
0, # No pan negative adjustment
0, # No tilt positive adjustment
0 # No tilt negative adjustement
]
self.mining_node.serial = serial.rs485.RS485(self.port, baudrate=self.baud, timeout=COMMUNICATIONS_TIMEOUT)
self.mining_node.serial.rs485_mode = serial.rs485.RS485Settings(rts_level_for_rx=1, rts_level_for_tx=0,
delay_before_rx=RX_DELAY,
delay_before_tx=TX_DELAY)
def run(self):
print(self.mining_node.read_registers(0, 7))
def connect_to_pan_tilt_and_tower(self):
self.mining_node = minimalmodbus.Instrument(self.port, int(2))
self.__setup_minimalmodbus_for_485()
NODE_LAST_SEEN_TIMEOUT = 2 # seconds NODE_LAST_SEEN_TIMEOUT = 2 # seconds
@@ -75,7 +57,7 @@ NODE_LAST_SEEN_TIMEOUT = 2 # seconds
##################################### #####################################
class MiningControl(object): class MiningControl(object):
def __init__(self): def __init__(self):
self.port = "COM22" self.port = "/dev/ttyUSB0"
self.baud = 115200 self.baud = 115200
self.mining_node = None self.mining_node = None
@@ -88,8 +70,61 @@ class MiningControl(object):
self.modbus_nodes_seen_time = time() self.modbus_nodes_seen_time = time()
self.mining_registers = [
0,
0,
0,
0,
0,
0,
0
]
self.run() self.run()
def __setup_minimalmodbus_for_485(self): def __setup_minimalmodbus_for_485(self):
self.mining_node.serial = serial.rs485.RS485(self.port, baudrate=self.baud, timeout=COMMUNICATIONS_TIMEOUT)
self.mining_node.serial.rs485_mode = serial.rs485.RS485Settings(rts_level_for_rx=1, rts_level_for_tx=0,
delay_before_rx=RX_DELAY,
delay_before_tx=TX_DELAY)
def run(self):
self.initialize_mining_system()
while True:
try:
print self.mining_node.read_registers(0, 7)
# self.mining_registers[MINING_MODBUS_REGISTERS["CAL_FACTOR"]] = int(input("Enter new cal value:"))
# self.mining_node.write_registers(0, self.mining_registers)
except Exception, e:
print e
def connect_to_pan_tilt_and_tower(self):
self.mining_node = minimalmodbus.Instrument(self.port, int(2))
self.__setup_minimalmodbus_for_485()
def initialize_mining_system(self):
self.mining_registers[MINING_MODBUS_REGISTERS["LIFT_SET"]] = 1023
self.mining_registers[MINING_MODBUS_REGISTERS["TILT_SET"]] = 350
self.mining_registers[MINING_MODBUS_REGISTERS["CAL_FACTOR"]] = 114
lift_current = 0
tilt_current = 0
while abs(self.mining_registers[MINING_MODBUS_REGISTERS["LIFT_POSITION"]] - self.mining_registers[MINING_MODBUS_REGISTERS["LIFT_SET"]]) > POSITIONAL_THRESHOLD or abs(self.mining_registers[MINING_MODBUS_REGISTERS["TILT_POSITION"]] - self.mining_registers[MINING_MODBUS_REGISTERS["TILT_SET"]]) > POSITIONAL_THRESHOLD:
try:
self.mining_node.write_registers(0, self.mining_registers)
self.mining_registers = self.mining_node.read_registers(0, 7)
except Exception, e:
print "Had trouble communicating:", e
try:
self.mining_registers[MINING_MODBUS_REGISTERS["TARE"]] = 1
self.mining_node.write_registers(0, self.mining_registers)
self.mining_registers[MINING_MODBUS_REGISTERS["TARE"]] = 0
except:
print "Had trouble communicating: no tare: ", e
if __name__ == "__main__": if __name__ == "__main__":
MiningControl() MiningControl()