串口调试助手;速率19200或9600;偶校验;485-232转换头。
第一步发送:从站状态查询桢,也就是看看从站是死是活,(如果从站波特率是自适的话,那这一步得来两次,不然他不认识你的),正常情况下,发完第二次时从站已有回应了,回应的桢和发送的差不多的只是先后地址反了,OK,下一步...
第二步发送:读取查询从站的诊断报文,一般发出去后得到的数比发出去的数要多不少的,收到后下一步
第三步发送:从站参数化报文帧,如果没有问题的话会返回一个E5,记得一定要把西门子的狗给打死啊.
接下来的事情也就是进行数据交换了,读完高后再读低呀.
第二与第三步不分次序
以下是真正的主站与从站交换数据的过程
该状态机中有四个状态:
1、Power_On(上电)状态
在上电后从站进入Power_On状态,在这个状态下从站首先需要进行初始化,设置各项参数如站地址和报文缓冲区等等。
2、Wait-Prm(等待参数化)状态
初始化完毕后,从站进入Wait-Prm状态,等待来自一个主站的Set_Prm报文。通俗地讲,参数化相当于一个主站告诉一个从站,你是属于我的,同时也指定了从站的一些运行参数。主站只对被它参数化的从站进行数据轮询。
3、Wait_Cfg(等待组态)状态
在进行正确的参数化后,从站进入Wait_Cfg状态,等待Check_Cfg报文。Check_Cfg报文规定输入和输出字节数,也就是主站和从站每次交换的数据量。
4、Data_Exchange(数据交换)状态
当进行正确的参数化和组态后,从站进入Data_Exchange状态,这个时候从站才可以和主站进行正常的数据交换。
下面是我从一个PROFIBUS-DP网络中采集下来的部分报文数据,该网络中有一站地址为1的主站和站地址为3的从站。我结合有关报文解释一下从站3的工作机制。(报文数据为16进制)
......
(从站已经完成初始化)
......
10 03 01 49 4D 16
(该报文为主站1发给从站3的请求帧,查询从站3的FDL状态,即从站3是否“活着”。)
10 01 03 00 04 16
(该报文为从站3对主站1的应答帧,告诉主站1“我活着呢”。)
.....
68 05 05 68 83 81 6D 3C 3E EB 16
(该报文为主站1发给从站3的请求帧,读取查询从站3的诊断报文,以获取从站3的进一步信息。)
68 0B 0B 68 81 83 08 3E %
阅读(4037) | 评论(0) | 转发(0) |