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


版權聲明:本文為博主原創文章,歡迎轉載,並請注明出處。聯系方式:460356155@qq.com

不少儀器/設備都提供了數據采集的接口,其中不少是串口或網絡的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 460356155@qq.com'

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進行地址數據設置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM