沈陽康特機(jī)電設(shè)備有限公司 呂翠玉
沈陽機(jī)床股份有限公司數(shù)控刀架分公司 於成業(yè)
為實(shí)現(xiàn)運(yùn)動(dòng)控制系統(tǒng)中數(shù)據(jù)的高速采集和遠(yuǎn)程傳輸,本文設(shè)計(jì)了采用以ModbusTCP通訊協(xié)議為基礎(chǔ),基于W5300的以太網(wǎng)網(wǎng)絡(luò)模塊與西門子S7-1200PLC進(jìn)行數(shù)據(jù)傳輸?shù)耐ㄓ嵪到y(tǒng)。在介紹W5300工作原理基礎(chǔ)上,重點(diǎn)闡述了該通訊系統(tǒng)的硬件搭建及軟件實(shí)現(xiàn)。最終通過現(xiàn)場(chǎng)實(shí)測(cè)表明:本系統(tǒng)數(shù)據(jù)通訊穩(wěn)定,實(shí)時(shí)性高,具有可擴(kuò)展性。
隨著網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步,數(shù)據(jù)傳輸系統(tǒng)被大量的需求,來完成信息的匯總和實(shí)時(shí)監(jiān)視,數(shù)據(jù)統(tǒng)計(jì)等,達(dá)到工作高效、精準(zhǔn)的目的。文中基于硬件以太網(wǎng)協(xié)議芯片W5300和主控制芯片DSP28335,設(shè)計(jì)了硬件采集系統(tǒng)作為Modbus TCP服務(wù)器,與基于西門子PLC S7-1200設(shè)計(jì)的客戶端進(jìn)行數(shù)據(jù)傳輸。S7-1200系列是一款可編程邏輯控制器,該控制器使用靈活、功能強(qiáng)大,可用于控制各種各樣的設(shè)備以滿足自動(dòng)化需求。
服務(wù)器端:DSP28335為主CPU,通過地址線和數(shù)據(jù)線與CPLD和W5300相連,DSP經(jīng)過CPLD對(duì)W5300進(jìn)行片選和復(fù)位的控制,W5300的寄存器基地址為0x28000000,BIT16EN引腳決定數(shù)據(jù)總線模式:BIT16EN拉高時(shí)為16位寬數(shù)據(jù)總線模式,BIT16EN拉低時(shí)為8位寬數(shù)據(jù)總線模式。由于該引腳由內(nèi)部上拉,本設(shè)計(jì)將BIT16EN懸空,即拉高,使其工作在16位寬數(shù)據(jù)總線模式下。TEST_MODE[3:0]4個(gè)引腳懸空,設(shè)置成使用內(nèi)部集成的PHY模式。將OP_MODE[2:0]3個(gè)引腳懸空,選擇了自動(dòng)握手模式。該系統(tǒng)結(jié)構(gòu)圖如圖1所示。
客戶端:西門子S7-1200。
對(duì)于S7-1200,Modbus TCP(傳輸控制協(xié)議)是一個(gè)標(biāo)準(zhǔn)的網(wǎng)絡(luò)通信協(xié)議,它使用CPU上的PROFINET連接器進(jìn)行TCP/IP通信,不需要額外的通信硬件模塊。
在本系統(tǒng)的軟件設(shè)計(jì)中,僅選用W5300的8個(gè)SOCKET中的SOCKET3作為Modbus TCP的服務(wù)器與西門子PLC1200進(jìn)行通訊。另外,SOCKET0、1、2用于其他TCP協(xié)議通訊的端口使用,在此不作贅述。W5300軟件流程圖如圖2所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
圖2 W5300軟件流程圖
首先復(fù)位W5300,再依次對(duì)W5300、SOCKET3進(jìn)行初始化,然后進(jìn)行偵聽,端口連接正常后接收數(shù)據(jù)和響應(yīng)數(shù)據(jù)。W5300初始化就是將相應(yīng)的參數(shù)寫入寄存器即可,在本設(shè)計(jì)中寄存器MR設(shè)定值為0xB900,將高低字節(jié)交換;中斷屏蔽寄存器IMR寫入0xFFFF,不屏蔽任何中斷。
Gateway_IP[0] = 0xC0A8;
Gateway_IP[1] = 0x0101;//網(wǎng)關(guān)
圖3 PLC客戶端設(shè)置
IP_Addr[0] = 0xC0A8;
IP_Addr[1] = 0x0116;//控制器IP
Sn_DIP[3][0] = 0xC0A8;
Sn_DIP[3][1] = 0x0102;
Sn_Port[3] = 502;
Sn_DPort[3] = 502;
在分配存儲(chǔ)空間時(shí),存儲(chǔ)器單元類型寄存器MTYPER采用默認(rèn)值0x00FF,即將前8個(gè)8k字節(jié)存儲(chǔ)單元分配為TX存儲(chǔ)器,后8個(gè)8k字節(jié)存儲(chǔ)單元分配為RX存儲(chǔ)器;通過TX存儲(chǔ)器大小配置寄存器TMSR和RX存儲(chǔ)器大小配置寄存器RMSR將SOCKET0的發(fā)送和接收存儲(chǔ)器大小都配置為32kB。
W5300_write(RMS01R,0x1014);
W5300_write(RMS23R,0x1408);
W5300_write(RMS45R,0x0000);
W5300_write(RMS67R,0x0000);
W5300_write(TMS01R,0x1014);
W5300_write(TMS23R,0x1408);
W5300_write(TMS45R,0x0000);
W5300_write(TMS67R,0x0000);
W5300_write(MTYPER,0xFF);
W5300_write(RTR,0x2710);
W5300_write(RCR, 0x23);
初始化設(shè)置完成,然后進(jìn)行偵聽設(shè)置,完成TCP服務(wù)器建立,最后等待建立連接,當(dāng)建立了SOCKET3連接后,就可以進(jìn)行數(shù)據(jù)通訊了。
另外,基本的Modbus客戶端PLC1200的操作如下所示:
(1)連接到特定服務(wù)器(從站)IP地址和IP端口號(hào)。
(2)啟動(dòng)Modbus消息的客戶端傳輸,并接收服務(wù)器響應(yīng)。
(3)根據(jù)需要斷開客戶端和服務(wù)器的連接,以便與其它服務(wù)器連接。
使用程序中的MB_CLIENT指令,進(jìn)行客戶端-服務(wù)器TCP連接、發(fā)送命令消息、接收響應(yīng),以及控制服務(wù)器的斷開。具體操作見圖3所示。
為了測(cè)試客戶端和服務(wù)器的通訊狀態(tài),先分別用ModScan32和Modsim32與運(yùn)動(dòng)控制器服務(wù)器和西門子S7-1200客戶端通訊測(cè)試,并調(diào)整程序。在測(cè)試了連通性后,就可以用運(yùn)動(dòng)控制器和S7-1200直接通訊測(cè)試了。通訊數(shù)據(jù)監(jiān)視圖如圖4所示。
圖4 通訊數(shù)據(jù)監(jiān)視
結(jié)論:經(jīng)實(shí)驗(yàn)驗(yàn)證,本文設(shè)計(jì)的基于W5300以太網(wǎng)與S7-1200通訊系統(tǒng)運(yùn)行穩(wěn)定,可實(shí)現(xiàn)運(yùn)動(dòng)控制系統(tǒng)相關(guān)數(shù)據(jù)的傳輸,遠(yuǎn)程監(jiān)視和修改數(shù)據(jù)等,現(xiàn)已經(jīng)正式應(yīng)用于現(xiàn)場(chǎng)。