張翠平,宋文超,李根,付瑤,李古清
(天津電氣科學(xué)研究院有限公司,天津 300180)
基于CP341模塊的MODBUS RTU免授權(quán)通訊的實現(xiàn)與應(yīng)用
張翠平,宋文超,李根,付瑤,李古清
(天津電氣科學(xué)研究院有限公司,天津 300180)
根據(jù)實際項目介紹了一種基于RS485接口的西門子CP341通訊模塊的MODBUS RΤU通訊設(shè)計方案,在這種方案中詳細(xì)討論了通過使用集成在CP341內(nèi)的ASCⅡDriver通訊協(xié)議來實現(xiàn)MODBUS RΤU協(xié)議,并且通過采用在西門子SΤEP7中軟件編程的方式實現(xiàn)MODBUS RΤU免授權(quán)通信。該方案不再需要使用MODBUS協(xié)議驅(qū)動模塊,節(jié)省開銷。實際應(yīng)用結(jié)果表明,這種通訊方式不僅成本低廉而且安全可靠、使用方便,具有廣泛的應(yīng)用價值,值得推廣。
CP341通訊模塊;MODBUS RΤU通信;CRC冗余校驗
MODBUS RΤU作為一種開放高效的通信協(xié)議在眾多工業(yè)領(lǐng)域中的智能控制器以及智能儀表上已經(jīng)得到了廣泛的應(yīng)用,它成功地解決了現(xiàn)場智能控制器以及工業(yè)儀表與PLC之間數(shù)據(jù)交換問題,這樣不僅節(jié)省了傳統(tǒng)的大量通訊電纜,而且其數(shù)據(jù)傳輸可靠性也得到了大幅度提升。CP341模塊是西門子S7-300系列中的一種串行通信模塊,它硬件集成了ASCⅡDriver等驅(qū)動協(xié)議,支持不同的傳輸接口如RS232C或RS485等。
本文通過空壓機變頻節(jié)能改造項目中PLC與美國壽力ΤS32S-600H型和LS25S-300L型螺桿空壓機的通訊,對MODBUS RΤU協(xié)議免授權(quán)通訊進(jìn)行了深入的研究并最終得以實現(xiàn)和應(yīng)用。
1.1 CRC校驗算法概述
在程序的設(shè)計調(diào)試時需要對從站的協(xié)議類型,奇偶校驗,傳輸超時,從站地址等參數(shù)進(jìn)行一些必要的設(shè)置以使其能夠與主站相匹配,否則很難進(jìn)行彼此間的數(shù)據(jù)交換。其中CRC循環(huán)冗余校驗為本文研究的關(guān)鍵性問題。
MODBUS通信協(xié)議的CRC碼為2B,包含了1個16位的二進(jìn)制值。發(fā)送設(shè)備需要計算CRC碼,并將其置于發(fā)送信息幀的末端。而接收設(shè)備則將接收到的所有信息(包含CRC碼)進(jìn)行重新計算,并判斷計算結(jié)果的CRC碼是否為0,如果計算結(jié)果為0,表明接收設(shè)備接收的信息幀正確無誤;否則表明接收的信息幀有誤。只有當(dāng)計算的CRC校驗結(jié)果正確時,RΤU主站才能接收從站的數(shù)據(jù),RΤU從站才能準(zhǔn)確無誤地響應(yīng)主站的請求。因此,如何準(zhǔn)確地進(jìn)行CRC校驗是MODBUS通信成功與否的關(guān)鍵。
在計算CRC校驗碼時只有每個字符的8位數(shù)據(jù)用于CRC處理。而其中的起始位、停止位以及校驗位不參與CRC校驗碼的計算。生成CRC校驗碼的算法如下:
1)把16位CRC寄存器置成FFFF H。
2)將報文的起始位字節(jié)與這16位寄存器的低位字節(jié)與進(jìn)行“異或”運算,并將運算結(jié)果放入到這16位寄存器當(dāng)中。
3)運算1次后CRC寄存器則向右移1位,MSB填零,檢查LSB。
4)如果向右移出的數(shù)位是0,則重復(fù)步驟3);若向右移出的數(shù)位是1,CRC寄存器與101000000000000進(jìn)行異或運算,并將其運算結(jié)果存至這個寄存器當(dāng)中。
5)重復(fù)步驟3)和步驟4)直至完成8次移位,這樣就完成了8位字節(jié)的處理。
6)重復(fù)步驟3)至步驟5),直至全部字節(jié)處理完畢。這個16位寄存器的內(nèi)容即是CRC校驗值。
7)放入CRC值信息時,高8位和低8位應(yīng)分開放置,先放低8位,后放高8位。
1.2 CRC校驗程序的編寫
CRC校驗程序需要在主程序中被多次調(diào)用,因此為了方便調(diào)用,設(shè)計了1個功能塊FC100來完成此CRC校驗。使用時只要在主程序中直接調(diào)用此功能塊就可以完成CRC校驗,這樣既方便修改而且用起來也更為方便、靈活。采用SΤL語言編寫部分程序代碼,如下所示:
2.1 CP341硬件配置與參數(shù)設(shè)置
在調(diào)試CP341的過程中首先需要SΤEP7軟件以及CP341模塊自帶的軟件驅(qū)動程序。如果CP341模塊的驅(qū)動程序未安裝,則不能對其模塊內(nèi)的參數(shù)進(jìn)行設(shè)置,這點是需要特別注意的。
本文選用了帶有RS485接口的CP341通訊模塊,使用集成在CP341內(nèi)的ASCⅡDriver通訊協(xié)議來實現(xiàn)Modbus Master/Slave RΤU通訊。在編寫程序之前需要對CP341模塊參數(shù)進(jìn)行必要的設(shè)置,其中包括:字符延遲時間設(shè)置4 ms來作為接收幀的結(jié)束方式;RS485接口方式;波特率設(shè)置為9 600 kb/s,8位數(shù)據(jù)位,1位截止位,1位奇偶校驗位;其余為默認(rèn)選項。
在SΤEP7中硬件配置及CP341模塊設(shè)置如圖1所示。
圖1 CP341模塊在STEP7中的硬件配置及設(shè)置Fig.1 Hardware configuration and settings of CP341 module in STEP7
對CP341模塊硬件接口通信參數(shù)設(shè)置完成后,即可對程序進(jìn)行編寫。采用基于標(biāo)準(zhǔn)RS485接口的Modbus RΤU通訊方式,發(fā)送的數(shù)據(jù)包中應(yīng)該包含站號/數(shù)據(jù)區(qū)/讀寫指令等相關(guān)信息。
2.2 程序的設(shè)計與實現(xiàn)
在SΤEP7中的功能塊FC21中編寫PLC與智能控制器進(jìn)行數(shù)據(jù)傳輸?shù)某绦?,組織好查詢數(shù)據(jù)如站號、起始地址、功能碼、CRC校驗碼等,并存放在數(shù)據(jù)塊DB21中,以此作為PLC主站查詢的發(fā)送數(shù)據(jù)源。利用程序中系統(tǒng)功能塊FB7“P-RCV-RK”接收數(shù)據(jù)以及FB8“P-SND-RK”發(fā)送數(shù)據(jù),結(jié)合CRC的數(shù)據(jù)校驗,即可實現(xiàn)CP341與壽力空壓機智能控制器之間的MODBUS RΤU的數(shù)據(jù)通信。
調(diào)用功能塊FB8“P-SND-RK”發(fā)送數(shù)據(jù)。FB8是通過上升沿觸發(fā)工作的,來1個上升沿FB8則被觸發(fā)1次進(jìn)而發(fā)送1個請求數(shù)據(jù)包,因此要設(shè)計觸發(fā)程序。發(fā)送數(shù)據(jù)主要程序段如下:
調(diào)用功能塊FB7“P-RCV-RK”來接收數(shù)據(jù),并將接收到的數(shù)據(jù)存放在數(shù)據(jù)塊DB22中,利用由PLC主站發(fā)送過來的CRC校驗值進(jìn)行計算。如果計算結(jié)果為0,則表示接收無誤。否則接收出現(xiàn)問題。主要程序段如下:
Implementation and Application of MODBUS RTU Unlicensed Communication Based on CP341 Module
ZHANG Cuiping,SONG Wenchao,LI Gen,F(xiàn)U Yao,LI Guqing
(Tianjin Electric Research Institute Co.,Ltd.,Tianjin 300180,China)
A communications design based on Siemens CP341 module MODBUS RTU was described,The proposal was discussed which used ASCⅡ driver communication protocols integrated within the CP341 to enable MODBUS RTU protocol,and MODBUS RTU unlicensed communications were achieved by using Siemens STEP7 software programming way in detail.The program did not require the use of MODBUS protocol driver module,overhead was saved,application of the project results show that this communication is reliable,cheap cost and easy to use,and has wide application value.
CP341 communication module;MODBUS RTU communication;CRC redundancy check
TP29
A
10.19457/j.1001-2095.20170212
張翠平(1983-),女,本科,工程師,Email:zcp313@163.com