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

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

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

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

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

4.2 netIC模塊與主
CPU通訊 netIC模塊與C8051F MCU的通訊方式為Modbus RTU,因此需要在MCU的用戶程序中實現Modbus RTU的讀寫功能。netIC模塊可以作為Modbus通訊的主站或從站,因此MCU的UART口作為從站或主站。在用戶程序中,通過Modbus命令碼3讀取netIC模塊接收到的總線數據,通過Modbus命令碼16寫數據到netIC模塊,模塊會自動將數據打包成協議數據幀發送至總線上。
寫寄存器命令代碼如下:
void UART0_send(char *cdata,char n)
{
char i,*pt;
pt = cdata; //首地址放到指針中
EA = 1; //開
cpu中斷
REN0 = 0;
ES0 = 0; //關閉串行口中斷
Rs485_Tx_Enable = 1; //485在發送狀態
TI0 =0; //清中發送斷標志位
for(i=0;i<n;i++)
{
SBUF0 = *pt; //啟動發送過程
while(TI0==0); //等待發送結束
TI0 = 0; //發送結束后將中斷標志清零
pt++; //指向下一個要發送的地址
}
TI0 = 0;
Rs485_Tx_Enable = 0; //置
485在接受狀態
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 小結
基于NIC 50-CCS模塊設計的貝爾利控制器產品,目前已在現場成功投入運行,并且通訊質量穩定可靠,效果良好。德國赫優訊的netIC產品系列軟硬件開發簡單,并且具有統一的32針DIL封裝形式,為用戶提供了一種很好的開發現場總線或實時以太網從站設備的解決方案。
