quote:以下是引用纯属虚构在2014-03-19 09:05:14的发言:quote:以下是引用Zane在2014-03-18 21:43:26的发言:quote:以下是引用纯属虚构在2014-03-18 19:25:46的发言:quote:以下是引用Zane在2014-03-18 18:16:15的发言:quote:以下是引用纯属虚构在2014-03-18 10:36:35的发言:quote:以下是引用Zane在2014-03-16 16:39:09的发言:经常使用DP/PN诊断功能块FB126作为系统现场总线的站级诊断,随着系统架构的日趋复杂,多条总线的应用,发现要从诊断数据块中取出对应从站的诊断数据也并非易事,很容易出错,还是让机器自己去算吧,于是根据FB126的说明书,编写了个FB126诊断数据块的从站诊断数据译码的功能块,只要输入诊断数据块的块号,总线序号(详见FB126的说明),总线类型,站地址或设备号这几个参数,就能取出指定从站的诊断数据,比如通讯故障等,可以赋值标志位。编程比较灵活,一个从站调用一次,可随意增减,没有顺序限制。
附件为源程序代码,有兴趣大家可以一试,FB1为译码功能块,FB2为调用示例
点击此处查看附件点击此处查看附件
Zane 斑FB126说明中尚未清楚总线序号是在哪里读取啊
呵呵,总线序号的定义及站点故障标志位偏移量的计算在FB126的说明书里都有
站点故障标志位偏移量的计算在文档里面看见了,总线序号的定义就有点摸不着了。
另外我也用你的程序测试了下,为啥诊断DP总线的时候Failed也是出现code108,不应是code128吗?难道还有哪边未设置?



这是计算方法
其中DP总线2、5、12的总线序号为1、2、3,PN总线102、107的总线序号为4、5
CODE128是DPV1的代码,DPV0及PN的代码是CODE108
sorry ,看的有些随意了没有注意DPV0与DPV1的区别,想当然的认为是同一个了。还有个问题现在使用PN总线100,总线序号也是1,这是怎么回事?这个总线序号在硬件组态内是否可以设置?
是按照MASTER SYSTEM或者I/O SYSTEM 的SYSTEM NUMBER的大小来排序的,DP总线从0开始,PN总线从100开始,所以DP与PN共存的前提下,DP总线序号在前,如果只用PN总线,那也是从1开始的。