技術頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于Modbus樹莓派控制多臺變頻器的方法及應用實例

基于Modbus樹莓派控制多臺變頻器的方法及應用實例

時間:2018-08-02 14:55:41來源:張雙馳 潘芝渭

導語:?通過實例詳細介紹了樹莓派擴展RS485/GPIO模塊,控制多臺變頻器的硬件設置、軟件配置及代碼編制方法。指出這種方法的獨特優(yōu)點和應用前景。

基于Modbus樹莓派控制多臺變頻器的方法及應用實例

張雙馳  潘芝渭

金豐(中國)機械工業(yè)有限公司研發(fā)中心

摘要:通過實例詳細介紹了樹莓派擴展RS485/GPIO模塊,控制多臺變頻器的硬件設置、軟件配置及代碼編制方法。指出這種方法的獨特優(yōu)點和應用前景。

關鍵詞:modbus_tk,樹莓派,匯川變頻器

1、前言

推出樹莓派產品的初衷是用于教育,它只有一個40腳的串行端口GPIO,直接應用它,只能做一些實驗和簡單的工程應用。今在GPIO上擴展RS485/GPIO模塊,使它具有Modbus通訊能力,就可以實時控制變頻器,從而開發(fā)出具有實用價值的工程項目。

圖1是某沖床群控系統(tǒng)部分框圖,介紹如下。

2、系統(tǒng)配置

圖1硬件配置圖

硬件配置:

變頻器:匯川MD380+MD380IO1[1],樹莓派:3B+RS485/GPIOShieldForRPiV3.0。

軟件配置:

修改樹莓派配置:關閉藍牙,關閉控制臺,使串口專用于Modbus通訊。操作系統(tǒng):Linux,編程軟件:python_3.4.2,通訊軟件:Modbus_tk_0.5.4,界面編程軟件:pyqt5

3、代碼編制

3.1配置Modbus_tk

設置modbus_rtu通訊模式,設置通訊參數(shù):9600,8N1。讀取變頻器參數(shù)后,需要將數(shù)據存放在內存,以便后續(xù)處理,為此導入日志文件。

importserial

importmodbus_tk

importmodbus_tk.definesascst

frommodbus_tkimportmodbus_rtu

PORT="/dev/ttyAMA0"

logger=modbus_tk.utils.create_logger('console')

master=modbus_rtu.RtuMaster(serial.Serial(port=PORT,baudrate=9600,bytesize=8,

parity='N',stopbits=1,xonxoff=0))

master.set_timeout(0.5)

master.set_verbose(True)

logger.info("connected")

importlogging

3.2分割日志文件

讀取的變頻器運行數(shù)據存放在日志文件中,隨著時間的推移,文件變得日益龐大,最后使系統(tǒng)癱瘓,因此,需要對日志文件進行分割,所謂分割,就是保留一部分記錄,其余拋棄,達到瘦身目的。有2種分割方法①按文件大小分割②按時間間隔分割,本例按方法②分割,每2秒分割一次,最多保留5個文件。

下面的代碼讀取1#變頻器起始地址為7000H的12個數(shù)據,存放在名稱為“pzw”的日志文件中(分割后的日志文件及備份小于0.2MB),和程序文件放在同一文件夾內。

logger.info(master.execute(1,cst.READ_HOLDING_REGISTERS,28672,12))

fromlogging.handlersimportTimedRotatingFileHandler

if__name__=='__main__':

logFilePath='pzw'

logger=logging.getLogger('')

logger.setLevel(logging.INFO)

handler=TimedRotatingFileHandler(logFilePath,when='s',interval=2,backupCount=5)

formatter=logging.Formatter('%(asctime)s-%(message)s')

handler.setFormatter(formatter)

logger.addHandler(handler)

3.3處理日志文件

為了準確獲取5臺變頻器的參數(shù),需要對日志文件“pzw”進行分析:

2018-05-2519:42:11,200-->1-3-112-0-0-12-95-15

2018-05-2519:42:11,306-<-1-3-24-0-0-14-16-16-232-0-0-0-0-0-0-0-0-0-0-0-0-1-252-1-240-0-134-87-101

2018-05-2519:42:11,395-(0,3600,4328,0,0,0,0,0,0,508,496,134)

2018-05-2519:42:11,396-->2-3-112-0-0-12-95-60

2018-05-2519:42:11,485-<-2-3-24-0-0-10-140-15-127-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-135-13-10

2018-05-2519:42:11,527-(0,2700,3967,0,0,0,0,0,0,0,0,135)

2018-05-2519:42:11,528-->3-3-112-0-0-12-94-237

2018-05-2519:42:11,614-<-3-3-24-0-0-10-240-15-217-0-0-0-0-0-0-0-0-0-0-0-0-0-2-0-1-0-32-7-88

2018-05-2519:42:11,655-(0,2800,4057,0,0,0,0,0,0,2,1,32)

2018-05-2519:42:11,656-->4-3-112-0-0-12-95-90

2018-05-2519:42:11,743-<-4-3-24-0-0-13-72-12-7-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-4-33-208-137

2018-05-2519:42:11,834-(0,3400,3079,0,0,0,0,0,0,0,0,1057)

2018-05-2519:42:11,835-->5-3-112-0-0-12-94-139

2018-05-2519:42:11,923-<-5-3-24-0-0-10-200-11-252-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-4-33-182-98

2018-05-2519:42:11,965-(0,2760,3068,0,0,0,0,0,0,0,1,1057)

發(fā)現(xiàn):①每條記錄去掉頭部日期時間后,第1個字符就是變頻器的站號②含有變頻器參數(shù)的記錄的字符數(shù)遠大于其他記錄,根據這2個特點,編制如下代碼:

withopen('pzw')asfile_object:

lines=file_object.readlines()#逐行讀文件,存到表lines中

n=len(lines)#獲取表的長度

foriinrange(n):

lines[i]=(lines[i])[27:]#截取表第27項到末尾,保存到表

iflen(lines[i])>63and(lines[i])[0]=='1':#判斷站號和是否是數(shù)據

abc1=lines[i]#存放到表abc1中

a1=abc1[7:]#截取表abc1第7項到末尾,保存到表a1

b1=a1.split('-')#以‘-’為分隔符將字符串分割為新的表

u0_00_1=str(float(int(b1[0])*256+int(b1[1]))/100)#變頻器輸出頻率

self.l1_1.setText(u0_00_1+'Hz')#標簽顯示

................

u0_11_1=str((int(b1[22])*256+int(b1[23]))/4)#pt100左軸承溫度

self.l7_1.setText(u0_11_1+'℃')

iflen(lines[i])>63and(lines[i])[0]=='2':

..................

iflen(lines[i])>63and(lines[i])[0]=='3':

..................

iflen(lines[i])>63and(lines[i])[0]=='4':

.................

iflen(lines[i])>63and(lines[i])[0]=='5':

...................................

上述代碼對n條記錄按照①②特點逐條進行判斷,最后用5個if語句,獲取文件“pzw”中所有滿足條件的記錄,代碼充分展示了python語言強大的表處理能力,是整個應用程序的核心。

3.4獲取變頻器參數(shù)值

上述矩形框內代碼的作用是:對滿足條件①②的記錄進一步處理:拋棄前端7個字符(例1-3-24-)后余下26個字節(jié)就是變頻器參數(shù)值和校驗碼,按表1即可編制讀數(shù)程序[1]。

表1:

3.5程序結構

“啟動”“停車”“調速”等控制信號是非周期命令,讀取變頻器參數(shù)和顯示數(shù)據是周期命令,為此,采用主線程-子線程結構模式。定義2個計時器模塊QTimter[2],各定時2秒,在定時器1期間執(zhí)行周期讀數(shù)命令,在定時器2期間,執(zhí)行非周期命令。流程見圖2,構成2秒左右一個循環(huán)的程序執(zhí)行過程。

圖2控制流程

3.5操作界面

圖3人機界面(局部)

圖3是操作界面,變頻器的輸出頻率由計數(shù)器控件QSpinBox[2]設置,點擊右邊的上下箭頭或直接用鍵盤敲入數(shù)字,可方便的進行設置。圖2數(shù)據分別是:輸出頻率,運行電流,DI狀態(tài),DO狀態(tài),AI1、AI2、AI3。

4、研發(fā)體會和展望

讀取變頻器DI/AI信號(故障,流量,溫度等),經過處理,得到整個系統(tǒng)設備的運行狀態(tài),在界面顯示出來,再通過DO/AO輸出開關信號或模擬信號(開/關閥,啟/停泵,調節(jié)閥門開度等),控制其他設備。充分利用這些端口,相當于增加了一臺具有:50個DI,25個DO,15個AI和10個AO的小型PLC,具體用法因篇幅所限本文不再介紹[1]。

在物聯(lián)網三層體系結構中,PLC必須借助網關才能連接到外網,而樹莓派集成了網絡功能(有線/無線),實質上起著控制器和網關的雙重作用。

Yeelink是國內目前最大的物聯(lián)網云平臺,它免費為公眾提供云服務,通過Yeelink提供的App接口,進行相關的開發(fā),即可實現(xiàn)產品遠程監(jiān)控。

樹莓派應用于工程項目,無論是產品成本還是控制能力,都具有極大的實用價值和良好的開發(fā)前景。

參考文獻:

[1]匯川技術:MD380系列高性能矢量變頻器用戶手冊V1.4

[2]王碩、孫洋洋:PyQt5快速開發(fā)與實戰(zhàn),電子工業(yè)出版社,2017.10

標簽:

點贊

分享到:

上一篇:PI500變頻器在真空泵上的應用

下一篇:萬可全新帶操作桿型軌裝端子...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.treenowplaneincome.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯(lián)網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯(lián)系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網-工業(yè)自動化與智能制造的全媒體“互聯(lián)網+”創(chuàng)新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號