EDN首页   博客首页

日志档案

发表于 2007-9-3 21:34:44

2

标签: RS485  

基于RS485和VB6.0的PC机与51单片机多机通信

前一段时间主要做了几个小项目,都是单片机与PC机的串行通信,采用RS485,上位机采用VB6.0语言编写软件。

自己看VB有一段时间了,终于等到用的机会,现在学习的程度还可以完全够用。

单片机采用了51单片机,多机通信中采用了利SM2来区分是数据还是地址,效果还可以。其中RS485部分采用了隔离转换电路,采用高速光耦6N137,效果很好。

 

通信规则:

波特率9600   11位异步串行通信   1位起始位,8位数据位,1为地址/数据控制位  一位停止位    采用和校验不采用奇偶校验   地址、数据控制位是1为地址,0为数据。

 

例如实验采用2台下位机:

第一号机地址为01H

第二号机地址为02H

 

 

 

上位机程序流程:

1.       发送地址帧:A6+地址+

2.       接受下位机应答:地址+0+校验和+

3.       若应答正确发送请求数据命令:A5+地址+

4.       上位机返回数据:A5+数据+校验和+

5.       上位机计算数据并显示

注:A6A5为命令起始字节。?为结束字节。初始化所有的从机都采用接受状态,接受上位机的数据判断若地址与本机相符,就清SM2否则继续监听。

 

实验中主要遇到了以下几个问题:

1.       建议PC机采用的RS232RS485转换头最好采用带隔离的那种,否则有时在实验室就能发现通信不正常现象。

2.       在上位机或下位机发送数据时发送的数据要采用延时,当发完数据后也要加一段延时再进行接收,而这些时间我发现不同的系统是不一样的,我是经过实验来确定的时间的。

3.       单片机中我采用的是中断的方式进行发送和接收。

4.       VB6.0中发送地址时控件MSCOMM控件采用9600,M,8,1然后改为9600,S,8,1状态准备接受单片机的数据,发送数据时就采用9600,S,8,1状态。

5.       在进行多机通信时发现有时发送数据出现错误,例如先进行一号机进行通信,通信正常,再通信2号机发现通信错误,通过仿真器观察2号机接受的数据不读,多接受数据的个数不对,研究很长时间没有找到病根,后来发现网上别人也出现过问题,不过他好像是改成查询方式就好了,而我最后在VB中采用了出错自动重发解决了这个问题。

6.  看了很多的电路图,都是在485的输出端冰上120欧的匹配电阻,这是对的,但是挂多机时要还挂个120的电阻形成回路,这个我实验时发现不对,只能挂一个120欧的电阻。

系统分类: 通信网络   |   用户分类: 经验总结   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1712)    回复(20)  

投一票您将和博主都有获奖机会!

  • kruskal

    2007-9-4 20:07:42

    楼主能不能将这个例子完整的代码打包发给我  本人正在作这方面(VB多机通信)的项目 苦于找不到例子  可以的话留个QQ  有问题还需请教你  zhou611342@163.com   不甚感激!!!!

  • niepan

    2007-9-4 22:42:26

    能给我也发一个么,谢过

    smniepan@163.com

  • 康伟

    2007-9-8 11:31:57

    我正好也需要! 谢谢了!

    xuyingkang2004@163.com

  • mm

    2007-9-8 23:40:35

    我也要一份

    airport135@163.com

  • lianghongzhi2005

    2007-9-10 21:23:36

    要经常更新啊

  • benben

    2007-9-11 7:16:05

    也请发给我一份

    zhyangglare@163.com

  • guanwei0412

    2007-9-14 15:18:52

    我也想要一份啊....能帮我传一份吗...谢谢了!!!

    guanwei0412@163.com

  • qq

    2007-9-26 10:05:05

    我也要,谢谢楼主!

    quliming118@163.com

    期待中......

  • stephen100

    2007-9-29 16:09:45

    给我也来一份:wangyd_sea@163.com

  • wp007

    2007-10-1 21:19:16

    我也想要一份啊,帮我传一下,谢谢了!!!

    towp007@163.com@163.com

  • WW

    2007-11-14 20:16:36

    我也想要一份

    xiaoxiao112003@163.com

  • 红军

    2007-11-29 19:06:39

    我也想要一份  谢谢!!

    youaremydream@163.com

  • zhangye

    2008-3-24 15:23:31

    给我也来一份 谢谢啊 wohuifei927@163.com

  • fengwumin

    2008-3-27 17:34:38

    我也要一份 123152962@qq.com

  • dandan

    2008-4-11 22:33:58

    您好,我正在做这方面的毕业设计,正苦于找不到相关资料呢,如果可以您能给我发一分吗?真的很感谢您,你的资料对我的毕业至关重要! 我的邮箱是:wanglili20021984@126.com

  • ps

    2008-4-16 10:54:08

    请这里也发一个: ps_p@163.com

  • JX

    2008-5-7 16:58:02

    S010300333B@fzu.edu.cn大哥发一个吧

  • dahai369

    2008-6-6 21:02:43

    读了阁下的文章,茅塞顿开!谢谢与大家分享你的富有价值的感受!

  • qdhanxiao

    2008-6-13 14:56:36

    我正在做485通讯测试,一直没做好,请楼主给我发一个吧jyhanxiao@126.com

  • huli184

    2008-9-17 13:27:25

    学习了。