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