PLC與MC9S08PT60PB的PPI協(xié)議分析
摘要:PPI協(xié)議是西門(mén)子PLC的通信的幾種方式之中使用最廣泛通信協(xié)議,PLC與MC9S08PT60PB進(jìn)行通信使用PPI協(xié)議,通過(guò)硬件與軟件編程實(shí)現(xiàn)PLC與MC9S08PT60PB之間的數(shù)據(jù)傳輸及指令傳達(dá),硬件電路采用常用的SN75176芯片,軟件部分使用Code Warrior IDE來(lái)進(jìn)行MC9S08PT60P程序的開(kāi)發(fā)編譯,實(shí)現(xiàn)它們串口通信的應(yīng)用,完成自動(dòng)化控制。
關(guān)鍵詞:可編程邏輯控制器;MC9S08PT60PB;串口通信;PPI協(xié)議
0 引言
PLC(可編程程序控制器)是一種極為普遍的、應(yīng)用于各種環(huán)境的工業(yè)控制器。西門(mén)子公司的PLC通過(guò)用戶(hù)存儲(chǔ)的應(yīng)用程序來(lái)控制生產(chǎn)過(guò)程,具有可靠性高、穩(wěn)定性好、實(shí)時(shí)處理能力強(qiáng)、價(jià)格低廉等優(yōu)點(diǎn)。為工業(yè)自動(dòng)化提供了幾乎完美的現(xiàn)代化自動(dòng)控制裝置。但是PLC不具備鍵盤(pán)、顯示器等人機(jī)交互設(shè)備,不能實(shí)時(shí)地對(duì)控制參數(shù)進(jìn)行修改及顯示系統(tǒng)的運(yùn)行狀態(tài)。西門(mén)子公司的TD系列的文本顯示器價(jià)格昂貴而且在低溫下無(wú)法正常工作。另一方面,MC9S08PT60PB具有價(jià)格較低廉、使用方便、功能多樣等優(yōu)點(diǎn)。所以PLC可以和MC9S08PT60PB結(jié)合使用,以彌補(bǔ)PLC的缺陷。所以常常在一個(gè)控制系統(tǒng)中出現(xiàn)MC9S08PT60PB和PLC共存的情況,它們之間的通信應(yīng)用就具有非常重要的現(xiàn)實(shí)意義。
1 PLC通信方式與MC9S08PT60PB芯片
PLC具有豐富的串行通訊方式,支持多種通信協(xié)議,如點(diǎn)對(duì)點(diǎn)接口協(xié)議(PPI協(xié)議)、多點(diǎn)接口協(xié)議(MPI協(xié)議)、PROFIBUS協(xié)議以及自由通信協(xié)議等。其中點(diǎn)對(duì)點(diǎn)接口協(xié)議是西門(mén)子公司研究開(kāi)發(fā)的,是一種只需要在上位機(jī)中按照通信要求編程就可以實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議。
MC9S08PT60PB是Freescale公司產(chǎn)品系列中最新的8位MCU,它具有集成度高、外圍設(shè)備豐富、穩(wěn)定性高、開(kāi)發(fā)周期短、成本低、兼容性好等特點(diǎn)而被廣泛應(yīng)用。它更適合低功耗、高性能的使用環(huán)境,如便攜式電子產(chǎn)品。MC9S08PT60PB資源豐富是最為突出的性能,RAM內(nèi)存高達(dá)4kB,F(xiàn)LASH存儲(chǔ)器容量可達(dá)60kB,高度集成了4個(gè)串行通信端口(SCII、SCI2、SPI、IIC),最多達(dá)8個(gè)定時(shí)器、8通道的10位A/D轉(zhuǎn)換器。豐富的資源利于現(xiàn)場(chǎng)監(jiān)控系統(tǒng)通信。
2 PLC與MC9S08PT60PB通信的接口電路
西門(mén)子PLC的CPU上的通信接口是RS-485D型連接器,PLC輸出RS-485信號(hào)。系統(tǒng)采用MC9S08PT60PB微控制芯片,它的串行口輸出是TTL電平,實(shí)現(xiàn)PLC與MC9S08PT60PB之間的通信,需要進(jìn)行RS-485與TTL電平的轉(zhuǎn)換。該轉(zhuǎn)換可以通過(guò)先將MC9S08PT60PB的串行口與SN75176芯片相接。SN75176芯片是TI公司的一款用于RS-485通信的低功耗半雙工收發(fā)器件,芯片內(nèi)部集成了一個(gè)驅(qū)動(dòng)器和一個(gè)接收器,符號(hào)RS-485通信標(biāo)準(zhǔn),具有高驅(qū)動(dòng)能力。MC9S08PT60PB與S7-200 PLC的RS-485口進(jìn)行通信,其硬件連接圖如圖1所示。
3 PPI通信協(xié)議的通信程序
3.1 PPI通信協(xié)議
PPI協(xié)議中上位機(jī)與PLC使用主從方式進(jìn)行通信,上位機(jī)作為主設(shè)備,PLC作為從設(shè)備。上位機(jī)按照通信任務(wù),向PLC發(fā)送一定格式的數(shù)據(jù)通信命令。PLC向上位機(jī)發(fā)出應(yīng)答信號(hào),這時(shí)上位機(jī)再向PLC發(fā)送確認(rèn)命令,PLC收到確認(rèn)命令后,開(kāi)始執(zhí)行命令。完成通信任務(wù)。
MC9S08PT60PB中的程序是在Code Warrior IDE開(kāi)發(fā)環(huán)境中完成的,由PC上位機(jī)下載到MC9S08PT60PB中之后,它作為主設(shè)備。PLC是被動(dòng)通信,不需要編制通信程序。通信程序中主要包括:串口初始化命令、發(fā)送命令、接收命令MC9S08PT60PB使用的查詢(xún)方式,MC9S08PT60PB作為主站根據(jù)實(shí)際需要實(shí)時(shí)與PLC從站通信,完成通信數(shù)據(jù)的發(fā)送或接收。
3.2 MC9S08PT60PB與PLC中的PPI通信協(xié)議實(shí)現(xiàn)程序
3.2.1 初始化串口
3. 2.2 報(bào)文格式
報(bào)文數(shù)據(jù)長(zhǎng)度和重復(fù)數(shù)據(jù)長(zhǎng)度為自上位機(jī)自己的地址至數(shù)據(jù)單元的數(shù)據(jù)長(zhǎng)度,校驗(yàn)碼為上位機(jī)自己的地址至數(shù)據(jù)單元數(shù)據(jù)的和校驗(yàn),只取其中的末字節(jié)值。在讀寫(xiě)PLC的變量數(shù)據(jù)中,讀數(shù)據(jù)的功能碼為6CH,寫(xiě)數(shù)據(jù)的功能碼為7CH。
對(duì)于一次讀取一個(gè)數(shù)據(jù),讀命令都是33個(gè)字節(jié)。前面的0~21字節(jié)是相同的,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21開(kāi)始符長(zhǎng)度長(zhǎng)度開(kāi)始符站號(hào)源地址功能碼協(xié)議識(shí)別遠(yuǎn)程控制冗余識(shí)別冗余識(shí)別協(xié)議數(shù)據(jù)單元參考參數(shù)長(zhǎng)度參數(shù)長(zhǎng)度數(shù)據(jù)長(zhǎng)度數(shù)據(jù)長(zhǎng)度04讀05寫(xiě)變量地址數(shù)。
字節(jié)22 23 24 25 26 27 28 29 30 31 32功能讀取長(zhǎng)度數(shù)據(jù)個(gè)數(shù)存儲(chǔ)器類(lèi)型偏移量校驗(yàn)碼結(jié)束符。
字節(jié)22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40寫(xiě)入位置及值長(zhǎng)度個(gè)數(shù)類(lèi)型偏移量位數(shù)值校驗(yàn)碼結(jié)束符。
PPI協(xié)議上位機(jī)向PLC發(fā)送讀寫(xiě)請(qǐng)求時(shí)的報(bào)文格式,每次讀一個(gè)數(shù)據(jù):
length為讀取數(shù)據(jù)長(zhǎng)度,01:one bit,02:one byte,04:one word(two bytos),06:one doub word(fourbytes);mem_flag為存儲(chǔ)器類(lèi)型。01:V存儲(chǔ)器,00:其它;mem_type為存儲(chǔ)器類(lèi)型,04:S,05:SM,06:AI,07:AQ,IE:C,81:I,82:Q,83:M,84:V,lF:Taddr為要讀取或?qū)懭氲牡刂分?。如果為bit、Byte[32]=0x03 Byte[34]=0x01;byte數(shù)據(jù),Byte[32]=0x0Byte[34]=0x08 Byte[35]為要寫(xiě)入的值,Byte[36]為0x00,如果為word數(shù)據(jù),Byte[35]和Byte[36]為要寫(xiě)入的值Byte[32]=0x04;Byte[34]=0x10;Byte[35-38]就是寫(xiě)入的值,Byte[39]=檢驗(yàn)碼,Byte40=16H,結(jié)束。X0為校驗(yàn)和。X1為寫(xiě)入的值。
4 軟件流程設(shè)計(jì)
PPI通信流程圖如圖2所示。
程序首先執(zhí)行初始化串口程序,完成串口輸入輸出狀態(tài)的設(shè)定、寄存器初始化等。然后開(kāi)始PLC發(fā)送讀寫(xiě)請(qǐng)求,MC9S08PT60PB接收到指令后,回復(fù)指令,然后讀寫(xiě)數(shù)據(jù),完成通信。
5 結(jié)論
PLC與MC9S08PT60PB利用了PPI串行通信很好的發(fā)揮PLC穩(wěn)定可靠的性能、抗干擾能力強(qiáng)的優(yōu)勢(shì)省略了PLC的通訊程序編寫(xiě),而且還發(fā)揮了
MC9S08PT60PB使用靈活、適應(yīng)性強(qiáng)的優(yōu)點(diǎn),兩者相互結(jié)合取長(zhǎng)補(bǔ)短。同時(shí)使用西門(mén)子公司的PPI協(xié)議解決了MC9S08PT60PB與PLC之間的數(shù)據(jù)交換問(wèn)題。實(shí)踐證明該方法比自由口通信協(xié)議簡(jiǎn)潔,使用方便,用途廣泛。