函数库 IIoDrvAcyclicServices.library 提供 ICmpIoDrvPNAcyclicServices 的接口。一个驱动器必须实例化它的接口这样有些功能才能被用户使用。
一个 IO driver 实例化一个接口通常被看做是一个功能块。这个接口方法是功能块的方法用户可以通过 IO driver 的实例名称进行调用。这个 IO driver 的实例在设备被添加到 ⇘ 设备树中时自动添加。接口的名称可以在设备树中读取;在一个 IEC 应用中实例名称可以通过函数库 ⇘ IoStandard的帮助进行重新调用。
一个服务的处理状态被作为服务的输入结构体被存储。一个服务完成的处理周期需要周期性的调用方法。
处理是从 xEnable 的上升沿开始的。处理完成时输出可以获得,如果处理的状态为 PN_ACYCLIC_STATE_INVALID_PARAM, DPV1_ PN_ACYCLIC_STATE_ERROR 或者 PN_ACYCLIC_STATE_DON。如果变量 bEnable 被复位,输出将会被重新初始化并且一个新的服务将会启动。
一个非循环服务的过程状态将会有以下值:
PN_ACYCLIC_STATE_NOT_ENABLED : WORD := 0; |
处理没有启动。服务位于初始化状态。 |
PN_ACYCLIC_STATE_INVALID_PARAM : WORD := 1; |
处理进行,但是当前参数不可获取。 |
PN_ACYCLIC_STATE_PENDING : WORD := 2; |
服务顺利启动现在仍在处理。 |
PN_ACYCLIC_STATE_DONE : WORD := 3; |
服务成功完成,输出可以获取。 |
PN_ACYCLIC_STATE_ERROR : WORD := 4; |
服务处理失败;错误代码指示错误原因。 |
PN_ACYCLIC_STATE_RETRY : WORD := 5; |
服务因为某种原因停止并将重新启动。 |