循环通信之二——节拍

MChen

  • 帖子

    110
  • 精华

    3
  • 被关注

    49

论坛等级:侠圣

注册时间:2013-03-03

普通 普通 如何晋级?

发布于 2016-02-29 12:51:11

130楼

    操作系统的发展是从单任务变为多任务,对于多任务操作系统来说,CPU还只是一个,只是将CPU的运行时间分成一个一个的时间片,每个时间片运行一个任务,由于CPU的运行速度实在是太快了,这样多个任务看起来就像是同时在运行一样,提高了多任务的执行效率。

    同样总线系统也可以将通信时间分成一个一个时间片,每个时间片传输若干设备的数据,从而提高了通信的效率。这个时间片就是节拍(Phase)。可以说,节拍就是PROFINET IO系统的心跳。

                                           

    生产流水线就是将整个工序分成若干步骤,周而复始的运转。这里请大家把图5-10想象成Smart fortwo的组装生成线,可以看到经过四个阶段(Phase)后,车子已经安装上了四个轮子、两个座椅和一个车身,一台整车新鲜出炉。

    那么节拍是怎么算出来的呢?如果有读者是做嵌入式软件出身的,那么这个概念其实挺好理解的,就是参考了ARM体系结构中的概念。ARM的系统时钟是由外部时钟(晶振)通过提高频率得到的,比如说晶振电路通常可以提供12MHz的外部时钟,ARM就通过内部的一个倍频电路,将外部时钟提高若干倍数后得到系统时钟,也可以说是ARM的节拍。

    如果读者没有接触过ARM,没关系,可以想象一下钟表内部齿轮传动的场景:人们通过上紧的发条获得周期运动的动力,带动一个齿轮转动,那么该齿轮就作为主动齿轮,其旋转周期就相当于钟表的节拍。

而在PROFINET IO系统的循环通信中,节拍也是将基准时钟间隔放大一定倍数后所得到的,这个倍数就叫做发送因子(SendClockFactor),如公式所示:

 Phase = 31.25us * SendClockFactor

    SendClockFactor的取值是2N,N为0到9之间的整数。而基准时钟间隔是31.25us,是1ms的32分之一,为什么是这个数字呢?本人目前也没有想明白,这里想问一声:“元芳,你怎么看?”


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3429条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。