1. 程式人生 > >采用VSPD、ModbusTool模擬串口、MODBUS TCP設備進行Python采集軟件開發

采用VSPD、ModbusTool模擬串口、MODBUS TCP設備進行Python采集軟件開發

ctrl+c col bin 數字 con spa not 行程 死循環

版權聲明:本文為博主原創文章,歡迎轉載,並請註明出處。聯系方式:[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 binascii
import 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采集軟件開發