[STM32F1]

STM32与PROFIBUS协议

[复制链接]
楼主: goodluck09876
手机看帖
扫描二维码
随时随地手机跟帖
goodluck09876|  楼主 | 2019-5-16 15:17 | 显示全部楼层
    数据的接收与发送是任何一个通信必不可少的过程,采用何种技术能确保通
信正常的情况下,尽量少地占用CPU资源。面对高速通信的场合,对接收的效
率要求很高,且希望能快速将接收到的数据存到存储器中。
    普通的USART发送与接收是采用数据为单位,一个数据一个数据发送(接
收),每发送(接收)到一个数据时就会进入一次中断或进行一次溢出查询,每
发送(接收)一个数据就占用CPU资源。若在高速通信的场合中,DP主站频繁
地发送数据帧,那么从站就在中断或溢出查询中频繁地切换,效率不高,且占用
了大量的CPU资源,导致CPU没有太多时间去处理其他任务,这种控制方式并
不适用。
    在嵌入式系统中,I/O口的控制方式除了程序循环检测和中断驱动外,还提
出了直接内存访问方式(DMA ) o DMA方式就是针对中断出现频率很高时占用
过多的CPU资源而提出来的,基本控制思路是:用DMA控制器代替CPU,直
接完成I/O设备与内存之间的数据传输工作,使CPU能空出时间处理其他任务。
这种技术在高速通信场合中应用广泛。
    Profibus-DP从站是一个被动接收站,它不主动发送数据帧,只有在接收到
主站发送的请求帧后,才会做出响应。即该从站的接收要优于发送功能,对接收
性能的要求也高于发送功能。因此,接收功能采用DMA控制方式,发送则采用
普通的USART发送方式,并且接收的优先级高于发送的优先级。
    S TM32F 103芯片中有USART与DMA功能,通过DMA请求或软件设置方
式触发DMA通道,提高设备到存储器和存储器到设备的数据传输速度。它的执
行过程见图3-10,一旦检测到接收端USART Rx有数据,DMA就向CPU发出
请求,CPU接收到请求后,就将控制权交给DMA,  DMA将接收到的数据存到
对应的内存单元中
控制的这段期间内
只有当接收完全部数据时,才会将控制权交还给CPU o DMA
数据传输过程全部交由DMA控制器,不需要CPU的任何
干预,大大地减省了CPU的资源。


986335cdd0ea394a18.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:18 | 显示全部楼层
492115cdd0eb362b66.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:18 | 显示全部楼层
2645cdd0ec1f3164.png 457805cdd0eca89945.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:19 | 显示全部楼层
155665cdd0ee0146ac.png 611935cdd0eea5e21e.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:19 | 显示全部楼层
    按照上述配置好定时器后,便可进行帧间隔的检测,图3-13是通过示波器
显示的帧间隔检测波形图。通道1为帧间隔检测的标志波形,通道2的波形为
DP总线上的一帧数据的波形。总线空闲时处于高电平状态,此时通道1的标志
位处于低电平,一旦有数据就会出现高低电平的跳变,当检测到第一个下降沿来
临时,就启动定时器的复位从模式功能,此时标志位处于高电平状态,表明这期
间接收的数据属于一帧数据,一直到总线处于空闲状态的时间大于12Tbit,这时
定时器定时溢出,帧间隔检测标志位置低电平,表明一帧数据已经接收完毕。在
帧间隔检测标志位处于高电平时对应通道2的数据为一帧完整的数据帧。
755705cdd0f06f243e.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:19 | 显示全部楼层
413735cdd0f1c4a482.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:20 | 显示全部楼层
    从站与主站通信是采用异步串行通信方式,该通信方式需保证通信双方具有
一致的通信波特率。因此,DP从站与主站建立通信之前需要先识别主站的发送
波特率。设置通信的波特率可以选择硬件设置方式或软件自动识别方式。为方便
用户使用,本文采用软件自动识别方式,用户使用DP从站时不需要设置波特率,
它会在通信过程中自动设置通信波特率。
    目前,常见的波特率自适应的方法[}2},so]有以下三种:标准波特率穷举法、码
元宽度实时检测法、最大公约数法。
1)标准波特率穷举法
    从字面意思很容易就知道,标准波特率穷举法是尝试着用每个固定的波特率
接收主机发出的数据,比对接收的数据是否与主机发送的一致,若一致,说明该
波特率就是主机发送的波特率,若不一致就换下一个波特率进行接收,继续比对,
直到一致为止。该方法适用于主机发送的波特率在有限个固定的数值之间变化,
另外还需得知主机发送的特定字符,运用起来有一定的局限性,但思想简单,占
用CPU资源少。
2)码元宽度实时检测法
    主机按要求发送给从机某一数据,从机通过定时器测量串口通信的RXD引
脚上输入数据的码元宽度,这样通过计算得到通信的波特率,相对于标准波特率
穷举法而言,使用范围较广,但在算法上复杂度相对有些提高,占用CPU的资
源也相应变多。
3)最大公约数法
    最大公约数法的最大特点是可以不需要主机向从机发送规定的数据,无论主
机发送什么数据,从机都可以根据该数据自动识别主站发送的波特率,从而调整
接收的波特率,以便下次数据接收正确。该方法对RXD引脚不断地测量高低电
平脉冲持续的时间,测出来的时间正好都是tlh;t的整数倍,因此,只要求出最小
公约数值,就能知道tlb、的大小,即可知通信波特率。这种方法使用场合广,但
比前两种要复杂,考虑到MCU资源有限,越简单越好。
    Profibus-DP协议中,主站和从站通信的波特率都是一些固定标准的波特率:
9.2Kbps, 19.2 Kbps, 45.45 Kbps、93.75 Kbps, 187.5 Kbps、500 Kbps、1. SMbps、
3Mbps,  6Mbps,  12Mbps,且也给出了Profibus-DP协议中发送的帧格式,有固
定的帧头。根据这两特点,考虑微处理器的资源有限,尽量选择简单的算法实现
需要的功能。因此,标准波特率穷举法较另两种方法来说更加适合,虽然方法比
较笨,但算法最简单。
    因此选用该方法来实现波特率自适应功能。从站一开始以某一波特率尝试接
收主站发送的数据,若使用该波特率接收到的数据不是规定的格式,则寻找下一
个波特率进行接收,直到与主站发送的数据相同为止,从而确定通信的波特率,
实现了波特率自适应的功能。该方法虽然比较笨,但很简单,占用微控制器的资
源最少。

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:21 | 显示全部楼层
貌似 虽然 STM32 可以直接实现 DP 但是,感觉不如ASIC 稳定!而且 工业现场,一般人不一定敢用!

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:21 | 显示全部楼层
3.2.4从站地址设定
    主站与从站通信时需要确定从站的地址,所以DP从站上电后,需要在与主
站通信之前完成从站地址的设定。用7个DIP开关设定从站地址,每个开关有开
与关两个状态,从硬件电路图中可以看出,在开关处于关状态时,I/O口保持为
高电平,即为“1”状态,反之,开状态即为“0”状态,用二进制编码来设定从
站的地址,在软件上只要读取I/O口的状态即可以得到从站的地址。比如读取7
个DIP开关的二进制值为0000010,表示从站地址为Ox02o
3.2.5看门狗
    为增强系统运行的可靠性,增加了两个看门狗:一个用于监控整个DP从站,
比如受到外界的电磁干扰,导致DP从站的程序跑飞而不能正常运行,该看门狗
可将整个系统复位,重新执行程序中的指令。另一个是DP协议中需要的,在主
站与从站进入数据交换阶段时,若主站长时间未与从站进行数据交换,此时从站
将退出与主站的数据交换阶段,而是由数据交换阶段重新进入参数化阶段,要求
主站重新对从站进行参数化组态等过程后才可重新进入数据交换阶段。
    这两个看门狗所应用的场合不同,在实现方面也有所区别,第一个看门狗用
于整个系统的监控,称为系统看门狗,可由STM32F 103内部已经存在的看门狗
来实现,看门狗溢出时将整个系统复位。而另一个看门狗是监控DP协议的,其
看门狗系数由主站对其参数化帧中设定,也只有在数据交换阶段才开启看门狗功
能。用S TM32F 103芯片内部的定时器实现,正常通信一次就喂一次狗,即复位
定时器的计数寄存器。如果主站在看门狗的超出看门时间后,还没有发出数据帧,
这时从站就从数据交换阶段进入参数化阶段,要求主站对从站重新参数化组态。

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:21 | 显示全部楼层
570795cdd0f88000a9.png 952975cdd0f8f47042.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:22 | 显示全部楼层
257445cdd0f9c90495.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:25 | 显示全部楼层
593535cdd0fad8ac0a.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:30 | 显示全部楼层
804665cdd119511711.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:31 | 显示全部楼层
150455cdd11a240b40.png 187635cdd11b486f7d.png 329595cdd11bbcd0aa.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:31 | 显示全部楼层
284395cdd11d190f55.png 639025cdd11d702ab3.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:31 | 显示全部楼层
    本章具体介绍了DP从站从硬件电路到软件设计的整个实现过程。在硬件电
路设计上,虽然DP从站的硬件电路比较简单,但要保证通信的可靠性需要注意
到各个细节,PCB设计时需要注意器件间的排放、走线、还有选择合适的终端
电阻及上拉下拉电阻,若选择不合适,使得信号不能完整地传输,导致通信出现
异常,往往这些不起眼的电阻会影响到整个系统。另外,DP从站的软件部分,
合理地规划S TM32F 103芯片资源,使用了恰当的资源实现对应的功能,如采用
USART的DMA方式实现数据帧的接收,采用定时器的外部触发模式加复位从
模式实现帧间隔的识别,采取了合适的方法实现了DP从站的VO协议等等。采
用尽可能简便的方法实现所需要的功能,减少CPU的资源。

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:33 | 显示全部楼层
    每个产品开发完之后,都需要对其进行测量,看是否达到预期的目标。该从
站要完成预期的Profibus-DP VO协议,且实现单片机所完成不了的高速通信功
能。理论上计算,本文采用STM32F 103芯片软核实现的Profibus-DP从站其通信
速率最大为4. SMbps,完全满足预期的1. SMbps的通信速率指标,实际与理论计
算会有所差别,故需要进一步的测试。对该从站需要进行以下两项基本的测试:
一、测试该从站是否完成了Profibus-DP VO协议;二、能否实现高达1. SMbps
的通信速率。以上两项基本功能的测试,要求测试环境应在Profibus-DP通信网
络中进行,即让测试从站与市场上的主站进行通信。在搭建从站与主站的通信平
台之前需要每个从站预先准备好GSD文件,以便主站获知从站的特性、参数等。

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:33 | 显示全部楼层
    GSD文件(电子设备数据文件)是由从站生产商提供的,随着从站一同提
供给客户。从站生产商根据统一的格式完成GSD文件的书写,通过文本形式记
录了从站的各个属性,如支持的通信速率,是否有自动适应波特率功能,是否支
持从站地址设置,从站设备ID号等。GSD文件具有统一的格式,便于主站能够
迅速准确且可靠地获得从站的参数。
    GSD编写有专门的编写软件:Profibus GSD Editor,因为该GSD文件是以
文本形式进行记录的,所以也可以直接通过记事本对其进行编辑。GSD文件的
内容一般可分为三部分:总规范、与DP有关的规范及与DP从站有关的规范,
其中,生产厂商、硬件软件版本号、设备名称、设备试用协议等属于总规范;与
DP有关的规范主要与主站的各项参数有关,包括允许从站的个数、上传/下载的
能力等;而从站自身的一些参数属于与DP从站相关的规范,包括输入输出数据
长度、类型、诊断数据等。在GSD文件中,书写的基本格式为:keyword=value
其中value包括数字和字符串。
    GSD文件的工作机理如下图4-1,从图中能形象地看出GSD文件的作用,
建立主站与从站通信之前,需要通过二类主站加载各个从站的GSD文件,这里
的二类主站是计算机上的组态工具,该组态工具集成在一类主站上。二类主站完
成系统的组态后,可以将组态下载到一类主站上,同时一类主站也可将参数上传
到二类主站上,能进行在线修改。另外,一类主站和二类主站可以在两台机器上,
也可以在一台机器上,本文测试平台中一类主站和二类主站在同一台计算机上。

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:33 | 显示全部楼层
656525cdd1264070cf.png

使用特权

评论回复
goodluck09876|  楼主 | 2019-5-16 15:34 | 显示全部楼层
    GSD文件的标准规范可参照文献31,该文献中提到了GSD文件的编写规范
及相关的关键字,其中关键字分为四种:1)必填项,在GSD文件中必须包括所
有的必填项,如设备供应商名称、版本号、设备ID号、设备支持的协议、站点
类型等。2)选择项,可填也可不填,具体情况看从站是否支持该关键项。3)默
认项,如果在从站中未进行设置响应默认项的值,则默认值为0。如是否支持
FMS } 4)分组项,属于分组项的至少要在GSD文件中出现一个关键字,如波特
率的支持项,9.6_ supp,  19.2_ supp,  500_ supp,  1.5Mes supp至少一项出现在GSD
文件中。必填项中遗漏或分组项中出现某一成组中未出现任何一项,都会使组态
发生错误。本从站的GSD文件编写如下:
153945cdd127cc39fb.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则