首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

串口通讯:机器召唤为9bit方式?(怎么正确通讯)

2013-11-13 
串口通讯:机器召唤为9bit方式?(如何正确通讯)坛子里的老前辈们,你们好,据资深编程人员说,这种机器召唤为9b

串口通讯:机器召唤为9bit方式?(如何正确通讯)
坛子里的老前辈们,你们好,据资深编程人员说,这种机器召唤为9bit方式的串口通讯,只有四十岁以上的人员才比较熟悉,不知道该坛里有没有高手,指教指教,谢谢。

我在以前的一个帖子里说过这种表的通讯协议:
1.机器召唤方式为9bit方式,命令分单字节和多字节命令;
2.单字节命令(读有关数据)
  格式:
       ×××    _ _ _ _ _
        命令      机号(0~31)    
   如00100001为读取一号表累计量等数据
   下位机(仪表)每次向上位机(PC机)传送16个字节,其中包括15个数据和1个累加和。

——————————————————————————————————————————————

我通过串口发送给仪表的指令就按通讯协议第2条写的那样,循环发送&H21(机号为1的仪表)、&H22……,读取仪表1、仪表2……数据。

现在的问题是,我已经读出两块表(或更多,仪表连接方式工,485接口并接,最后到串口)的数据,但是读取数据程序运行一段时间后该仪表的瞬时流量就会紊乱,要么负的几千t/h,或者八九千t/h,经检查,该仪表的ptk(综合参数)被修改,该参数一般都是1左右,就是手工调节也就最大调到10,而程序运行一段时间后,该值被修改成三四十,读数程序读取到的数据一直是正确的,跟仪表显示的数据完全一致。

如何解决这个问题?发送的指令不正确?即使不正确,为什么读数又正常呢?
最主要的是这个9bit方式的真正内涵是什么?

望各位前辈们指导指导,谢谢!




[解决办法]
发送的位其实有 起始位(1位),数据位(6~8位),校验位(0~1位),停止位(1~2位)
每个字节包括了这些内容,第九的意思是把校验位设置成mark,所以并不用额外多发数据,
九位通讯应该是这么个流程
打开串口》》设置通讯参数 9600,m,8,1 (注意,这里是m)
然后发送地址码过去,如&H21
发完之后关闭串口》设置通讯参数9600,s,8,1(这里改为s)
然后发送后续的内容如&H01
这就完成一个通讯过程了。
仪表会返回数据我就不清楚了,或者不是这样的通讯方式。
[解决办法]
是这样的:

RS-485 多从机通讯协议把地址广播和数据传输分成了两种格式:

1 9-bit 格式用来供主机发送从机地址。地址匹配的从机将转入 Active 状态准备接收命令,而其他从机将保持 Idle。

2 一般情况下,数据传输格式采用 8-bit 格式。在一次地址广播后,只能传送一个命令应答对。Active 从机在发送应答后,重新回到等待地址广播的状态。

如果你的系统采用的是这种协议,检查一下你的操作是否符合协议要求。

热点排行