湯建軍
【摘要】在超聲探傷檢測設備中,檢測用的上位機普遍采用VC++語言進行檢測程序的開發(fā)。為了與鋼鐵廠的設備進行聯(lián)線,需要與PLC之間進行通訊。信號主要包括探頭起落信號、鋼板到位信號、缺陷信號、合格信號等等。從前上位機與PLC之間的通訊主要采用IO卡與PLC進行通訊,中間用斷電器進行隔離。但是這樣連線多故障點也多,成本高。為了提高可靠性,降低成本,急需要實現(xiàn)PLC與上位機之間軟件通訊。本文主要探討利用Modbus協(xié)議與西門子S7-200PLC進行通訊的相關(guān)技術(shù)。
【關(guān)鍵詞】PLC Modbus協(xié)議 VC++編程
目前國內(nèi)鋼鐵廠的主要設備基本上都是使用西門子的PLC控制系統(tǒng),同時由于各廠家已經(jīng)普遍采用超聲探傷設備檢測鋼板或鋼管的缺陷,所以研究上位機(計算機)與PLC之間的通訊已經(jīng)變得十分必要和緊迫。實現(xiàn)PLC與上位機之間的通訊有多種方式,從前主要用硬件方式,這種方法成本高,可靠性差,在實際使用中維護成本高。本文探討利用Modbus協(xié)議與西門子S7-200PLC進行通訊的相關(guān)軟件技術(shù)。
1Modbus通信協(xié)議相關(guān)介紹
Modbus通信協(xié)議是Modicon公司提出的一種報文傳輸協(xié)議,它廣泛應用于工業(yè)控制領域,并已經(jīng)成為一種通用的行業(yè)標準。根據(jù)傳輸網(wǎng)絡類型的區(qū)別,Modbus通信協(xié)議又分為串行鏈路上的Modbus和基于TCP/IP協(xié)議的Modbus。Modbus串行鏈路協(xié)議的通信接口可采用RS-485接口,也可使用RS-232C接口。
Modbus通信協(xié)議有ASCII和RTU(遠程傳輸單元)兩種報文傳輸模式。目前支持Modbus通信的DCS系統(tǒng)和過程儀表大都采用基于串行接口的ModbusRTU模式,西門子提供了針對西門子PLCModbusRTU通信的協(xié)議庫,安裝后可在Step7-Micro/Win中調(diào)用。
西門子Modbus主站協(xié)議庫包括兩條指令:MBUS_CTRL指令和MBUS_MSG指令。MBUS_CTRL指令用于初始化主站通信,MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于啟動對Modbus從站的請求并處理應答。
西門子Modbus從站協(xié)議庫包括兩條指令:MBUS_INIT指令和MBUS_SLAVE指令。MBUS_INIT指令用于啟用和初始化或禁止Modbus通訊。MBUS_SLAVE指令用于為Modbus主設備發(fā)出的請求服務。MBUS_INIT指令用于啟用和初始化或禁止Modbus從站通訊。在使用MBUS_SLAVE指令之前,必須正確執(zhí)行MBUS_INIT指令。
2PLC項目主要技術(shù)
首先:為了在Step7-Micro/Win中使用ModbusRTU進行通訊,要安裝相關(guān)的指令庫。指令庫名稱為STEP7-Micro/WINAdd-On:InstructionLibrary。安裝完成后,啟動Step7-Micro/Win,在“指令樹”>“庫”項下可以發(fā)現(xiàn)多出了USS協(xié)議庫和Modbus協(xié)議庫。
然后就可利用西門子Modbus從站協(xié)議庫中的MBUS_INIT指令和MBUS_SLAVE指令進行編程。在MBUS_INIT指令中,將從站地址設為1,將端口0的波特率設為9600、無校驗、無延遲,允許存取所有的I、Q和AI數(shù)值,保存寄存器的存儲空間為從VB0開始的1000個字(2000個字節(jié))。在每次掃描時執(zhí)行Modbus_Slave指令,以便接收相應上位機報文。
3上位機編程
上位機開發(fā)工具主要采用VisualStudio.NET2003,編程語言用VC++。為了提高人機交互性,編程時提供了一個對話框,用戶可設置相關(guān)的串口參數(shù)。主要設置參數(shù)為:工方式設置成RTU;串口號設置成COM1;波特率9600;數(shù)據(jù)位8位;停止位0位;校驗位0;超時時間500ms等等。
為了方便用戶使用,上下位機通訊用六個函數(shù)實現(xiàn)。一個初始化函數(shù),用來實現(xiàn)上、下位機(PLC)的連接。一個句柄釋放函數(shù),以便釋放硬件資源。還有四個數(shù)據(jù)傳輸函數(shù),用于上下位機間的數(shù)據(jù)傳送。其中二個用于線圈操作,二個用于寄存器操作。無論是對線圈操作還是對寄存器操作都需要提供從站號,起始地址,相關(guān)的數(shù)據(jù)信息等內(nèi)容。同時需要注意的是在進行線圈操作時,數(shù)據(jù)字FF00(65280)表示將輸出位置1數(shù)據(jù)字0000表示該輸出復位為0其他的數(shù)據(jù)無效。
4通信測試
在調(diào)試時為了提高效率可以進行相關(guān)的通訊測試。測試上位機通信是否正常,可由PLC向計算機串口發(fā)送請求幀,在計算機上用串口通信調(diào)試軟件查看請求幀是否正常。測試從站(PLC)通訊可從報文入手測試Modbus從站通信是否正常,利用計算機上的串口通信調(diào)試軟件向從站發(fā)送請求幀,查看PLC是否能接受到正確的響應幀。
為此,上位機部分可采用串口監(jiān)聽工具AccessPort對上位機串口進行偵聽。下位機部分可用Step7-Micro/Win對相關(guān)的線圈和寄存器進行監(jiān)控。在對上位機串口進行偵聽時AccessPort會記錄下打開串口的程序名、波特率、極性、數(shù)據(jù)位等等相關(guān)信息。監(jiān)控到的信息是十六進行編碼,這一點在開發(fā)時要十分注意。
綜上所述,采用相關(guān)的串口監(jiān)聽工具可以極大提高調(diào)試速度,提高開發(fā)的效率。在實際調(diào)試過程中可以利用監(jiān)聽工具直接向下位機發(fā)送數(shù)據(jù)。
5結(jié)語
在信息化的今天,計算機已經(jīng)廣泛應用在各個行業(yè),利用計算機對PLC進行直接控制已經(jīng)成為一項十分有前景的技術(shù)。本文探討了利用Modbus協(xié)議與西門子S7-200PLC進行通訊的相關(guān)軟件技術(shù)希望對大家有一定的借鑒。