颉新春,田康,李忠虎
(内蒙古科技大学 信息工程学院,包头014010)
颉新春(副教授),主要从事现场总线与FPGA 等技术的研究;田康(硕士研究生),主要研究方向为单片机通信;李忠虎(教授),主要研究方向为传感器技术、过程参数检测与处理、智能仪器。
引 言
近年来,嵌入式微处理器在生产生活中的应用发展迅速。许多实际应用以51 系列单片机为设计平台得以实现。本文利用32 位微控制器STM32F103 作为核心芯片,在Profibus协议下实现了现场总线水位监控系统。现场总线的拓扑结构决定了总线上各节点只能通过一个信道收发数据,即各节点需要竞争同一介质收发数据,从而导致数据传输不稳定。本文在不改变MAC 机制的前提下,通过应用层调度算法提高了现场总线水位监控系统的实时性。
MAC机制即一种能够解决因多个终端设备同时发送通信请求而产生争用通信介质问题的协议。控制协议所采用的介质访问控制方法与控制系统的实时性关系密切,共享相同通信介质的总线结构是当前多数控制网络的选择。总线使用权的调度方式决定了节点通信的快慢,介质访问控制机制就是在最大程度上利用通信信道,优化MAC机制是提高控制系统实时性的关键所在。
令牌环即令牌沿着节点组成的环状总线循环。各站均没有数据发送时,令牌为空令牌;当有数据需要发送的节点迎来令牌时,令牌改为忙令牌,此时其他节点不能发送数据,必须等待。信息负载量小时,效率较低,反之较高。把每个节点需要传输的信息按时间要求分为实时信息和非实时性信息两个队列,即把一个节点分为两个虚拟节点。当令牌传输到节点时,先执行实时性要求高的队列通信,然后再执行实时性低的队列,并且两队信息执行不同的协议策略。虚拟节点通信模型如图1所示。
图1 虚拟节点通信系统模型
对实时性信息采用空竭式服务,即对每个节点每次连续发送的数据数目设置上限,若令牌传递到此节点,且节点需要发送的实时性数据数目少于设定上限,则所有信息都能被传送;若数据数目多于此上限,则上限数目个实时性数据被服务后,剩余信息需等到下一个轮询周期才能被服务。
对非实时性信息采用限量式服务,即每个节点服务时间为一个信息的服务时间,此协议下,既能保证为其他节点的实时性信息缩短等待时间,也能保证在实时信息不多或没有的条件下,各节点非实时性信息有均等机会及时被服务。
Profibus是一种国际性的开放式现场总线,使用的是MAC机制中的令牌传递。在此机制中,地址最低的节点上电后创建令牌,令牌的接收者在协议内有权限访问总线,持有令牌的节点传送数据后,将令牌传递到下一个节点。总线节点包括主站和从站两种类型,主站通过总线形成的环为逻辑环,令牌在逻辑环内循环轮转,这种机制使主站和从站在确定的最大时间内拥有总线接入权。令牌循环模型如图2所示。
图2 令牌循环模型
Profibus总线通信通过报文循环实现,从主站发送数据的动作帧到接收到从站的响应帧为一个报文循环,一个报文循环必须完整进行。数据链路层的FD 提供SDA、SRD、SDN、CSRD四种服务来实现数据传输,且每种服务都有对应的一种帧格式。经计算分析得知:TSRD传输时间最长,TSDN传输时间最短,两者相差约50.25%~52.92%。主从站数据交换过程如图3所示。
图3 主从站数据交换过程
动作帧前需加入3字节同步帧TSYN(为33Tbit),此外接收到报文最后一位时需等待一定时间TIDL,其值需大于TSYN,典型值为75Tbit。主站发送数据帧的最后一位到接收到响应帧的第一位之间的时间间隔定义为Slot-time,TSL是Slot-time被允许的最大值。时间超过TSL后主站还未接收到响应,则认为出错,此时主站重新发送请求帧,或将错误上传FDL层交给上层软件处理。
令牌循环时间TTR的定义对系统实时性影响重大,相关参考文献给出过如何设置参数TTR的最小值,但在同一个Profibus总线中工作的节点设备往往来自不同生产商,因此找到一个对系统整体最合适的TTR值就特别重要。这里需要考虑负载和TTR值之间存在的量化关系。
令牌持有时间TTH为目标令牌设定循环时间TTR与令牌实际循环时间TRR之差,即:
因此目标令牌TTR设定值决定了TTH的大小。若TTH≤0,则节点只能发送一个高优先级报文;若TTH>0,依次发送高低优先级报文。
设系统含有N 个主站,系统负荷为P,任一主站负荷为Pi,一次数据交换时间为TD,令牌总传递时间为u,主站间令牌时间均为ui,Pih为高优先级队列负荷,k为低优先级队列允许服务的最大数量,则
阈值k与目标令牌循环时间关系如图4所示。
图4 阈值k与目标令牌循环时间关系
此时,根据实时信息要求选定适当的k值,从而计算出合适的令牌循环周期。
设计采用多主站节点系统,选用两个节点的简单系统模型进行研究。数据传输采用SRD 服务,通信数据长度最长为8字节,波特率为187.5kbps,即每个位时间Tbit=5.33μs,TSRD设定为11Tbit。节点系统图如图5所示。
图5 节点系统图
系统主要通过令牌传递和调度算法实现实时性的分散控制,采用STM32F103 单片机和智能接口芯片SPC3为核心开发方案。硬件整体结构主要包括STM32F103微控制器及外围电路、SPC3工作电路、Profibus总线通信接口电路、压力采集电路及供电电路,系统各部分由地址总线和数据总线相连。
本设计中,STLP液位传感器将输出4~20mA 标准电流信号,送到单片机测量显示,需要将电流信号转换为电压信号,采用电流/电压转换器来实现电流到电压的转换。此处采用ISO EM 系列隔离放大器,压力采集电路如图6所示。
图6 压力采集电路
本系统中,采用ISO EM-A4-P3-O4型号的直流电压/电流信号隔离放大器,可实现4~20mA/0~5V 的线性转换,模块电源电压为5V。单片机读取0~5V 电压模拟信号,可采用8位A/D转换芯片ADC0805CN实现。
单片机模块电路核心选用STM32F103,晶振频率选用11.059 2 MHz,采用手动复位和上电复位两种方式。具体电路设计如图7所示。
图7 核心模块电路
系统硬件平台上的各节点按照预先设定的参数(包括周期、优先级、所传送数据等)对传送的信息进行预订。接收端节点收到来自发送端节点的信息时,对所接收信息的性能指标进行相关计算处理。
如果有顺序排列的A、B、C 三个节点,A 节点取得信道使用权后,首先判断其是否有需要发送的高优先级数据,若有,则A 节点在令牌持有时间内进行高优先级数据传输。如果在持有令牌时间内数据发送完毕,再按FCFS原则发送固定位低优先级数据;如果高优先级数据不能在令牌持有时间内发送完,则在达到持有时间边缘状态时停止高优先级数据发送,继续发送固定位低优先级数据,最后将令牌恢复为空令牌传给下一节点。
数据发送流程如图8所示。
结 语
本文建立了Profibus多节点现场总线系统,结合对Profibus协议内容的分析,提出了在不改变原有MAC机制前提下设计新型调度算法,结合传统现场总线拓扑结构,来实现实时性分散控制。根据对实时信息接收的不同要求,计算出对应的令牌循环周期设定值,从而使通信信道达到最好的分配利用,实时性结果验证图略——编者注。
图8 节点数据发送流程图
可以得出结论:信息负载量越高,此设计系统的优势越明显。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。
[1]周立功单片机发展有限公司.周立功RS-485选型及应用指南,2009.
[2]陈鑫林.现代通信中的排队论[M].北京:电子工业出版社,2000.
[3]顾洪军,张佐,吴秋峰.网络控制系统中周期性通信的实时性充分条件[J].测控技术,2001,20(6):1-4.
[4]朱琴跃.列车通信网络实时性理论与方法研究[D].上海:同济大学,2008:32-33.
[5]Tovar E,Vasques F.Setting target rotation time in PROFIBUS based real-time distributed applications[C]//IFAC,1998.