PROFIBUS DP总线I/O设备的开发研究

总线i/o是现场总线远程i/o的简称,是基于现场总线控制系统fcs中的主要设备,profibus-dp是总线i/o的主流通信协议。一个总线i/o设备可能需要多种总线接口,对于设备的开发人员来讲,他们专注于设备功能单元的核心技术,如果让他们从头开发各种通信接口,势必会分散设备开发人员的精力,增加开发成本和开发周期。
总线i/o的主要功能分为输入、输出两部分。输入是采集现场模拟信号(如4~20 ma)和开关量信号(如24 v dc)转换成为数字量并按照通信协议传送到现场总线。输出是将现场总线通信数据转换成模拟输出和开关量输出。profibus-dp总线i/o设备以从站的形式存在。
本文介绍如何使用xgate-dps软件库设计设备软件。通过下面的介绍,您可以快速地让您的设备具有思想,最终成为一个功能完整的设备。
1 xgate-dps软件库结构
xgate-dps系列模块都提供了软件库,用户使用该软件库可以快速开发出设备软件。图1是该软件库的结构图,整个软件架构将xgate-dps的资源展示给用户,这些资源包括输入数据、输出数据、用户参数数据、配置数据、诊断数据等等。图中,灰色背景部分表示需要用户编程。软件库针对8051、arm平台做了硬件相关的接口驱动,一般不需要做任何更改,如果使用新的硬件平台, 用户需要修改uart驱动。
软件库自行完成uart数据传输控制、命令发送和接收及相关分析处理,即图中的xgate数据处理部分;在xgate数据处理的上层,提供了用户接口函数api,用户使用这些函数完成对xgate-dps的操作;一些基于事件的操作,如dp-v1的读写和数据传输请求,xgate数据处理将通过回调方式获取应答和处理;用户应用程序app可以直接访问xgate资源,但是,必须使用api来更新这些资源。
2 xgate-dps软件设计步骤
用户使用该软件库对xgate-dps10的操作其实就是完成回调函数、使用api更新资源、访问资源数据。整个设计遵循图2所示的5个步骤,每个步骤需要完成的工作在图中作了注释,其中,大多数场合不需要步骤3;在不使用dp-v1的情况下步骤4几乎也是可以忽略的。
3 总线i/o设备的gsd文件
gsd文件是设备描述文件,当一个设备确定了其功能和参数后,gsd文件也就确定了。设备的gsd文件一般是通过修改示例gsd文件生成,示例gsd文件中的大部分关键字和参数已经确定而不需要修改。本例中修改示例如下:
修改的内容一部分是设备的名称、序列号等信息,另一部分是设备组态数据和用户参数数据部分。设备组态数据指示了设备的输入输出大小,决定了通信数据结构,组态数据的设置可以查看xgate-dps10数据手册的附录;用户参数数据是为了限定或指示设备数据的范围或意义的,更详细的信息请参考《xgate-dps10数据手册》。
4 app设计及回调函数
软件库提供了demo示例代码,一个软件库基础操作单元如图3所示。
在使用软件包前,首先要配置cfg.h头文件的宏定义,这包括与硬件相关的寄存器、缓冲区大小、设备属性等的定义。
使用软件包,用户没有必要去考虑如何与模块通信,也不必了解profibus技术细节,只需要关心设备功能的实现及如何组织数据。一个典型的前后台用户程序框图如图4所示。
软件包中有两个非常重要的函数dataupdate()和recvprocess(),调用这两个函数实现数据的交换。接收到的交换数据在sys.out_data[]数组中,要发送的数据需要放到sys.in_data[]中。例如:
放到sys数组中的数据顺序与gsd文件描述的设备信息顺序是一致的。在本例中,8位开关输入量在sys.in_data[0]中,而16位(2 b)计数器占用sys.in_data[1…2];8位开关输出在sys.out_data[0]中。来自主站的用户参数数据放在sys.user_para[]数组中,用户可以根据这些数据的意义设置设备相关功能。
xgate-dps10支持用户诊断,用户可以调用setdiag_channel()、setdiag_identifier()、setdiag_device()等函数来完成用户诊断的发送,在发送这些诊断前,需要将诊断信息赋值到定义好的结构体中,例如:
当xgate-dps收到dp-v1读写请求,也将产生一个中断,软件库将调用相应的回调函数。在这些回调函数中应首先判断访问的slot_num、index的合法性,基本格式如下:
profibus-dp从站应用广泛,使用通信接口模块来开发总线i/o设备可以有效地缩短开发周期、节省成本投入,并在可靠性上得到保障。xgate-dps10符合大多数应用场合,其高可靠性、方便性、低成本性使其成为开发dp从站设备的首选。

2021亚太机器人世界杯天津国际邀请赛圆满落幕
画画、写字、下围棋、组乐队样样在行 关于ABB机器人你了解多少呢
智能锁的“高温自动解锁”功能究竟是否有必要
自研编程语言:Unilang 的语言设计
小米支付将在今秋上线 与苹果三星争夺NFC支付市场
PROFIBUS DP总线I/O设备的开发研究
如何结合TensorFlow目标检测API和OpenCV分析足球视频
软银为何偏偏挑选了Cruise?为什么自动驾驶行业流行“拉帮结派”
计算机视觉中的重要研究方向
简单介绍下常见的杂波模型
【大大芯方案】极速快充,大联大推出基于onsemi产品的240W PD3.1适配器方案
4K超高清,看见更精彩的世界
高性价的蓝牙耳机推荐,必不可少的时尚配件
5G大规模天线系统结构组成及如何更好的服务系统需求
如何选择补偿式硅压力传感器
Wi-Gig在Wi-Fi的未来有一席之地吗?
语音通信中的自适应噪声对消系统原理与设计
NAND Flash应用分布概况
成都博高推出智慧医疗解决方案
RFID模块门禁系统设计