关于IEC61499 标准中的适配器

学习IEC61499 标准时,对于适配器(adapter)的概念难以理解。这篇博文希望帮助你理解IEC61499 的adapter。

在设计IEC61499 应用中的一个问题如何保持清晰和可读性,在实际应用中,功能块会比较大,事件和数据的输入输出多,连线多而复杂。一个复杂一点的应用,连线密密麻麻,占据了大量的设计窗口空间,而且可读性比较差。IEC61499 的适配器(adapter)就是为了解决这个问题而设置的。

Adapter 就好比一个功能块之间连接的“电缆”“(图-1)。我们知道,一根通信电缆中可能包含多个信号线。并且由两个接头,一个接头称为插头(plug),另一个接头称为插座(socket)。同时对与每个插头而言,某些信号是输出插针,某些信号是输入插针。如果在插头上某个信号是输出的话,到了插座端便为输入。他们是对称的。记住了关于电缆的概念,有助于你理解IEC61499 的adapter。

你可以将adapter 比做硬件原理图中的总线(BUS),他们也是为了简化连线而设置的。

(图1)

在功能块接口定义中可以包含一个适配器(Adapter)的实例,并且以两种形式来使用它。既可以可以选择socket形式(相当于电缆的插座),也可以选择plug 方式(相当于电缆的插头)。plug和socket 是镜像对称的,如图-2所示。这意味着进入plug和socket的事件和数据从连接的另一端流出。

例如触发FB1插头interPlg 的EI1的导致FB2 插座interSkt接收到EI1 事件。同样地,在包含socket 的功能块中触发EO1 会导致plug 的EO1 事件的输出。

(图2)

在功能块中, Plug和socket的可以和功能块的输入/输出同样的方式使用。值得注意的是,在功能块的角度看,plug和socket的输出相当于功能块的输入,而Plug和socket 的输入相当于功能块的输出。他们向适配器的另一端发送事件和数据。这类似于通信接口定义中的DTE和DCE。站在不同的角度看,输入/输出是不同的。要不然会引起混淆。

适配器可以用于任何功能块类型(也就是基本,复合和服务接口功能块)。

 

定义适配器类型

适配器类型接口的定义和功能块类型定义类似,同样的方式建立输入/输出事件和输入/输出数据

输入输出数据可以通过WITH 与输入输出事件关联。

(图-3)

   这里也是会引起混淆的地方,适配器的输入与功能块输出对应,而输出和功能块的输入对应。但是前面我们已经提到过,适配器分成一对镜像对称的部分,一个是plugs,一个是sockets。但是令人遗憾的是适配器类型中定义的是该适配器所有的输入/输出事件和数据,包括plug和socket对中的输入和输出。其中有些输入在plug 端,有些输入在socket 端。输出事件和数据也是如此。至于那些输入事件在plug端,那些输入事件在socket端是需要额外定义的。在图-2中比较简单,将adapter 的所有事件和数据的输入放置在plug端,而所有的输出事件和数据放置在socket端。

   不过也可以不是这样的。例如在4diac-ide中新建的adpter 类型是这样的

(图-4)

从注释中可以看出,REQ是socket 端的事件输入,而RSP 是plug 的事件输入。同样地,REQD 是socket端的数据输入,而RSPD是plug的数据输入。

  对应地,CNF是plug的事件输出,IND是socket端的事件输出端。同样地,CNFD是plug端的数据输出,INDD是socket的数据输出。

对应的plug和socket如图-5 所示。

(图-5)

那么是如何来规定那些输入/输出属于plug ,那些输入/输出属于socket 的呢? 显然不是通过注释来定义的。事实上IEC61499 是通过服务序列图(service sequence diagrams)来定义的。

(图-6)

适配器在基本功能块中的使用

在基本功能块中,Plugs和sockets的输入和输出能够在执行控制图(ECC)和算法中使用。

在ECC 中,plugs和socket的输出事件能用来作为转移条件,而plugs和sockets的输入事件能够用于状态执行语句中。plugs和sockets的数据输入和输出能够在ECC 的转移调控和算法中使用。

(图-7)

适配器在复合功能块中的使用

   最直觉地在复合功能块中使用适配器,原因是将plug和socket 放置在复合功能块内部的的功能块网络中。

(图-8)

适配器在服务功能块中的使用

在标准中没有定义在服务功能块中使用。然而,plug和socket的输入和输出能够以功能块的输入输出类似的方式在服务序列中使用。

在功能块应用中使用适配器的好处

只有理解了使用适配器的好处,才能够更好的理解适配器。而且能够更加自觉地使用适配器功能。使用适配器的好处包括:

      减少了功能块输入输出的数量避免混淆。特别是两个功能块之间由反馈的情况之下。比如(图-9),没有描述交互过程的语义。不了解两个功能块之间事件交互的顺序。

(图-9)

 

可以将这两个功能块之间的事件和数据的连接使用adapter 代替。在adapter中清晰地定义交互过程(使用服务序列图)

(图-10)

服务序列图

(图-11)

构建复杂的功能块网络

功能块可以使用同类adapter 连接多个其它功能块。例如一个控制器功能块连接两个电机驱动功能块。他们之间使用一个motorCable 的适配器。

motorCable 适配器可能定义了多个事件和数据。比如start,speed,direction 等等。

 

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/107561562