999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

編譯型PLC Modbus協議的研究與實現

2014-02-11 03:47:15令狐釗楊旭東陳倫軍
機電工程技術 2014年12期
關鍵詞:程序功能

令狐釗,楊旭東,陳倫軍

(1.貴州大學機械工程學院,貴州貴陽 550025;2.貴陽永青儀電科技有限公司,貴州貴陽 550025)

編譯型PLC Modbus協議的研究與實現

令狐釗1,2,楊旭東1,陳倫軍1

(1.貴州大學機械工程學院,貴州貴陽 550025;2.貴陽永青儀電科技有限公司,貴州貴陽 550025)

在編譯型PLC的研發過程中,為使PLC的通信具有通用性和開放性,采用了Modbus協議。針對中斷數據收發會占用大量CPU的問題,以及幾種常用PLC通信方式的優缺點,通過對Modbus協議的研究,在ARM技術和操作系統的支持下,結合編譯型PLC的特點,提出了一種中斷組合DMA的數據收發新方法和一種多任務通信方法,實現了一種實時性較好、CPU占用量較少的適合于編譯型PLC串行鏈路上的Modbus服務器通信。測試結果表明了程序的正確性。

Modbus;編譯型PLC;DMA;操作系統

目前國內外的主流PLC為解釋型PLC,原因在于其跨平臺性好,在線編程能力強,但是執行效率低[1],資源占有量大,實時性低,而且PLC新興之處并未形成標準,造成了各品牌PLC自成系統。隨著IEC61131標準和工業場合對實時性要求苛刻等原因,基于IEC標準的編譯型PLC逐漸成為國內外研究課題。在通信方面,各品牌PLC基于自身利益的考慮,基本上都開發有專有通信協議,而面對各種新協議的不斷產生,用戶往往無所適從,擔心會被某些PLC廠商鉗制。Modbus通信協議是Modicon公司推出的一種公開的工業通信協議,該協議得到了施耐德、西門子、三菱、松下等大型PLC廠商支持,同時為各種儀器儀表廣泛支持。基于以上考慮,為使自主研發的編譯型PLC的通信具有通用性和開放性,提供了對Modbus的支持。本文采用STM32F107VC芯片,在實現了RS-485等硬件電路的基礎上,結合編譯型PLC的特點,綜合多任務處理技術,對協議的研究和實現提出了看法和實現方法。

1 編譯型PLC及Modbus協議簡介

編譯型PLC不同于解釋型PLC,編寫符合編譯型PLC的Modbus通信,首先應熟悉編譯型PLC的特點和Modbus協議。

1.1 編譯型PLC

編譯型PLC,從編譯原理的角度充分體現了與傳統解釋型PLC的不同之處。用戶編寫的程序在上位機上直接編譯,一步到位,不需要下位機再進行解釋。正因其“一次編譯,多次執行”的特點,一方面減輕了PLC本體需要裝載解釋系統的負擔,提高了效率,降低了資源占有量;另一方面增加了PLC軟硬件組合的靈活性。圖1為編譯型PLC梯形圖程序編譯流程。第一次編譯,把用戶梯形圖程序邏輯編譯成標準C文件,以方便與庫文件一起進行GCC調用編譯;第二次編譯,即GCC編譯以生成可執行文件,編譯后便可下載到PLC本體中以運行。其中庫文件一般包括兩部分,一部分是驅動程序,用于讀寫I/O,初始化I/ O等;另一部分是功能庫函數,例如移位、PID等功能函數。若為帶操作系統的PLC,則庫文件中還包括操作系統。本文Modbus協議程序即放置于庫文件中,用戶編寫程序時,調用即可。

圖1 梯形圖程序編譯流程圖

1.2 Modbus協議

Modbus是一種單主站、多從站的請求/應答協議[2-3]。如圖2為通用Modbus幀。PDU為數據單元,包括功能碼和數據兩部分。功能碼用于指示所要執行的操作。數據域包含完成指定操作所需要的附加信息。PDU上加上地址域和差錯校驗構成了ADU,即應用數據單元。地址域用于標識服務器,服務器用于確定數據幀是否是發送給自己的。差錯校驗碼用于確認收發數據的正確性。

圖2 通用Modbus幀

2 軟件實現

Modbus通信過程是主站發送數據給從站,從站在接收數據后,對接收幀進行處理,處理后若非廣播幀,則進行回復幀構建,并回復給主站。如圖3為Modbus服務器通信流程。服務器通信的實現包括:數據接收和發送、幀前處理后處理、PDU處理。為使程序各部分耦合性降低,以模塊化的方式來實現,模塊之間提供相應接口。RTU模式和ASCII模式因數據流格式不一樣,在數據的接收和發送,以及前后處理都不一樣。但是,它們可以有一樣的PDU處理函數,只需把前處理后的數據統一為RTU的八位二進制格式即可。下文先闡述RTU模式和ASCII模式數據接收和前后處理,然后闡述PDU處理,最后探討多線程下Modbus通信的實現。

圖3 通信流程圖

2.1 RTU模式

數據以報文幀方式發送和接收,如圖4為RTU數據流格式。一幀數據以非空閑幀作為幀頭的標記,3.5個字符作為幀尾標記。

圖4 RTU數據流

2.1.1 數據收發

數據的收發,通常采用中斷方式來實現。該方式優點是配置簡單,缺點是占用CPU過多。ARM最新Cotex系列芯片支持DMA(直接存儲器訪問)。根據RTU傳輸模式的特點,最終采用DMA組合空閑幀中斷、接收中斷的方式,而發送則完全采用DMA發送,具有CPU占用小,速度快的優點。圖5為RTU數據接收程序框圖。

RTU模式以3.5個字符作為幀的結束,作為幀與幀之間標識。其實現算法為:

圖5 RTU數據接收程序框圖

其中:MBbaud為串口波特率。因高速傳輸時隱含著大量中斷管理,從而導致CPU負擔加重,所以在當波特率大于19 200 bit/s時,定時器值設為1.75 ms。

2.1.2 前后處理

前處理的工作是確定數據是否發送給本機,以及進行CRC校驗確認傳輸數據的正確性。確定數據是否發送給本機,通過地址的判斷來確定。后處理的工作是確認是否廣播幀,如果不是則給回復幀加上CRC校驗碼,并把數據移交給DMA。前后處理分別提供兩個函數頭,如下:

2.2 ASCII模式

ASCII模式通信流程和RTU模式類似,不同之處在于報文幀數據流格式。圖6為ASCII數據流格式。

圖6 ASCII數據流

2.2.1 數據收發

ASCII模式以“:”字符標識數據幀的起始,CR(回車符“ ”)和LF(換行符“ ”)作為幀尾標識。如果采用DMA方式來接收,則必須通過查詢標識字符來識別幀頭和幀尾,所以,采用接收中斷的方式比較合理。其實現可采用狀態機的方式,如圖7所示。而對于數據的發送,采用DMA方式發送即可。該模式對定時器要求并不高,協議規定容許有1 s的延時,但為了適應各種場合對實時性的要求,該延時值容許用戶配置。

圖7 ASCII接收狀態機

2.2.2 前后處理

為方便PDU數據處理,在發送前后把數據轉換為八位二進制格式。前處理程序邏輯為:接收之后先對把地址轉換以確認地址是否正確,如果正確則全部轉換,并進行LRC校驗。后處理給要回復幀加上':'字符,然后依次把處理好的數據轉換為字符形式,并添加到回復幀上,然后給回復幀加上轉換后的LRC校驗碼,最后加上“ ”、“ ”字符。前后處理分別提供兩個函數頭,如下:

2.3 PDU處理

PDU處理是通信的目的內容。歸納協議,得圖8,可知其處理過程是根據數據幀的功能碼和數據域的地址信息對數據進行讀寫操作?;诖?,PDU處理要實現三部分內容:數據的讀寫操作;相應功能碼的功能函數;提供給數據處理階段主程序的接口函數。三者的程序邏輯關系是:接口函數根據功能碼查找調用哪個功能函數,功能函數先檢查PDU的讀寫地址和讀寫數量信息,在信息正確的情況下進行讀寫操作,該過程若有錯誤則返回相應異常。

圖8 PDU處理流程

離散輸入點和輸入寄存器只可讀,線圈和保持寄存器可讀且可寫。所以,分別實現四個讀寫函數:讀取離散輸入、讀取輸入寄存器、讀寫線圈、讀寫保持寄存器,而其返回參數是枚舉類型的異常碼。

各功能函數根據PDU信息調用一次或兩次其中的一個讀寫函數,返回參數異常碼。以功能0x17(讀寫多個寄存器功能)為例,定義該功能碼功能函數的函數頭如下,其它功能碼的功能函數頭與其相似,僅函數名不同,如下:

MBException SMBFunc0x17RWHoldings(U8* frame,U16*Len);//0x17功能函數

采用用數組和函數指針的方式來查找并調用功能函數,接口函數和數組定義如下:

MBException SMBPDUProcess(U8*pframe,U16*pLen)//接口函數

本文實現了實現了十一種功能碼,滿足PLC需求。在PDU處理實現的基礎上,組合前后出理,對RTU模式和ASCII模式,將分別構成下面兩個函數。

2.4 多線程下的Modbus通信

傳統PLC是一個大循環掃描,其通信方式有兩種:以中斷的方式執行;非中斷方式執行。中斷的方式是通信數據到達,程序立刻跳轉到中斷中執行,適合于較高速度的通信場合,缺點是占用較多CPU。非中斷方式是把通信邏輯放到掃描程序中,當掃描到了后即執行通信,這種通信方式適合于低速度通信場合,但是在用戶程序量比較大時,延時明顯。本文將提出采用多任務操作系統情況下的第三種方法:把通信單獨做為一個任務來處理,PLC程序采用多任務方式工作,設置通信任務的優先級可以適應對通信任務的中低高速要求。

以RTU模式為例,若采用中斷方式,只需將SMBRTUProcess()組織到定時器中斷中即可;若采用非中斷方式執行,只需將SMBRTUProcess()放到大循環中即可。本文也提出的第三種方式的實現方法是在main()函數中新建一個任務用于Modbus通信,該任務執行條件是數據是否到達。其通過在數據接收完時發送數據接收完成信號量給操作系統等待任務調度以實現。其中通信任務的優先級容許用戶配置。本文采用的操作系統是CoOs,程序源碼如下:

表1 異常測試結果

3 測試

上位機RS-232轉RS-485連接到PLC,利用Modbus poll的CommunicationTraffic顯示往返數據,如下以0x03為例,分別為兩種模式測試值。

分析結果,一方面測試軟件沒顯示錯誤,另一方面,對比往返數據,顯示了數據的正確性。設置通信間隔時間為20 ms,長時間讀寫數據,運行結果表明軟件的正確和可靠性,速度方面也滿足要求。

對異常的測試也是至關重要的。下文僅表述在RTU模式下測試功能碼0x03的部分異常回復。測試結果見表1,表明了異常碼顯示的正確性。

4 總結

基于Modbus協議在PLC領域的通用性,文章結合編譯型PLC的特點,分析和實現了該協議在串行鏈路上的服務器通信。通過合理利用DMA的方式實現了RTU的串口數據收發,有效釋放了中斷CPU;通過狀態機的方法實現了ASCII模式的數據接收;通過PLC通信方式的總結,結合編譯型PLC的特點提出了基于多任務下的通信實現方法。測試驗證了程序設計的正確性。最終使得自主研發的PLC具有了通用總線的功能,具有很好的實用性和參考價值。

[1]李慧強,程廣河,王茂勵,等.基于ARM的編譯型可編程序控制器系統研究[J].自動化與儀表,2009,24(10):42-44.

[2]GB/T 19582.1-2008.基于Modbus協議的工業自動化網絡規范第1部分:Modbus應用協議[S].

[3]GB/T 19582.2-2008.基于Modbus協議的工業自動化網絡規范第2部分:Modbus協議在串行鏈路上的實現指南[S].

Research and Implementation of Modbus Protocol for Complied PLC

LINGHU Zhao1,2,YANG Xu-dong1,CHEN Lun-jun1
(1.School of Mechanical Engineering,Guizhou University,Guiyang 550025,China;2.Guiyang Yong Qing Yi Dian Ke Ji Co.,Ltd.,Guiyang 550025,China)

In order to make the communication of complied PLC which is researched and implemented to be compatible and open,Modbus protocol is adopted.Aiming at data transmission through interrupt will take up a lot of CPU time,and the advantages and disadvantages of several kinds of PLC communication mode,through the study of Modbus protocol,with the support of ARM technology and RTOS,and according to the characteristics of compiled PLC,a new combinational way of DMA and interrupt,and a effective multitask way is proposed.Finally,a kind of serial link Modbus communication that is higher real-time,lesser CPU occupation,and suitable to complied PLC is implemented.The test results turned out that the correctness of the program.

Modbus;complied PLC;DMA;operating system

TP274

:A

:1009-9492(2014)12-0210-05

10.3969/j.issn.1009-9492.2014.12.054

令狐釗,男,1988年生,貴州人,碩士研究生,工程師。研究領域:測試與數字控制技術。

(編輯:王智圣)

2014-07-17

猜你喜歡
程序功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
關于非首都功能疏解的幾點思考
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 欧美第一页在线| 91精品专区国产盗摄| 国产噜噜在线视频观看| 亚洲无码91视频| 一本色道久久88| 久久久无码人妻精品无码| 超清人妻系列无码专区| 日韩欧美成人高清在线观看| 波多野吉衣一区二区三区av| 亚洲Av综合日韩精品久久久| 天天做天天爱夜夜爽毛片毛片| 免费在线播放毛片| 亚洲综合天堂网| 国产理论最新国产精品视频| 国产91熟女高潮一区二区| 精品久久国产综合精麻豆| 亚洲伊人电影| 久久综合亚洲色一区二区三区| 91精品国产无线乱码在线| 国产一区二区网站| 久久99精品国产麻豆宅宅| 黄色污网站在线观看| 国产欧美日本在线观看| 在线日韩一区二区| 亚洲色图欧美激情| 亚洲精品视频免费观看| 久久久久夜色精品波多野结衣| 亚洲精品国产综合99| 91亚洲精品国产自在现线| 精品色综合| 婷五月综合| 四虎永久免费地址在线网站| 日本免费一级视频| 欧美劲爆第一页| 99精品久久精品| 亚洲无码精品在线播放| 欧美第二区| 亚洲六月丁香六月婷婷蜜芽| 69综合网| 色综合网址| 亚洲丝袜中文字幕| 国产成人免费观看在线视频| 日韩AV无码免费一二三区| 亚洲娇小与黑人巨大交| 亚洲国产91人成在线| 日本一本正道综合久久dvd| 美女被躁出白浆视频播放| 日韩欧美亚洲国产成人综合| 精品無碼一區在線觀看 | 亚洲欧美自拍中文| 美女毛片在线| 在线免费看黄的网站| 又黄又湿又爽的视频| 日韩中文无码av超清| 日韩av资源在线| 欧美一道本| 日本亚洲欧美在线| 国产精品人人做人人爽人人添| 精品国产乱码久久久久久一区二区| 亚洲天堂啪啪| 精品久久香蕉国产线看观看gif| 欧美 亚洲 日韩 国产| 日本一区二区三区精品国产| 91久久偷偷做嫩草影院| 色播五月婷婷| 拍国产真实乱人偷精品| 国产一级无码不卡视频| 久久夜色精品| 3p叠罗汉国产精品久久| 尤物亚洲最大AV无码网站| 91精品专区国产盗摄| 亚洲一级毛片在线观| 国产精品成人观看视频国产| 婷婷综合缴情亚洲五月伊| 精品国产一区二区三区在线观看| 亚洲乱码在线播放| 91探花国产综合在线精品| 亚洲高清在线天堂精品| 99re在线免费视频| 日韩国产无码一区| 国产在线观看一区二区三区| 日韩欧美综合在线制服|