Beispiel #1
0
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))
Beispiel #2
0
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)