-Voir (1)
Conda install
pySerial dans (2)――La méthode d'automatisation est illustrée en prenant comme exemple l'automatisation du fonctionnement manuel dans mon environnement.
Il existe un package appelé pandas qui peut être utilisé en Python et convient aux opérations de table comme Excel. Je vais présenter un exemple de "Représentation graphique de la valeur de tension automatiquement acquise" en utilisant ceci et un package appelé matplotlib qui peut facilement dessiner un graphique proprement.
Supposons que lorsqu'un courant circule dans une large plage dans l'espace dans une direction, le courant est mesuré à l'aide d'un tapis plus petit que l'espace. Lorsque le tapis est croisé peu à peu perpendiculairement au courant et que le courant est enregistré pas à pas, le «contrôle du mouvement» et la «mesure du courant» sont commandés depuis pyserial. Le mouvement est contrôlé par Sigma Kouki SHOT102, et le courant est mesuré à l'aide de la série R6441 d'ADVANTEST. Je vais.
Cell1
import serial
import time
import pandas as pd
import matplotlib.pyplot as plt
serial
utilise pyserial, time
crée l'intervalle de temps pour la communication série, pandas
utilise dataframe et matplotlib.pyplot
est utilisé pour dessiner des graphiques.
Cell2
##Spécification constante
MAX = 42000
COMpulse = "COM9"
COMampere = "COM10"
bitRate = 9600
Spécifiez la constante utilisée dans pyserial
.
Cell3
##Initialisation variable
pulse = 0
ampere_list = []
pulse_list = []
ampere_average_list =[]
Initialisez les variables à utiliser.
##Mouvement d'origine du dos(Initialisation)
ser = serial.Serial(COMpulse, bitRate, timeout=0.1)
ser.write(b"H:2-\r\n")
time.sleep(0.1)
print(ser.read_all())
ser.close()
Passer au contrôle de fonctionnement et à l'origine de la mesure
Cell5 «pulse» prend une valeur de 0 à 42 000 et se déplace de 3 μm par impulsion. (En fait, il se déplace de 6 μm par 2 impulsions, mais la commande semble être écrite comme ça). La valeur actuelle à chaque position est échantillonnée 5 fois et moyennée à la valeur à ce point. Le nombre moyen de fois est arbitraire. Après avoir déplacé la table optique jusqu'à la fin, attachez la liste des valeurs actuelles et de position en tant que trame de données, convertissez la valeur d'impulsion en longueur réelle et dessinez avec matplotlib. C'est devenu un flux. (Au fait, j'ai mis le dataframe en csv.)
##Commencer la mesure
while 1:
if pulse >= MAX:
##Termine l'instruction while lorsque la position atteint MAX
break
##Enregistrer les informations de localisation actuelles
pulse_list.append(pulse/2) #Pour une raison quelconque, l'impulsion est spécifiée par 2 et ordonnée, elle est donc divisée par 2.
##Mesurer le courant(La valeur à cette position est la moyenne de 5 fois.)
for i in range(5):
ser = serial.Serial(COMampere,bitRate,timeout=0.1)
time.sleep(0.5)
ser.write(b"MD?\r\n")
time.sleep(0.5)
tmp = ser.read_all()
ampere = float(tmp.split()[1])
ampere_average_list.append(ampere)
ser.close()
##Courant et impulsion(position)Lister
ampere_list.append(sum(ampere_average_list)/len(ampere_average_list))
ampere_average_list = [] #Initialiser la liste
##Déplacer la table optique
pulse += 1000
position = "A:2+P"+str(pulse)+"\r\n" #Faire une commande en combinant des chaînes
ser = serial.Serial(COMpulse,bitRate,timeout=0.1)
ser.write(bytes(position, 'UTF-8'))
time.sleep(0.5)
ser.write(b"G:\r\n")
ser.close()
##Transformez la liste en un dataframe
print(ampere_list)
print(pulse_list)
df = pd.DataFrame({'ampere(A)':ampere_list,'pulse':pulse_list})
##Changer la valeur d'impulsion en longueur
def pulseToMilliMeter(pulse):
return pulse*0.006
df["position(mm)"] = df["pulse"].map(pulseToMilliMeter) #Vous pouvez faire des choses comme appliquer des fonctions par lots dans Excel
df.to_csv('./csv/hoge/result.csv',index=False)
##Dessinez un graphique en utilisant matplotlib
plt.figure()
df.plot(x='position(mm)',y='ampere(A)')
plt.savefig('./img/sample.png')
plt.close('all')
Supposons que l'efficacité a été améliorée. En fait, tout ce que vous avez à faire est d'appuyer sur Entrée, ce qui le rend beaucoup plus simple et plus reproductible. J'écrirai plus quand j'aurai d'autres matériaux qui peuvent être rendus plus efficaces.
Recommended Posts