def discoverDevices(): try: lbDevices.delete(0, 'end') commDD = PLC() devices = commDD.Discover() if str(devices) == 'None [] Success': lbDevices.insert(1, 'No Devices Discovered') else: i = 0 for device in devices.Value: lbDevices.insert(i * 12 + 1, 'IP Address: ' + device.IPAddress) lbDevices.insert(i * 12 + 2, 'Product Name: ' + device.ProductName) lbDevices.insert(i * 12 + 3, 'Product Code: ' + str(device.ProductCode)) lbDevices.insert(i * 12 + 4, 'Vendor: ' + device.Vendor) lbDevices.insert(i * 12 + 5, 'Vendor ID: ' + str(device.VendorID)) lbDevices.insert(i * 12 + 6, 'Device Type: ' + str(device.DeviceType)) lbDevices.insert(i * 12 + 7, 'Device ID: ' + str(device.DeviceID)) lbDevices.insert(i * 12 + 8, 'Revision: ' + device.Revision) lbDevices.insert(i * 12 + 9, 'Serial: ' + str(int(device.SerialNumber, 0))) lbDevices.insert(i * 12 + 10, 'State: ' + str(device.State)) lbDevices.insert(i * 12 + 11, 'Status: ' + str(device.Status)) lbDevices.insert(i * 12 + 12, '----------------------------------') i += 1 for device in devices.Value: if device.DeviceID == 14: lbDevices.insert(i * 12 + 1, 'Modules at ' + device.IPAddress) ''' Query each slot for a module ''' with PLC() as c: c.IPAddress = device.IPAddress for j in range(17): x = c.GetModuleProperties(j) lbDevices.insert(i * 12 + 2 + j, 'Slot ' + str(j) + ' ' + x.Value.ProductName + ' rev: ' + x.Value.Revision) c.Close() c = None i += 1 commDD.Close() commDD = None except Exception as e: if not commDD is None: commDD.Close() commDD = None if app_closing: pass else: print(str(e))
def get_devices(ipAddress, slot): devices = [] comm = PLC(ipAddress, slot) ret = comm.Discover() comm.Close() if ret.Value == []: return jsonify('No Devices Discovered') for device in ret.Value: devices.append({ "productName": device.ProductName, "revision": device.Revision }) return jsonify({'devices': devices})
if ping(controller_ip) is None: check_error_log = True print("PLC unreachable, check IP or network settings!") input("Program will exit now. Press Enter") log.write( "Error: %s PLC unreachable, check IP or network settings!\n" % (now.strftime("%c"))) log.flush() sys.exit() is_micro800 = yes_or_no("Is this a Micro8xx PLC?") comm.Micro800 = is_micro800 # discover devices devices = comm.Discover() for device in devices.Value: print(device.IPAddress) print(' Product Code: ' + device.ProductName + ' ' + str(device.ProductCode)) print(' Vendor/Device ID:' + device.Vendor + ' ' + str(device.DeviceID)) print(' Revision/Serial:' + device.Revision + ' ' + device.SerialNumber) print('') # get plc time for clx, and compact if not is_micro800: response = comm.GetPLCTime() print(response.Value)