Skip to main content

应用中的诊断

PROFINET 控制器配备用于诊断数据的内部缓冲区。这个“影子数据库”在后台通过设备发送的警报和用于建立连接的非循环服务不断更新(对用户透明)。通过这种方式,所有设备的实际诊断状态都会以最小的延迟反映在主机应用程序中,并且可以随时在那里进行评估。或者或另外,应用程序可以接收单独的警报(CommFB.RALARM) 或重新读取诊断数据 (CommFB.RDREC)。

的API ProfinetCommon通讯FB 此处描述的库对于 CODESYS PROFINET 堆栈以及 CIFX 解决方案。但是,CIFX 解决方案并未完全实施个别服务(请参阅数据表)。有关代码示例,请参阅下面列出的功能块的库文档。

设备功能块

对于每个 PROFINET 在设备树中,创建一个功能块,提供有关设备连接或配置状态的基本信息。例如,请求诊断条目或有偏差的模块配置。

_pnio_img_device_fb.png

同理,也为控制器创建一个功能块实例,提供控制器运行状态的信息。 PROFINET 控制器。

有关更多信息,请参阅: IoDrvProfinet.ProfinetControllerIoDrvProfinet.PNSlave

提供者和消费者状态

此状态信息始终与 I/O 数据一起传输。它可以添加到 CODESYS 相应模块的 I/O 映射。

警报

发送的警报 PROFINET 设备可以通过接收 CommFB.RALARM 功能块。有关信息评估的代码示例,请参阅库文档 ProfinetCommon.DiagnosisDataReader.

设备和子模块状态

除了直接访问输出 设备功能块,也可以使用 ProfinetCommon.DeviceIterator POU 迭代为控制器设计的所有设备。

以同样的方式, ProfinetCommon.SubmoduleIterator POU 用于迭代配置为 PROFINET 设备和用于评估个人 ProfinetCommon.SubmoduleState.

诊断缓冲区(诊断阴影)

随着 ProfinetCommon.DiagnosisDataBuffer POU,可以调用本地缓存在控制器“Shadowing Database”中的数据。

或者, ProfinetCommon.获取子模块诊断() 函数还可用于查询单个子模块的所有缓冲诊断条目。

错误代码和诊断文本

数字 PROFINET 错误代码(ErrorCodeExtErrorCode) 可以通过上述函数和功能块来调用。如果应用程序中需要相应的文本描述(例如,在可视化中显示),则需要单独下载这些文本描述。有关更多信息,请参阅: 命令:添加PROFINET诊断资源