发表于:2004-03-15 10:03:00
楼主
PROFIBUS-dp总线,使用SPC3开发下位机节点.现在已经基本上成功了,可是在接了很多下位机之后,当时在程序运行通信状态下,进行接线添加其
余的下位机,发现有时由于干扰的原因,造成个别的下位机通信不成功.在使用dpn_in_slv读取数据时,发现返回数据中
slv_state=DPN_SLV_STAT_NOT_READY_DIAG(The DP slave is not in the data transfer phase and diagnostic data exist.)
而上传数据为0(数据为无效),使用dpn_slv_diag读取该节点的信息.slv_state=DPN_SLV_STAT_READY(The DP slave is in the data
transfer phase),其中USER_DATA为诊断数据,为(00 0e 00 03 00 08)而工作正常时为(00 0c 00 03 00 08 ),这2组数据中唯一的区别为第二字
节,按SPC3的帮助中不同的位的含义:Diag.Stat_Diag (static diagnostics)(If the DP slave sets this bit, the DP master must fetch
diagnosticinformation and continue to fetch it until the bit is cleared again. The DP slave, for example, sets this bit when
it is not capable of providing valid user data.)
请问如何在下位机中检测该标志,或者如果检测SPC3工作是否正常,再一个检测到该标志为1(错误状态),时,如何不通过重新初始化方式而使spc3
重新工作正常,因为重新初始化,会造成该节点暂时停止通信.谢谢