采用VSPD、ModbusTool模擬串口、MODBUS TCP設備進行Python采集軟件開發
版權聲明:本文為博主原創文章,歡迎轉載,並請註明出處。聯系方式:[email protected]
不少儀器/設備都提供了數據采集的接口,其中不少是串口或網絡的MODBUS/TCP協議。
串口是比較簡單,但是較為古老的接口方式,現在的筆記本基本上都沒有這種形式的接口了,如果軟件開發在筆記本上進行的話,無法調試,或要繞一下用USB轉串口的小設備,很不方便。
還好有前輩開發了虛擬串口軟件,可以很方便的用於串口通訊的軟件開發,我用的是VSPD(網盤)。用虛擬串口軟件開發有幾方面的好處:
1、電腦/筆記本沒有串口也能正常進行開發。
2、通信/采集軟件開發過程中不影響設備的正常使用。
3、軟件開發過程中可以剔除硬件故障的影響。
4、如果軟件、硬件一起開發的話,可並行進行,無需等待硬件完成後才能進行軟件調試。
VSPD的安裝及基本使用方法:
1、執行vspd.exe進行軟件安裝
2、運行vspdconfig.exe
3、選擇端口名稱對,點擊添加端口。每次添加2個端口,一發送的二接收,二發送的一接收。
用一個端口模擬電腦串口,另一個端口模擬其他設備端口,根據兩者的通信協議進行程序編寫。
下面是編寫的模擬FIBERPRO偏振消光比測試儀ER2200的Python程序:
# -*- coding:utf-8 -*- u"""FIBERPRO偏振消光比測試儀ER2200模擬程序""" __author__ = ‘zhengbiqing [email protected]‘ import binasciiimport signal import sys import serial ser = serial.Serial(‘COM4‘, 115200, timeout=1) print ‘Welcome to ‘, __doc__, ‘,‘, ‘device is %s‘ % (‘Ready‘ if ser.isOpen() else ‘Error‘) print ‘Author is ‘, __author__ # ctrl+c處理函數 def signal_handler(signal, frame): ser.close() print ‘You pressed Ctrl+C!‘, ‘device is %s‘ % (‘Closed‘ if not ser.isOpen() else ‘Error‘) print ‘Goodbye!‘ sys.exit(0) # 程序是死循環,通過ctrl+c退出,為了在退出時關閉串口,捕獲該信號 signal.signal(signal.SIGINT, signal_handler) while True: data = ser.read(7) if len(data): # 調試打印,b2a_hex(data)是把字符串data轉換為十六進制數 print binascii.b2a_hex(data), data if data == ‘read?\r\n‘: #三個數字分別表示被測光的消光比,偏振角度,和光功率 ser.write(‘19.35,53.47,-5.17\r‘)
對采用網口的MODBUS TCP協議的設備,開發數據采集軟件也可以用模擬軟件替代實際設備,完成後再把軟件用到實際設備上。
我用得是ModbusTool(網盤),包括master和slave,分別模擬主設備和從設備。
ModbusTool的安裝和基本使用方法:
1、分別執行setup.exe安裝。
2、對master,填寫好希望連接設備的ip、port,點擊connnet連接設備,填寫start起始地址,size讀寫的長度,點擊Functions的功能碼就行了。
3、對slave,填寫偵聽的端口號port,點擊listen等待master連接(偵聽接口為127.0.0.1),可以在地址中輸入數字後點Apply進行地址數據設置。
采用VSPD、ModbusTool模擬串口、MODBUS TCP設備進行Python采集軟件開發