《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > WinCE工控主板通過(guò)PPI協(xié)議連接西門(mén)子PLC

WinCE工控主板通過(guò)PPI協(xié)議連接西門(mén)子PLC

2017-08-03
關(guān)鍵詞: WinCE 工控主板 西門(mén)子PLC

  西門(mén)子S7-200系列PLC是工業(yè)場(chǎng)合應(yīng)用最廣的現(xiàn)場(chǎng)控制設(shè)備之一,S7-200系列PLC支持自由端口、MPI,、PPI和Moddus等通訊方式。自由端口方式需要用戶自己制定通訊協(xié)議,,PLC與上位機(jī)兩端都需要編寫(xiě)相應(yīng)的協(xié)議程序,實(shí)現(xiàn)復(fù)雜、難度較高。西門(mén)子的Step7 MicroWin編程軟件使用PPI(Point to Point)協(xié)議連接PLC,,利用PPI協(xié)議可以調(diào)試\下載PLC程序、傳輸數(shù)據(jù),,但西門(mén)子并未公開(kāi)PPI協(xié)議內(nèi)容,。Modbus是工業(yè)控制現(xiàn)場(chǎng)廣泛應(yīng)用的通訊協(xié)議,在嵌入式領(lǐng)域,,嵌入式主板通常采用Modbus與PLC相連,,英創(chuàng)嵌入式工控主板就提供了基于串口和TCP的Modbus軟件包,但PLC要支持Modbus協(xié)議同樣需要相應(yīng)的程序編寫(xiě),,同時(shí)Modbus協(xié)議會(huì)占用一定的PLC中斷和代碼資源,。

  S7-200系列PLC的編程通訊接口內(nèi)部固化了PPI通訊協(xié)議,如果上位機(jī)軟件能利用PPI協(xié)議讀寫(xiě)PLC,,就可以省去PLC的通訊程序編寫(xiě),。為了方便嵌入式工控主板與PLC連接,我們分析了PPI通訊協(xié)議格式,,把操作PLC的常用指令封裝成了簡(jiǎn)單的API接口函數(shù),,利用這些函數(shù)可以實(shí)現(xiàn)設(shè)置PLC工作模式、讀取PLC型號(hào)信息,、讀寫(xiě)PLC存儲(chǔ)器等功能,。

  ESM6802是預(yù)裝WEC7.0(或Linux)的i.MX6 雙核嵌入式工控主板,板載了雙網(wǎng)口,,雙CAN,,7串口,4-USB PCIe x1,、精簡(jiǎn)ISA等多種通訊接口,,同時(shí)ESM6802提供了RGB、LVDS和HDMI三種顯示接口,,可以支持從320×240分辨率的低成本LCD到1920×1080的全高清顯示屏,。下面將以運(yùn)行WEC7.0操作系統(tǒng)的ESM6802作為上位機(jī),介紹WCE工控主板如何使用PPI協(xié)議連接S7-200 PLC,。

  1,、硬件連接

  S7-200系列PLC的編程通訊接口為RS485電平,安裝Step7 MicroWin的PC機(jī)通過(guò)PC/PPI通訊線纜連接PLC,。PC/PPI通訊線纜完成了RS232電平到RS485電平的轉(zhuǎn)換,,其RS232端與計(jì)算機(jī)串口相連,RS485端與PLC的編程通訊口相連,。ESM6802同樣使用PC/PPI線纜連接PLC,,ESM6802的COM3口為RS232電平,PC/PPI線可直接插到ESM6802的COM3口上使用,,ESM6802與PLC的硬件連接方法如下所示:

2017041914925909263122526.gif

  圖1 ESM6802與S7-200 PLC的硬件連接

  2,、軟件實(shí)現(xiàn)

  PPI是點(diǎn)到點(diǎn)的主從協(xié)議, PLC的通訊接口缺省情況下工作在PPI從(slave)模式,,以便接收來(lái)自Step7 MicroWin編程軟件的數(shù)據(jù),,Step7 MicroWin自然工作在PPI主(master)模式。ESM6802在與PLC相連時(shí),,ESM6802作為上位機(jī)工作在主模式,,PLC通訊接口為缺省的從模式,。

  下面是我們基于PPI協(xié)議封裝的操作PLC的API函數(shù),詳細(xì)的函數(shù)說(shuō)明可參考ppi.h頭文件,。

  // 功能描述: 設(shè)置相應(yīng)串口的通訊參數(shù),,

  HANDLE PPI_OpenPort(LPCTSTR lpPortName);

  // 功能描述: 關(guān)閉PPI使用的串口設(shè)備

  BOOL  PPI_ClosePort(HANDLE hPort);

  // 功能描述: 設(shè)置ppi通訊的超時(shí)時(shí)間,單位為毫秒,。默認(rèn)超時(shí)時(shí)間為ms

  int  PPI_SetTimeout(HANDLE hPort, int nMilliseconds);

  // 功能描述: 設(shè)置兩次ppi通訊之間的間隔時(shí)間,,單位為毫秒。默認(rèn)時(shí)間間隔為ms

  int  PPI_SetPollDelay(HANDLE hPort, int nMilliseconds);

  // 功能描述: 設(shè)置設(shè)置本機(jī)的PPI地址,,默認(rèn)本機(jī)地址為x00

  BOOL PPI_SetLocalAddress(HANDLE hPort, UINT8 bLocalAddr);

  // 功能描述: 與指定的PLC握手

  int  PPI_FindPLC(HANDLE hPort, UINT8 bSlaveAddr);

  // 功能描述: 讀取指定PLC的型號(hào)和保護(hù)等級(jí)

  int   PPI_GetPLCID(HANDLE hPort, UINT8 bSlaveAddr, UINT8 cpuId[], UINT8 *pProtectionLevel);

  // 功能描述: 設(shè)置PLC工作在RUN模式或STOP模式

  int   PPI_SetPlcMode(HANDLE hPort, UINT8 bSlaveAddr, int nMode);

  // 功能描述: 讀PLC指定存儲(chǔ)器數(shù)據(jù)

  int  PPI_Read(HANDLE hPort, UINT8 bSlaveAddr, LPCSTR lpStorageAddress, UINT8 *pNumofRead,  UINT8 readData[]);

  // 功能描述: 寫(xiě)PLC指定存儲(chǔ)器數(shù)據(jù)

  int  PPI_Write(HANDLE hPort, UINT8 bSlaveAddr, LPCSTR lpStorageAddress, UINT8 *pNumofWrite, UINT8 writeData[]);

  下圖是在WEC7工控主板ESM6802上運(yùn)行的利用PPI API操作PLC的Demo程序,,程序?qū)崿F(xiàn)了搜索PLC、設(shè)置PLC工作模式,、獲取PLC型號(hào)信息以及讀寫(xiě)PLC存儲(chǔ)器等功能,。

2017041914925910984863309.gif

  圖2 在WCE上運(yùn)行的操作PLC的例子程序

  ESM6802具有相當(dāng)豐富的通訊接口,與突出控制功能的PLC可以形成良好的功能互補(bǔ),,同時(shí)ESM6802對(duì)大屏顯示器的支持也適合用做PLC控制系統(tǒng)的狀態(tài)監(jiān)控人機(jī)交互終端,。

  PPI API以lib庫(kù)的形式提供,可以在英創(chuàng)所有WCE工控主板上運(yùn)行,,圖2所示的Demo程序提供源代碼參考,,感興趣的用戶可與英創(chuàng)聯(lián)系索要。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。