摘要:本文以贝尔利科技有限公司的产品为例,介绍了德国赫优讯 netIC 模块作为从站通讯接口的软硬件开发。netIC 模块全系列产品都提供统一的 32 针 DIL 封装形式,非常便于用户开发及集成。
该设备已成功在现场运行,通讯稳定,效果良好。
关键词:netIC;嵌入式模块;现场总线从站;实时以太网从站
Abstract: This paper takes the case of BRL’s product and introduces the hardware and software development using Hilscher’s netIC module, which works as a Fieldbus slave or Real-Time Ethernet slave.All the modules of netIC product line provide a uniform DIL-32 compact dimension. Thus it enables easydevelopment and integration. The device operates successfully and netIC module provides a steady communication.
Keywords: netIC, embedded module, Fieldbus slave, Real-Time Ethernet slave
1 引言
贝尔利科技有限公司是一家从事科研开发和工程技术服务的高新技术企业,主营业务为机电产品制造、生产过程自动化、电气自动化、管理信息化等方面的系统集成、软件开发、工程设计、技术服务等,“贝尔利科技”凭借强大的技术队伍以及科学的管理和一系列综合系统集成项目的丰富经验,逐渐成长为实力雄厚的自动化系统的集成商。贝尔利科技以其丰富的运动定位控制系统和部件产品线,为客户提供了前所未有的解决方案甄选机会,以满足其特定的应用需求。其一款控制器已经分别集成了德国赫优讯 netIC 系列 CC-
2 德国赫优讯 netIC 模块简介
德国赫优讯 netIC 嵌入式模块作为完整的单片模块,包括:NIC 50-RE(实时以太网从站接口模块,支持各种实时以太网协议,包括:PROFINET、EtherCAT、Ethernet/IP、Modbus/TCP、POWER
3 硬件开发
netIC 模块提供了 32 针管脚,支持 UART 接口通过 Modbus RTU 协议集成入用户的主机系统,未来还将扩展 SPI 及 I2C 接口。因为模块本身已经提供了同步串行接口,如果作为简单的 IO设备,可以不需要额外的主 CPU。本例中使用了 C8051F 系列混合信号ISPFLASH 微控制器作为主CPU,其基于高速、流水线结构的 8051 兼容 CIP-51 内核,并提供了 2 路 UART 接口及其他丰富外设,因此可以在软件上实现 Modbus RTU 协议与 netIC 模块通讯。
图 2 为 NIC 50-CCS 模块的管脚图,与其他型号模块唯一的区别只是在协议通讯接口的管脚,因此对于用户更换成其他模块非常方便。其中,29、30、31 管脚为串行主机接口, 可以与主 CPU的 UART 口直接连接,也可以通过 RS485 芯片进行连接;13、14 管脚为 CC-
因此 netIC 模块的硬件开发非常方便,开发示意图如图 3 所示:
图 3 硬件开发示意图
硬件开发的电路原理图如图 4 所示:
同时,用户还可以增加诊断接口,数字量模拟量输入输出接口,状态显示 LED 灯等外围电路。
4 软件开发
4.1 netIC 模块配置
netIC 模块本身的使用不需要任何程序上的开发,只需要使用提供的配置软件和评估板配置Modbus 及 CC-
同时,主 CPU 也可以通过 Modbus RTU 直接访问所有寄存器区域,并通过 Modbus 修改Modbus 本身的波特率及总线协议的所有参数,如波特率、站地址、输入输出字节等。
图 5 寄存器区域结构
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 {
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封装形式,为用户提供了一种很好的开发现场总线或实时以太网从站设备的解决方案。
参考文献
[1] netIC_usermanual_designguide_en. Hilscher Gesellschaft für Systemautomation mbH. 2009.
[2] C8051F02x user guide. Silicon Laboratories Inc. 2003.
[3] C8051F02X DEVELOPMENT KIT USER’S GUIDE Silicon Laboratories Inc. 2006.
共0条 [查看全部] 网友评论