描述:
当创建用户程序用于 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