求救!PC与单片机的多机通信 点击:1719 | 回复:11



jinanblue

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2003年8月06日
发表于:2003-10-05 17:17:00
楼主
小弟在作多机通信,上位机为PC机,下位机为多台单片机。单片机端使用MAX232进行通信。上位机对10台单片机循环扫描,单片机将数据传给计算机。上位机程序用Vc++编写。现在的问题是:单机通信,即PC和一台单片机通信没问题,但是将10台单片机都连到上位机上时,上位机却收不到正确的数据!10台单片机我采用对应接口连接的方式,即10台RXD,10台TXD连在一起,连到上位机的COM口上。哪位大虾知道这是什么原因?请不吝赐教,小弟感激不尽!



周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2003-09-15 19:38:00
1楼
这样不可以,多机通信应该用 RS485/422 总线电气标准。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-09-15 19:47:00
2楼
可以用MAX232,我毕业设计就用的这个。我住界面用VB编的,接收用汇编编的。

重庆变频器

  • 精华:4帖
  • 求助:0帖
  • 帖子:18帖 | 72回
  • 年度积分:0
  • 历史总积分:1165
  • 注册:2004年2月24日
发表于:2003-09-16 00:58:00
3楼
你在每个单片机上如果都用了MAX232芯片的话,就不能正常工作 你这样的接法使单片机的TX信号混在一起了。(接收可以这样接)。 你只能十台单片机共用一个MAX232芯片,即先十个单片机的TX 接在一起,再接MAX232X,并且每单片机在没有通信的时侯必须把TX端置为高电平,接收也一样。这种方法在89C51单片机可以通过。 你觉得我说的这方法有理,给我发信。

jinanblue

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2003年8月06日
发表于:2003-09-16 08:05:00
4楼
正如杨兄所言,小弟调试中自PC机发出的信号所有单片机都能正确接收,但单片机向PC机发送数据却老是出现问题。 你说的这种方法有一定道理。试验调试或许可以实现,但实际中多台单片机距离很远怎么办?TTL电平能传送这么远的距离吗?

程传胜

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2003年9月16日
发表于:2003-09-16 16:53:00
5楼
有个地方要加二极管!

重庆变频器

  • 精华:4帖
  • 求助:0帖
  • 帖子:18帖 | 72回
  • 年度积分:0
  • 历史总积分:1165
  • 注册:2004年2月24日
发表于:2003-09-16 17:22:00
6楼
如果距离远,每个单片机都将使用MX232的话,就要想办法隔离各单机的TX信号,要保证每一时刻只有一个单机的TX信号和PC机联接, 目前可能只有使用继电器的常开触点,单片机平时处于接收状态,收到PC机的查询信号后,通过一个端口去控制自己的继电器接通自己的TX信号线到PC机,通信完毕后必须释放继电器触点,以供其它单机使用。RS485通信就是有这样一个隔离功能才使它上面可以并联许多单机(它是通过一IC芯片完成隔离功能的),这样要多占用一个端口,还要修改程序,但绝对可以使用了。

jinanblue

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2003年8月06日
发表于:2003-09-16 19:04:00
7楼
不知楼上程兄所言加二极管是在何处?我用的可是max232啊? 还有感谢杨兄帮忙想的办法,我觉得有必要一试。

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-10-05 17:17:00
8楼
应再加一个片选信号

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2005-01-14 15:13:00
9楼
简单,你说的这个我碰到过的,每个单片机tx端加二极管,极性为....单片机端为正,对着计算机端的为负,这样能保证数据正确的发送

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2005-01-14 15:18:00
10楼
刚刚说的不全面,是每个单片机对应的232芯片的发送端接二极管,也就是txd对应转换出的232信号引脚处要加二极管,方向为:对着计算机的方向为负,对着232芯片的为正,这样就可以解决信号串扰问题

mtwang

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 31回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2002年12月23日
发表于:2005-01-19 18:49:00
11楼
暈 這是用 典型daisy chain 線路 就ok 啦

热门招聘
相关主题

官方公众号

智造工程师