基金会现场总线系统中功能块的调度与通信
对功能块的执行的调度也是由系统管理内核来管理的,通过对系统管理信息库中的FBStart参数进行组态来实现对功能块运行的调度。
FBStart的定义如下所示:
struct
{
unsignedlongstart_time_oFFset;
unsignedshortfb_object_index;
unsignedlongvfd_ref;
}FB_START_ENTRY;
其中,start_time_oFFset表示功能块开始执行的时间,这个参数是一个相对与宏周期的时间偏差。它的单位是1/32毫秒。宏周期是指整个网络上功能块应用的执行时间,功能块的调度和数据传输的调度都是以宏周期为时间基准来进行周期性调度的。它的单位也是1/32毫秒。
fb_object_index表示与这个FBStart项相关联的功能块的数据字典索引,即要执行的功能块的起始索引。这个参数用于标识要执行的功能块。
vfd_ref表示这个FBStart相关的VFD号,即要执行的功能块在哪个VFD里。
而数据传输的调度是由链路活动调度器(LAS)来实现的。组态完成以后,在链路活动调度器(LAS)设备中就生成了一个调度表,这个调度表有一定的格式,LAS通过对这个调度表的读取来进行数据传输的调度,即在特定的时间给特定的设备发送强制令牌(CD)报文来强制现场设备把要发送的实时数据发送出去。这个时间是严格准确的,能够确保正确的数据在需要的时间传输。现场设备在收到CD后立刻将缓冲区内的数据发布到总线上,缓冲区内的数据是由功能块执行以后写入的。
下面一个以典型的PID控制回路为例来说明FF系统中功能块的调度。
图1一个典型的PID控制回路
如图1所示为一个典型的PID控制回路,图中AI功能块和PID功能块在一个设备中,AO功能块在另一个设备中。控制过程如下:AI功能块的输出(OUT)参数送到PID的输入(IN)参数,PID的输出(OUT)参数送到AO的级联输入(CAS_IN)参数,而AO的回算输出(BKCAL_OUT)参数送到PID的回算输入(BKCAL_IN)参数。从而完成一个PID闭环控制。
由此形成的调度如下图所示:
图2 PID控制回路的调度
图2中,LoopTime(即宏周期)是1秒,蓝颜色的框是功能块的执行时间,红颜色的框是功能块执行后在总线上发布数据的时间。由于AI功能块和PID功能块在一个设备中,这部分的参数传递是通过本地接口实现的,在总线上是不可见的,故在图中没有这部分数据传输的显示。
组态完成后,在包含有AI功能块和PID功能块的设备(设备A)中应该有两个FBStart项,一个对应AI功能块的执行,start_time_oFFset应该是0,fb_object_index是AI功能块的起始索引;另一个对应PID功能块的执行,start_time_oFFset应该是640(20ms)。即在一个宏周期的起始处(偏移量为零),设备A的SMK调度AI功能块开始执行,得出输出值并送到本地的PID功能块。而在宏周期开始后的20毫秒处,设备A的SMK调度PID功能块开始执行,应用AI给的输入值,算出输出值,并放入缓冲区中,等待数据传输的调度令牌(CD)。而LAS根据调度表在宏周期开始后的40毫秒处,发出一个强制发送数据的令牌(CD)来把设备A缓冲区中的数据发布到网络上。设备B中只有一个AO功能块要执行,所以组态时只产生一个FBStart项用来对应AO功能块的执行,它的start_time_oFFset应该是1280(120毫秒)。设备B的AO功能块接收到从设备A的PID功能块发布的数据后,在宏周期开始后的120毫秒处,由设备B的SMK调度开始执行,并产生输出数据对执行器进行操作,同时产生一个回算输出(BKCAL_OUT)值放到本地的缓冲区内,等待数据传输的调度令牌(CD)。而LAS根据调度表在宏周期开始后的140毫秒处,发出一个强制发送数据的令牌(CD)来把设备B缓冲区中的数据发布到网络上。设备A中的PID功能块应用这个回算值和AI的输出值,调整执行后的输出值。从而完成一个PID的闭环控制。
4 结束语
基金会现场总线的功能块和功能块的调度是基金会现场总线应用的基础,也是基金会现场总线系统的特点和创新之一。通过对功能块调度的了解,可以深入的理解基金会现场总线的开放性和互操作性的概念。
现场总线调度与通 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)