Mit der neuen Python Integration für das Qmix SDK entwickeln Sie in kürzester Zeit kleine Anwendungen, auomatisieren bestimme Dosierprozesse oder realisieren eigene Analysen. Der Hauptvorteil von Python ist dabei die einfache Programmierung, wodurch die Zeit für die Entwicklung, Fehlerbehebung und Wartung des Codes spürbar minimiert wird. In dem folgenden Beispiel zeigen wir Ihnen, wie einfach und schnell Sie eine Anwendung mit Python und dem Qmix SDK realisieren können.

Installation

Zur Installation verwenden Sie einfach das Qmix SDK Installationspaket für Windows. Das SDK wird in einen Ordner Ihrer Wahl installiert.

Einbindung

Zur Einbindung des Qmix SDK in Ihr Python Script müssen Sie den Pfad, der die Qmix SDK Module enthält zum Modulsuchpfad hinzufügen. Damit Python die Shared Libraries (DLLs) des SDK laden kann, müssen Sie dann noch den Pfad, der die DLLs enthält zum Windows Suchpfad hinzufügen. Alle Details dazu finden Sie auch in der Online Dokumentation.

import sys
import os
QMIXSDK_DIR = "C:/temp/QmixSDK-64bit_20180626"
sys.path.append(QMIXSDK_DIR + "/lib/python")
os.environ['PATH'] += os.pathsep + QMIXSDK_DIR

 

Jetzt können Sie die einzelnen Module der Qmix SDK Python Integration importieren.

from qmixsdk import qmixbus
from qmixsdk import qmixpump

 

Die erste Python Anwendung

Danach können Sie mit der Entwicklung Ihrer ersten Anwendung beginnen. Das folgende Programm zeigt ein kleines Beispiel. Zuerst wird ein Bus Objekt angelegt, mit dem Pfad zur einer Gerätekonfiguration initialisiert und dann die Kommunikation gestartet. Danach erzeugen wir ein Pumpenobjekt und verbinden es mit der ersten Pumpe im SDK – Geräteindex 0. Testweise geben wir den Namen der Pumpe mit der print Funktion aus.

def main():
"""
A small example that shows how to use the Qmix SDK for Python
"""
bus = qmixbus.Bus()
bus.open("testconfig_qmixsdk", "")
bus.start()
pump = qmixpump.Pump()
pump.lookup_by_device_index(0)
print(pump.get_device_name())

 

Im nächsten Schritt führen wir mit calibrate eine Referenzfahrt durch um die Nullposition der Pumpe zu bestimmen. Vor der Referenzfahrt löschen wir noch eventuell vorhandene Fehler (clear_fault) und setzen die Pumpe betriebsbereit (enable). Mit Hilfe eines Timers warten wir dann, bis die Kalibrierung beendet ist.

pump.clear_fault()
pump.enable(True)
pump.calibrate()
timeout_timer = qmixbus.PollingTimer(10000)
result = timeout_timer.wait_until(pump.is_calibration_finished, True)
print(result)

 

Die Pumpe ist nun initialisiert und wir können mit der Dosierung beginnen. Dafür setzen wir die Einheiten für Volumen und Flussrate auf Milliliter und Milliliter pro Sekunde. Testweise lassen wir uns die Einheit für den Fluss mit der print Funktion ausgeben. Dann konfigurieren wir die Spritze, die verwendet werden soll. Wir verwenden eine Spritze mit 1 mm Innendurchmesser und 60 mm Kolbenhub. In Zeile 41 starten wir die Aufnahme (aspirate) von 0.02 ml mit eine Flussrate von 0.004 ml/s. Mit einem Timer warten wir wieder, bis die Dosierung beendet ist.

pump.set_volume_unit(UnitPrefix.milli, VolumeUnit.litres)
pump.set_flow_unit(UnitPrefix.milli, VolumeUnit.litres, TimeUnit.per_second)
print(pump.get_flow_unit()
pump.set_syringe_param(1, 60)
print(pump.get_syringe_param())
print(pump.get_volume_max())
print(pump.get_flow_rate_max())
pump.aspirate(0.02, 0.004)
timeout_timer.set_period(10000)
result = timeout_timer.wait_until(pump.is_pumping, False)
print(result)

 

Am Endes des Programms stoppen wir die Kommunikation und rufen die close Funktion des Bus Objektes auf, um alle Ressourcen wieder freizugeben.

bus.stop()
bus.close()

 

Wir hoffen, Sie haben einen kleinen Eindruck davon bekommen, wie leistungsfähig und gleichzeitig einfach das Qmix SDK für Python ist. Das Python Beispiel aus diesem Blogbeitrag können Sie hier herunterladen.