1 引言
貝爾利科技有限公司是一家從事科研開發(fā)和工程技術(shù)服務(wù)的高新技術(shù)企業(yè),主營業(yè)務(wù)為機電產(chǎn)品制造、生產(chǎn)過程自動化、電氣自動化、管理信息化等方面的系統(tǒng)集成、軟件開發(fā)、工程設(shè)計、技術(shù)服務(wù)等, “貝爾利科技 ”憑借強大的技術(shù)隊伍以及科學(xué)的管理和一系列綜合系統(tǒng)集成項目的豐富經(jīng)驗,逐漸成長為實力雄厚的自動化系統(tǒng)的集成商。貝爾利科技以其豐富的運動定位控制系統(tǒng)和部件產(chǎn)品線,為客戶提供了前所未有的解決方案甄選機會,以滿足其特定的應(yīng)用需求。其一款控制器已經(jīng)分別集成了德國赫優(yōu)訊 netIC系列 CC-LINK從站接口模塊、 PROFIBUS從站接口模塊及 Device-Net從站接口模塊,并將集成其他現(xiàn)場總線及 PROFINET、Ethernet/IP等實時以太網(wǎng)協(xié)議的模塊,因此能根據(jù)客戶使用的 PLC提供的通訊接口,提供相應(yīng)接口的產(chǎn)品。 2 德國赫優(yōu)訊 netIC模塊簡介
德國赫優(yōu)訊 netIC嵌入式模塊作為完整的單片模塊,包括: NIC 50-RE(實時以太網(wǎng)從站接口模塊,支持各種實時以太網(wǎng)協(xié)議,包括: PROFINET、EtherCAT、Ethernet/IP、Modbus/TCP、POWERLINK、SERCOS III等)、NIC 50-DPS(PPROFIBUS從站接口模塊)、NIC 50-DNS(DeviceNet從站接口模塊)、NIC 50-COS(CANopen從站接口模塊)、NIC 50-CCS(CCLINK從站接口模塊)、NIC 50-CPS(CompoNet從站接口模塊)等型號,所有型號都采用統(tǒng)一的32針DIL封裝,尺寸緊湊,片上集成了現(xiàn)場總線與實時以太網(wǎng)通訊接口所需要的所有元件。同時還提供了 netX Configuration Tool配置軟件和配套的評估板,方便用戶進行產(chǎn)品開發(fā)。圖1為NIC50-CCS模塊的實物圖。

圖 1 NIC 50-CCS模塊
3 硬件開發(fā)
netIC模塊提供了32針管腳,支持 UART接口通過 Modbus RTU 協(xié)議集成入用戶的主機系統(tǒng),未來還將擴展SPI及I2C接口。因為模塊本身已經(jīng)提供了同步串行接口,如果作為簡單的IO設(shè)備,可以不需要額外的主CPU。本例中使用了C8051F系列混合信號ISP FLASH微控制器作為主CPU,其基于高速、流水線結(jié)構(gòu)的8051兼容CIP-51內(nèi)核,并提供了2路UART接口及其他豐富外設(shè),因此可以在軟件上實現(xiàn)Modbus RTU協(xié)議與netIC模塊通訊。
圖2為 NIC 50-CCS模塊的管腳圖,與其他型號模塊唯一的區(qū)別只是在協(xié)議通訊接口的管腳,因此對于用戶更換成其他模塊非常方便。其中,29、30、31管腳為串行主機接口,可以與主CPU的UART口直接連接,也可以通過RS485芯片進行連接;13、14管腳為CC-LINK總線接口;27、28管腳為診斷接口,連接PC,進行產(chǎn)品配置;3、4、5、6、7管腳為串行移位寄存器接口,用于連接外部開關(guān)量或模擬量信號。

圖 2 NIC 50-CCS管腳圖
因此 netIC模塊的硬件開發(fā)非常方便,開發(fā)示意圖如圖3所示:

圖 3 硬件開發(fā)示意圖
硬件開發(fā)的電路原理圖如圖4所示:

同時,用戶還可以增加診斷接口,數(shù)字量模擬量輸入輸出接口,狀態(tài)顯示LED燈等外圍電路。
4 軟件開發(fā)
4.1 netIC模塊配置
netIC模塊本身的使用不需要任何程序上的開發(fā),只需要使用提供的配置軟件和評估板配置Modbus及CC-LINK協(xié)議參數(shù),再下載協(xié)議堆棧(Firmware)和配置文件。所有信息均保存在netIC模塊中的寄存器區(qū)域,該寄存器區(qū)域的結(jié)構(gòu)如圖5所示,例如,現(xiàn)場總線主站發(fā)送至netIC模塊的數(shù)據(jù)保存在從1000開始的寄存器區(qū)域;netIC模塊發(fā)送至現(xiàn)場總線主站的數(shù)據(jù)保存在從2000開始的寄存器區(qū)域。同時,主CPU也可以通過Modbus RTU直接訪問所有寄存器區(qū)域,并通過Modbus修改Modbus本身的波特率及總線協(xié)議的所有參數(shù),如波特率、站地址、輸入輸出字節(jié)等。

4.2 netIC模塊與主
CPU通訊 netIC模塊與C8051F MCU的通訊方式為Modbus RTU,因此需要在MCU的用戶程序中實現(xiàn)Modbus RTU的讀寫功能。netIC模塊可以作為Modbus通訊的主站或從站,因此MCU的UART口作為從站或主站。在用戶程序中,通過Modbus命令碼3讀取netIC模塊接收到的總線數(shù)據(jù),通過Modbus命令碼16寫數(shù)據(jù)到netIC模塊,模塊會自動將數(shù)據(jù)打包成協(xié)議數(shù)據(jù)幀發(fā)送至總線上。
寫寄存器命令代碼如下:
void UART0_send(char *cdata,char n)
{
char i,*pt;
pt = cdata; //首地址放到指針中
EA = 1; //開
cpu中斷
REN0 = 0;
ES0 = 0; //關(guān)閉串行口中斷
Rs485_Tx_Enable = 1; //485在發(fā)送狀態(tài)
TI0 =0; //清中發(fā)送斷標(biāo)志位
for(i=0;i<n;i++)
{
SBUF0 = *pt; //啟動發(fā)送過程
while(TI0==0); //等待發(fā)送結(jié)束
TI0 = 0; //發(fā)送結(jié)束后將中斷標(biāo)志清零
pt++; //指向下一個要發(fā)送的地址
}
TI0 = 0;
Rs485_Tx_Enable = 0; //置
485在接受狀態(tài)
ES0 = 1; //打開串行口中斷
data_transfer = 0;
REN0 = 1;
}
讀寄存器命令代碼如下:
void UART0_receive(void)
{
unsigned char temp_receive;
temp_receive = SBUF0;
if(start==1 && end==0)
{
TestDataBuffer[byte_num]=temp_receive;
byte_num++;
}
else if(1==overtime && 0==byte_num && start==0 && end==1)
{
LocalAddress=temp_receive;
TestDataBuffer[byte_num]=LocalAddress;
if(LocalAddress==0x02)
{
byte_num=1;
start=1;
end=0;
}
}
}
5 小結(jié)
基于NIC 50-CCS模塊設(shè)計的貝爾利控制器產(chǎn)品,目前已在現(xiàn)場成功投入運行,并且通訊質(zhì)量穩(wěn)定可靠,效果良好。德國赫優(yōu)訊的netIC產(chǎn)品系列軟硬件開發(fā)簡單,并且具有統(tǒng)一的32針DIL封裝形式,為用戶提供了一種很好的開發(fā)現(xiàn)場總線或?qū)崟r以太網(wǎng)從站設(shè)備的解決方案。
