PROFIBUS—DP总线I/O设备的开发——基于XGate-DPSIO的应用——下篇(软件设计)
2024-09-02
来源:汇智旅游网
{ .鋈 。电oetro. 1专栏 PROFIBUS总线应用讲座(3) PROFIBUS—DP总线I/O设备的开发 ——基于XGate-DPS10的应用——下篇(软件设计) 如果说硬件是设备的躯体,那么软件则是设备的灵魂。 上期文章中详细介绍了基于XGate—DPS10的总线I/O设备 硬件设计,至此,已构建了一个完整的设备躯体。但是,这 个设备还不能正常运行,因为它还没有灵魂,不知道自己该 做什么,怎么做。本期文章将介绍如何使用XGate—DPS软件 库设计设备软件,通过下面的介绍,您可以快速地让您的设 备具有思想,最终成为一个功能完整的设备。 1 XGate—DPS软件库结构 XGate—DPS系列模块都提供了软件库,用户使用该软 件库可以快速开发出设备软件。图1是该软件库的结构 图,整个软件架构将XGate—DPS的资源展示给用户,这些 资源包括输入数据、输出数据、用户参数数据、配置数据、 诊断数据等等。图中,灰色背景部分表示需要用户编程。软 件库针对8051、ARM平台做了硬件相关的接口驱动,一般 不需要做任何更改,如果使用新的硬件平台,用户需要修 改UART驱动。 图1软件框架图 软件库自行完成UART数据传输控制、命令发送和接收 及相关分析处理,即图中的“XGate数据处理”部分;在“XGate 数据处理”的上层,提供了用户接口函数API,用户使用 这些函数完成对XGate—DPS的操作;一些基于事件的操 作,如DP—V1的读写和数据传输请求,“XGate数据处理” 将通过回调方式获取应答和处理;用户应用程序APP可 以直接访问XGate资源,但是,必须使用API来更新这些 资源。 2 XGate—DPS软件设计步骤 用户使用该软件库对XGate—DPS10的操作其实就 是完成回调函数、使用API更新资源、访问资源数据。 整个设计遵循图2所示的5个步骤,每个步骤需要完 成的工作在图中作了注释,其中,大多数场合不需要步 骤3;在不使用DP—V1的情况下步骤4几乎也是可以 忽略的。 30 欢迎网上投稿WWW.chinaaet.corn ①修改GSD 修改少量设备名称、序列号、 组态数据、用户参数等信息 ②修改cfg.h 定义硬件相关、缓冲区大小、 设备属性等 图2软件开发步骤 3总线I,O设备的GSD文件 GSD文件是设备描述文件,当一个设备确定了其功能 和参数后,GSD文件也就确定了。设备的GSD文件一般是 通过修改示例GSD文件生成,示例GSD文件中的大部分关 键字和参数已经确定而不需要修改。本例中修改示例如下: Vendor_Name=”ZY Ltd.Co.”;//公司名,用户自行修改 Model_Name=”总线I/O”;11设备名称,也是组态时该产品 的名称 OrderNumber=”I,O20l0o80l”;,,产品序列号,可按用户名 修改 Module=”DO8 LEDs”0x20;//模块描述,组态数据Ox20 表示1个字节输出,对应了8位输出开关量 1 Ext_Module Prm_Data_Len=1 Ext User Prm Data_Ref(o)=z EndModu】e 修改的内容一部分是设备的名称、序列号等信息,另一 部分是设备组态数据和用户参数数据部分。设备组态数据 指示了设备的输入输出大小,决定了通信数据结构,组态数 据的设置可以查看XGate—DPS10数据手册的附录;用户参 数数据是为了限定或指示设备数据的范围或意义的,更详 细的信息请参考{XGate—DPSIO数据手册》。 4 APP设计及回调函数 软件库提供了demo示例代码,一个软件库基础操作单 元如图3所示。 竺竺 : 兰兰H三茎 !H 图3最简单更新调用 《电子技术应用》2010年第36卷第9期 PROFIBUS总线应用讲座(3) 使用软件包前,首先要配置cfg.h头文件的宏定义,这 __l . . J专栏 diagchanne1.ChannelByteType=ChannelByte In; //9节、 也 。 硬件相关的寄存器、缓冲区大小、设备属性等的定义。 输入通道 diagchanne1.ChannelNumber=2; _使用软件包,用户没有必要去考虑如何与模块通信,也 4 必.r解PROFIBUS技术细节,只需要关心设备功能的实 脱及如何组织数据。一个典型的前后台用户程序框图如 l矧4所示。 _//通道号 diag___channe1.Channel_rrype=ChannelTpye_byte;//类型为字节 _ diagchanne1.EerrType=STATUSOVERVOLTAGE;//错误为过压 diagchanne1.Module___Number=2; //通道所属模块 ,/发送诊断数据 SetDiagChannel(0,&Diagbuf,&diag_channe1); 中断服务程序 上 中断标记 当XGate—DPS收到DP—V1读写请求,也将产生一个中 断,软件库将调用相应的回调函数。在这些回调函数中应首 先判断访问的slot_num、index的合法性,基本格式如下: switch(slot num) 其他中断处理 { CaSe允许的: 允许的处理; 图4前后台用户程序流程图 break; //在这里使用同样格式进一步对 index的合法性判断;完全合法则应答请求数据 case不允许的: 返回访问错误; break; 软件包中有两个非常重要的函数DataUpdate 0和 RecvProcess0。调用这两个函数实现数据的交换。接收到的 交换数据在sys.Out_data【】数组中,要发送的数据需要放到 sys.In_data[】中。例如: _l //将数字量输入读回放到 sys.In_sys.Indata[0】=redD10; PROFIBUS—DP从站应用广泛,使用通信接口模块来开 发总线I/O设备可以有效地缩短开发周期、节省成本投入, 并在可靠性上得到保障。XGate-DPSIO符合大多数应用场 data缓冲区中 DataUpda【e(); RecvProcessO; ,/上传输入数据 //获取输出数据 输出到开关输出 合,其高可靠性、方便性、低成本性使其成为开发DP从站 设备的首选。 广州致远电子有限公司致力于嵌入式系统、工业通信 网络的技术研发与应用推广, 自主研发了一系列 DriveDO(sys.Out data[01); //将来自主站的输出数据D0 放到sys数组中的数据顺序与GSD文件描述的设备信 息顺序是一致的。在本例中,8位开关输入量在sys.In_data 【O】中,而l6位(2 B)计数器占用sys.In—data【1…2】;8位开关 输出在sys.Out_data[01中。来自主站的用户参数数据放在 PROFIBUS—DP网络产品,包括嵌入式模块、通讯卡、调试工 具、PC软件、OPC服务器等,并提供基于PROFIBUS总线的 整套组网方案及应用集成。 sys.User para[1数组中,用户可以根据这些数据的意义设置 设备相关功能。 XGate—DPS10支持用户诊断.用户可以调用SetDi— 广州致远电子有限公司 地址:广州市天河区车陂路黄洲工业区3栋2楼 技术支持:f020)28267846 销售电话:(020)28872342 28872450 电子邮箱:profibus@embedcontro1.com ag_Channel0、SetDiag_Identiifer()、SetDiag_Device0等函数来完 成用户诊断的发送,在发送这些诊断前,需要将诊断信息赋 值到定义好的结构体中,例如: STRUCTDiag__Channel diag_channel; _//通道相关诊断 ◎PROFIBUS系列产品 PROFIBUS从站横块 P只OF JBUS拚议分析蔫试工具 PFIOFIBU¥群荚j殳赫PROFIBU¥ 运动控镧设备 P冀OFI8US 分布式l,O设备 PROFIBUS PC! 接口卡 集成PROFIBUS挤议 的人机界丽 《电子技术应用》2010年第36卷第9期 31