周秀梅
摘 要:文章主要基于RS485串口,以O(shè)MRON PLC CJ2M-CPU12為例,專注于PLC互連的通訊協(xié)議的設(shè)計,為實現(xiàn)生產(chǎn)系統(tǒng)中PLC之間靈活自主的通信提供一個可靠而高效的解決方案。
關(guān)鍵詞:RS485總線;通信協(xié)議;PLC互連
引言
在實際的工業(yè)生產(chǎn)中,一般一個PLC控制一臺機器,人們可以按照生產(chǎn)工藝需要改變其控制邏輯,不同的機器按相應(yīng)的工藝需要進行布置,以達到生產(chǎn)目標。但當(dāng)生產(chǎn)系統(tǒng)變得龐大而復(fù)雜時,就需要各個機器之間的協(xié)同工作,傳遞各個生產(chǎn)單位的運行狀態(tài)和生產(chǎn)數(shù)量,以便于實現(xiàn)產(chǎn)品的監(jiān)控和售后服務(wù)。因此需要實現(xiàn)PLC之間的通訊,且通訊要同時具備可效性和實時性。就目前而言,還沒有一種標準的通訊協(xié)議可以直接采用。但串口通訊RS485使它成為一種可能,它被大多數(shù)PLC生產(chǎn)商采用,成為一種底層通信接口,具有穩(wěn)定可靠,編程簡單,組網(wǎng)快,價格低等優(yōu)點。相比較而言,它比RS232可連接的設(shè)備多,比Internet通信方式便宜。因此,文章主要專注于RS485的通信協(xié)議設(shè)計,使其具有普適性,可以應(yīng)用與不同PLC之間的互連互通。
1 RS485總線
RS-485標準采用半雙工工作方式,以平衡發(fā)送和差分接收方式實現(xiàn)通信,支持多點連接。具有傳輸距離遠(最大傳輸距離可以達到1200m),傳輸速度快(1200m時可以達到100kb/s),布線簡單等優(yōu)點。由于傳輸線通常使用雙絞線,所以它具有極強的抗共模干擾的能力。
2 協(xié)議的設(shè)計與實現(xiàn)
連接數(shù)臺PLC,以其中一臺PLC為主機,其他PLC為從機,應(yīng)用RS485通信讓主機讀取各從機的相關(guān)狀態(tài),并顯示在觸摸屏中,實現(xiàn)整個系統(tǒng)的實時監(jiān)控。本案中采用4臺OMRON PLC CJ2M-CPU12為例,通訊卡采用CJ1W-SCU41。
PLC之間的通信必須設(shè)置為無協(xié)議通信方式,參數(shù)一般可以按實際需要任意設(shè)置。如:參數(shù)形式可以設(shè)置為無起始位,8位數(shù)據(jù)長度,無停止位,偶校正,數(shù)據(jù)緩沖區(qū)為默認值0。
無協(xié)議通信指令包括端口設(shè)定指令STUP,發(fā)送指令TXD/TXDU和接受指令RXD/RXDU。STUP指令用于設(shè)定串行端口通信參數(shù),數(shù)據(jù)傳送指令TXD/TXDU用于向串口端口傳送數(shù)據(jù),數(shù)據(jù)接受指令RXD/RXDU用于從串口端口讀取數(shù)據(jù)。無協(xié)議通信方式能夠發(fā)送和接受數(shù)據(jù)的最大量為259Byte,包括起始碼和結(jié)束碼。使用無協(xié)議通信的發(fā)送進行通訊時,在數(shù)據(jù)發(fā)送和接收指令中必須指定發(fā)送數(shù)據(jù)的起始字節(jié)位置和接收數(shù)據(jù)的起始字節(jié)存儲位置,還必須指定串行端口,數(shù)據(jù)發(fā)送和接受時的字節(jié)順序,并指定發(fā)送和接受的具體字節(jié),這些都需要在發(fā)送和接受指令的控制字里進行設(shè)定。為了使數(shù)據(jù)發(fā)送和數(shù)據(jù)接收保持一致,TXDU和RXDU中采用了同樣的控制字。當(dāng)通訊卡CJ1W-SCU41的串行端口1空閑,并且內(nèi)部總線端口閑置時,觸發(fā)相應(yīng)內(nèi)部繼電器后,就可以按照控制字中設(shè)定的方式,發(fā)送出指定位置的數(shù)據(jù)。如果接收方的相應(yīng)串行端口空閑,并且端口計數(shù)器檢測到新的數(shù)據(jù),通過一小段接收延時后,開始按照控制字的方式,接收所有的數(shù)據(jù)到指定的地址存儲。RXDU有兩個作用:當(dāng)數(shù)據(jù)檢測正確時,可以把存儲的數(shù)據(jù)做進一步的處理;如果數(shù)據(jù)不正確時,RXDU可以用作清空串行端口的接收寄存器,便于下一次接收新的數(shù)據(jù)。
對于簡單的PLC通信可以采用PC-LINK來相互傳遞數(shù)據(jù),但受限于連接繼電器區(qū)(LR區(qū))大小的限制,這種連接只能傳遞少量數(shù)據(jù),并且很難保證傳遞的可靠性。而使用無協(xié)議通信協(xié)議構(gòu)建的系統(tǒng),不僅可以靈活的確定傳遞數(shù)據(jù)量的大小,而且其相應(yīng)的檢測機制也能大大提高數(shù)據(jù)傳遞的可靠性。
一般PLC之間的通信可以分為基于全握手和無握手通信兩種方式。其中基于無握手方式的通信連接,即通信發(fā)起方假設(shè)接收方總是接收正確,而無需等待接收方的回應(yīng)。它可能會降低通信的可靠性,但卻能大幅地提高通信的速度,因而比較適用于大量數(shù)據(jù)的采集和傳輸。本案例傳輸數(shù)據(jù)量比較大,為了提高通信的實時性,須采取無握手方式通信連接,通過簡化連接方式,提高通信速度。同時在數(shù)據(jù)末尾加入CHECK_SUM,校驗傳遞數(shù)據(jù)的有效性。如果接收方收到數(shù)據(jù)的CHECK_SUM不等于發(fā)送方在數(shù)據(jù)末尾傳遞的CHECK_SUM,則認為通訊失敗,通信發(fā)起方重新發(fā)送數(shù)據(jù)。
從站地址:從站地址為01到03。
數(shù)據(jù)長度:為整個數(shù)據(jù)串的總長度。
標識位:分為aa和bb,以區(qū)分通信在主從站之間的方向。aa為主站向從站發(fā)起通信的標識位,bb為從站向總站發(fā)起的標識位。
從站寫數(shù)據(jù)起始地址:為主站將應(yīng)用數(shù)據(jù)包寫入從站的起始地址。
寫數(shù)據(jù)長度:為主站寫入從站的數(shù)據(jù)長度。
從站讀數(shù)據(jù)起始地址:為主站讀取從站數(shù)據(jù)的起始地址。
讀數(shù)據(jù)長度:為主站讀取從站數(shù)據(jù)的長度。
應(yīng)用數(shù)據(jù)包:分為寫數(shù)據(jù)包和讀數(shù)據(jù)包。寫數(shù)據(jù)包為主站寫入從站的數(shù)據(jù);讀數(shù)據(jù)包為從站返回給主站的數(shù)據(jù)。
CHECK_SUM:為之前數(shù)據(jù)串的加權(quán),用于檢驗數(shù)據(jù)傳遞的有效性。
基于圖2的設(shè)計原理,主站向從站依次發(fā)起通信,將參考指令寫入從站指定地址;從站收到寫指令后,通過指定地址數(shù)據(jù)返回當(dāng)前狀態(tài),并執(zhí)行相應(yīng)操作。如果主站向從站發(fā)起通信后,從站在規(guī)定時間無應(yīng)答或者應(yīng)答數(shù)據(jù)有差異,則主站重新發(fā)送數(shù)據(jù)。重復(fù)幾次通信失敗后,主站標記相應(yīng)通信失敗的從站,而向下一個從站發(fā)起通信,等到一個循環(huán)后,再次向之前通信失敗的從站重新發(fā)起通信。循環(huán)操作,實現(xiàn)主站和從站的實時交互。
3 結(jié)束語
近年來,隨著人力成本的不斷提升,科技的不斷進步,愈來愈多的工業(yè)生產(chǎn)線對采用集散控制系統(tǒng)的需求提高。文章基于RS485串口,為多個PLC互連互通設(shè)計的通信協(xié)議已能成功地應(yīng)用到PCB生產(chǎn)線中。它通過簡化程序設(shè)計,縮短各機器故障的排查時間,很大程度地提高了PLC之間通信的高效性和可靠性,提升了整條生產(chǎn)線的效能,降低了相應(yīng)的人力成本。
參考文獻
[1]耿立中,王鵬,馬騁,等.RS485高速數(shù)據(jù)傳輸協(xié)議的設(shè)計與實現(xiàn)[J].清華大學(xué)學(xué)報(自然科學(xué)版),2008,8.