
3.1.2 PLCopen运动控制功能块的概念和模型
1.功能块模型
在PLCopen制定的运动控制规范、安全控制规范和OPC UA通信规范中,都是用相应的功能块来表达其功能的。这些功能块用最少的输入和输出予以表达,图3-2给出两种功能块模型:①Execute(输入)和Done(输出)对;②Enable(输入)和Valid(输出)对。
编程时则用详细的变量来表达,如图3-3所示。

图3-2 两种功能块模块

图3-3 两种功能块模块的详细表达
2.运动控制规范中的功能块
PLCopen运动控制功能块的定义包括两个部分:激活部分和状态相关部分。激活功能块又有两个选项:Execute/Done和Enable/Valid。
1)Execute/Done:执行一个输入,触发功能块的执行;用相关的输出Done(或InVelocity、InGear、InTorque或InSync)表示功能块执行完成。
2)Enable/Valid:赋予一个对电平敏感的输入有效,同时Valid作为相关输出。
若使用Execute/Done对,在输入“Execute”的下降沿将复位输出“Done”“Error”“ErrorID”和“CommandAborted”。但“Execute”的下降沿并不会停止或影响已经激活的功能块的执行。即使在功能块完成其功能之前复位已经发生,也必须保证对应的输出能够至少一个周期内保持其设置的状态。如果某个功能块的实例在它完成之前又收到一个新的执行命令(例如,对同一个实例加上一串命令),功能块不必进行任何反馈。
若使用Enable/Valid对,在输入“Enable”的下降沿,输出“Valid”、“Enabled”、“Busy”、“Error”和“ErrorID”,会尽可能快地复位。
在运动控制规范的第一部分的V2.0中,增加了一个输入“ContinuousUpdate”。当功能块被触发(“Execute”上升沿)时,如果“ContinuousUpdate”为TRUE,而且只要它一直保持TRUE,则功能块使用输入变量的当前值作为正在进行的运动的参数。如果“ContinuousUpdate”为FALSE,且“Execute”输入处于上升沿,在整个运动中输入参数的改变被忽略,使用前一个周期的行为。
下面给出功能块有关输出的定义:
● Busy。功能块尚未执行完,新的输出值尚在形成中。在Execute输入的上升沿,Busy置1,而输出Done、Aborted和Error中的某一个置位可使Busy复位。
● Active。表示功能块已经控制该轴。
● Done。表示功能块已经成功地执行完了命令动作。
● CommandAborted。当前命令Command已不执行,被另一命令Command所替代。
● Error。功能块内已出错。
● ErrorID。出错标识。
为了说明运动控制功能块使用Execute/Done对的不同的行为时序图,以功能块MC_MoveAbsolute为例。在图3-4左侧示出MC_MoveAbsolute的一个实例,右侧是该实例的行为时序。在第一个周期(示例1),输入Execute触发功能块,输出Busy立即响应,稍有延迟后输出Active表示功能块已控制了轴Axis。在第一周期的后面时刻发生了输出CommandAborted,表示原来的命令已被另一个命令所替代。但功能块在第二个周期(示例2)仍然保持Busy和Active的状态,只是在第二周期结束前产生一个Error输出,Error使Busy复位。到第三周期(示例3),只要输入Execute上升沿触发,功能块的功能仍然在执行,Busy置1,由于没有出错和中止,因此,直至成功完成命令的动作,就产生输出Done。

图3-4 MC_MoveAbsolute执行的行为时序
3.安全规范中的功能块
PLCopen开发了安全的规范套件,努力保持与运动控制规范在功能块格式和安排上的一致性。
安全规范精简了数据类型和功能性,导入了安全数据类型SAFEBOOL。这意味着在功能块的输出方面,安全控制用的功能块与运动控制用的功能块的重叠更少。而且,由于二者的功能行为稍有不同,因此用Activate/Ready组合代替Execute/Done组合。图3-5为安全功能块的示例。

图3-5 安全功能块的示例
4.运用OPC UA通信的功能块
PLCopen开发的运用OPC UA进行通信的功能块,与运动控制规范对功能模块的规定一样,采用Execute/Done组合,并且在功能性上采用Busy、Error和ErrorID。如图3-6所示。
5.功能块模型小结
PLCopen开发的各种规范中,其功能块的共性可分为两级(见图3-7)。

图3-6 OPC UA通信功能块的示例

图3-7 公用的行为参数
● 功能块基本级。采用Execute/Done(或Activate/Ready),以及Busy、Error和ErrorID。ErrorID可以是整型数,也可以是字或双字。
● 扩展级。在基本级的基础上增加Active和CommandAborted。
表3-2是运动控制、安全控制和OPC UA通信规范所用参数的一览表。
表3-2 运动控制、安全控制和OPC UA通信规范所用参数的一览表

表中显示,在安全规范中采用DiagCode参数作为故障诊断的代码;Done输出参数在第1版中,不作为Enable类型功能块的输出,而在第2版中被规定作为其功能块的输出。Valid输出参数在第2版作为Execute类型功能块的输出参数等。
图3-7作为举例表示功能块所使用的输入和输出参数变量。