通过用户程序进行 IO 数据的同步交换

描述:
当创建用户程序用于 PROFINET IO 设备在 PROFINET 网络上进行 IO 数据交换时,需注意以下几点。n

  • 操作中进行数据交换
    对于 RT,通常在连续的循环程序中完成,每个循环调用一次 PNIO_initiate_data_read()PNIO_initiate_data_write(),调用后等待的时间可进行指定 (例如使用 OsWait_ms ),或者通过外部标识位对程序块进行周期性触发。

    对于 IRT,回叫功能 (StartOp) 告知程序此刻需要调用 PNIO_initiate_data_read()PNIO_initiate_data_write()。可以通过 StartOp CBF 直接实现或通过 CBF 触发标识位也可进行如 RT 中的周期性 IO 数据交换。

    因此,从应用角度看,RT 和 IRT 的处理是类似的。

  • 在 Param End和 Application Ready 间进行第一次有效的 IO 数据交换
    在 RT 实例程序中,IO 数据交换直接由 ParamEnd CBF 触发。以此保证有效的数据在 Application Ready 前进行发送。
    下列过程适用于 RT: n
    • 调用 ParamEnd CBF。n
    • 在 CBF 中调用函数块 PNIO_initiate_data_read()PNIO_initiate_data_write()。n
    • CBF 接受到返回状态 (PNIO_TRUE)。因此在堆栈中自动生成 Application Ready

    IRT 必须采用下列顺序:n

    • 调用 ParamEnd CBF 并随后根据返回值 (PNIO_FALSE) 将其关闭。 因而 Application Ready 不会在堆栈中自动生成。n
    • PROFINET IO 设备等待下一个 StartOp 并进行 IO 数据的同步交换,即在允许的时间范围内调用 PNIO_initiate_data_read()PNIO_initiate_data_write()。
    • 通过调用 PNIO_set_appl_state_ready(),PROFINET IO 设备返回 Application Ready 信号。

注意:

  • RT包含 RT_CLASS_1 和RT_CLASS_2。n
  • IRT包含 RT_CLASS_3 (总是同步的)。n
  • 对于IRT,程序对过程映像区的访问必须是同步的。
  • 源代码分别包含了 RT和 IRT 的实例程序,均体现了上述提及的注意事项。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc336208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论