基于STM32F107嵌入式控制器的工业以太网接口设计
2013-07-05陈基伟项军伟
陈基伟,项军伟,张 耀
(1.浙江机电职业技术学院,浙江 杭州 310053;2.浙江百纳橡塑设备有限公司,浙江 仙居 317300)
0 引言
当今社会,采用TCP/IP协议的以太网,以其高的通信效率和高的通信可靠性,实现了设备间的互联,使成千上万的人同时在互联网交流,互联网应用已经遍及全球。结合工业的需求推出的工业以太网,同样促进了互联网技术在工业领域应用。工业以太网上的终端设备通过组网,可以实现工业现场信息的传输控制,也可以与互联网上的设备间的互联,实现远程数据监控,工业以太网技术已成为当前工业控制的一个热点[1]。在常见工业应用组网方式中,基于串口协议如RS-485、RS232开发的设备,在物理接口与协议与以太网无缝兼容,需要通过专用嵌入式网关才能接入以太网。基于专用、封闭型工业网络,虽具备效率高的特点,但其网络规范是由各公司自行研制,往往是针对某一特定应用领域,在相互连接及推广与维护等方面存在诸多不便,也需要专用网关才能接入以太网[2]。而基于工业以太网具有控制开发的设备可以实现与企业Internet/Intranet实现无缝连接,实现工业现场远程监控。
为了实现ARM嵌入式控制器接入工业以太网,本成果使用STM32F107与DP83848CVV完成客户端网络硬件接口的设计开发;在Keil MDK及RL-ARM环境下开发客户端应用软件采用;计算机服务程序采用WinSocket编程。本成果已在工业捏炼机控制器得到成功应用,并批量生产。
1 客户端物理层接口设计
STM32F107是意法半导体推出的一款互连型(Connectivity)微控制器,集成了多种工业标准接口,与不同型号产品在引脚和软件上具有兼容性。外设包括10个定时器、两个12位1-Msample/s AD、两个12位DA、两个I2C接口、五个USART接口和三个SPI端口和IIS, 另外STM32F107拥有全速USB(OTG)接口,两路CAN2.0B接口,以及以太网10/100 MAC模块。其中0/100 MC模块需要兼容的网卡接口芯片如DP83848CVV才可以完成以太网应用。
图1 STM32F107与DP83848CVV接口
STM32F107通过MII接口与DP83848CVV完成数据交换。STM32F107与DP83848CVV接口电路[3]如图1所示。
2 客户端软件设计
客户端应用软件在Keil MDK及RL-ARM环境下开发[4]。对DP83848CVV接口操作部分具体实现代码可以采用随机软件ETH_STM32x.c文件。在该文件包含了对DP83848CVV操作的底层接口函数。主要的接口函数如下:
void init_ethernet(void); //网卡芯片初始化函数
void send_frame(OS_FRAME*frame); //RL-ARM实时库将待发送数据包
//送网卡芯片发送
put_in_queue(frame);//调用RL-ARM实时库函数对接收
//到 TCP数据包进行处理
客户端登录服务器流程如图2所示。客户端登录服务器过程的具体代码(略)。
图2 客户端登录服务器流程
3 服务器软件设计
服务器端采用WinSocket编程[5],在Vc6.0环境调试通过。在MFC下创建一个基于单文档模板的应用工程,做好工程后,在构造函数中完成m_srvrSocket与自定义的网络事件的联系,将其设置为监听模式,等待客户机TCP连接。当客户机联机或传送数据等网络事件发生时,调用MyNETMessage消息处理函数,在该函数中进行各类网络事件的处理。在单文档模板添加套接字主要的步骤有以下几步:
在MainFrm.h定义消息事件
#define WM_MY_NETMESSAGE WM_USER+999
在MainFrm.ccp添加消息映射
BEGIN_MESSAGE_MAP(CMainFrame,CMDIFrameWnd)
ON_MESSAGE(WM_MY_NETMESSAGE,MyNETMessage) //为消息处理函数//添加入口
END_MESSAGE_MAP()
在构造函数中,完成设置侦听端口,并进入侦听。
CMainFrame::CMainFrame(){
interr;
WORD wVer;
WSADATA wsaData;
wVer=MAKEWORD(2,0);
err=WSAStartup(wVer,&wsaData);//判断 Windows socket dll版本
if(err!=0) {
MessageBox("系统Sockets版本错误!");
return;
}
m_srvrSocket.SetMessagePara(this,WM_MY_NETMESSAGE);//设置消息事件
m_srvrSocket.Create(1300,SOCK_STREAM,FD_ACCEPT);//以TCP连接方
//式创建套接字,设置侦听端口为1300
m_srvrSocket.Listen(num);//开始侦听
}
在消息处理函数完成各类网络事件处理。
LRESULT CMainFrame::MyNETMessage( WPARAM wParam,LPARAM lParam){
CString str;
switch(wParam){
case MYNET_CLIENTREAD:
break;
case MYNET_CLIENTSEND:
break;
case MYNET_CONNECT:
break;
case MYNET_SERVERCLOSE:
break;
case MYNET_SERVERREAD://接收到客户端发送的数据…… //进行数据处理
break;
case MYNET_SERVERSEND:
break;
case MYNET_ACCEPT://客户端连接到服务器
str="Set_time";
str+=CTime::GetCurrentTime().Format("%Y%m%d%H%M%S");
m_srvrSocket.SendStr(str);//联机成功后发送主机时间到客户机
break;
case MYNET_CLIENTCLOSE://客户机已关闭break;
}
return TRUE;
}
4 实际应用
(1)可靠性。本成果已在工业捏炼机控制器得到成功应用,并批量生产。捏炼机是橡胶炼胶的关键设备。捏炼机的工作原料主要为生胶、大料、炭黑、油、促进剂、硫化剂等,炼胶时,工作现场粉尘多,环境条件无法满足计算机工作要求。应用中,数据传输的可靠性由TCP网络协议保证,本方案主要考虑网络设备的工作可靠性。本方案采用工业级STM32F107完成客户机设计,实现对捏炼机生产过程控制。服务器主机通过远程方式实现工艺参数传输及捏炼机工作状态数据的接收。STM32F107接收服务器主机发送的工艺参数,并按参数要求运行,运行时,实时将设备状态数据发送回主机。
某规格橡胶的炼胶工艺如表1所示。通过分析炼胶工艺要求,将各个步骤中的关键参数时间、温度、压力、转速编写在工艺文件中,计算机远程向客户机发送工艺文件;客户机在接收到工艺文件后,在操作人员启动炼胶后,自动按照规定参数逐步完成炼胶过程的控制。
表1 某规格橡胶的炼胶工艺
另外,服务器主机采用双机备份工作模式。工作时,两台主机同时接收数据,第一主机在完成数据接收后及时保存数据,并将已保存信息发送给第二主机,第二主机自动丢弃已接收到的数据。当第一主机故障时,第二主机接收不到第一主机发送的信息,则将保存数据。
(2)实时性。以太网采用载波侦听多路复用冲突检测(CSMA/CD机制),设计时采用小容量数据包,降低数据冲突的情况。炼胶工艺参数只传送关键参数,各字段长度如表2所示,每个步骤共需6字节,一般的炼胶工艺参数总长度不超过180字节,完整的文件可以在一个TCP数据包内完成传输。由于数据量少,在主机和客户机完成TCP链接后,仅发送一次数据,便可以完成数据传输。客户机回传设备状态数据时,状态数据格式与工艺参数相同,回传的间隔时间可动态设置,降低单机网络资源消耗。在回传的间隔时间内,客户机将多个时间点的状态数据打包,定时集中将数据发送回服务器。
表2 工艺各字段长度
5 结束语
本方案采用TCP连接方式,完成服务器主机与客户机的通讯,现了ARM嵌入式控制器通过工业以太网与计算机组网。本方案已在捏炼机控制系统中得到应用,可靠实现服务器向设备传送生产工艺文件、服务器对设备工作状态的实时监测、加工工艺参数的实时记录等功能。本方案可广泛应用于各类工业监测领域,实现各类设备的监测与控制。
[1]马玉敏,樊留群,张浩.工业以太网的最新发展[J].电气时代,2005,12.
[2]李滔.基于ARM的嵌入式工业网络控制器的平台设计[D].长沙:中南大学,2009,6.
[3]于春雪.基于STM32F107的高速以太网接口[J].电声技术,2011,9.
[4]陈基伟,陈小菊.基于GPRS的无线远距离数据采集传输装置[J].机电工程,2011,10.
[5]胡鸣.Windows网络编程技术[M].北京:科学出版社,2008.