发新帖我要提问
12
返回列表
打印

求教高手:at89c2051的单片机-PC 485通信问题

[复制链接]
楼主: zhumingxing
手机看帖
扫描二维码
随时随地手机跟帖
21
本帖最后由 冷漠 于 2010-5-14 18:45 编辑

请教20楼,75176本身是发送,接收互锁的,发送端使能禁止了接收通道,接收端使能断开了发送端通道;那么,如何把“输出反馈给输入以便于冲突检测处理。”这是RS485主从多机通信集中式网络,不是CAN多主分布式网络。RS485主从式通信方式需要冲突检测吗?它可能出现冲突吗?
要把UART改造成多主随机分布式通信方式,接口驱动应采用CAN总线驱动芯片82C250之类替换75176,(好像管脚兼容)82C250的发送接收通道才是内部相通的,(但是外部总线进来的数据和发送端阻断。)CAN通信控制器内部硬件实现了冲突检测,UART只能靠用户软件去实现,只能算一种省钱的技巧,不能成为标准,标准是CAN网络。SJA1000不到20元,但是要我用UART加82C250用软件检测冲突,我们的收费是每节点1,000RMB,——软件更贵,人的智力开销比硬件价值高。

使用特权

评论回复
22
zq1987731| | 2010-5-14 19:02 | 只看该作者
75176发送和接受并不互锁
        发送端和接收端需要分别使能,接收使能接地的目的便是【无限使能】,需要人来控制的只需要是【发送使能】
        然后发送端AB由差分信号走出去的同时本质上就反馈给自己的AB即接收,等同于【自己的A连A,B连B】
        另外谁说485只能一主多从了?至少我现在做的小东西上用到了485,都要求至少支持16个“主节点”进行控制,冲突检测自然是必须的,国外相当多的产品也是如此处理,毕竟这都成标准了。
        一主多从不加任何冲突检测的同时还用了不少delayms();以及while(TI){}结构的程序,如果是在校学生写的,可以说【有前途】,如果是研发工程师写的,那这工程师就是个砸公司招牌的混蛋!

使用特权

评论回复
23
hulx| | 2010-5-14 19:56 | 只看该作者
没看图就想到你收发数据格式不一致。16进制发送,字符格式接收不乱才怪。

使用特权

评论回复
24
冷漠| | 2010-5-16 20:40 | 只看该作者
本帖最后由 冷漠 于 2010-5-16 20:44 编辑

同意22楼。按照22楼的接法,单片75176可以通过外部差分总线完成自发自收。LZ用2片就没必要了,是吧?

另外有一点,“国外相当多的产品也是如此处理,毕竟这都成标准了。”麻烦22楼能否告知把RS232用75176改造成RS485是什么标准?在RS485接口上实现CSMA/CD 是什么标准?无论是企业标准还是行业标准都至少应该有一堆互连规约文件和名字,以便大家遵循标准便于产品互连对接;更不要说国标,军标,国际标准了。22楼是按照什么标准做的?假设我也按照同样标准执行,那么当然我们两家设备就可以对接互连,把你的标准给我一份。
我们用的75176 是在Intel80C152上的通信控制器SIU上连接的,通信控制器上有一个RTS(对应参考调制解调器上的CTS)启动发送信号管脚自动控制发送/接收端——无需程序控制的。发送帧(硬件)按照HDLC规约,OSI 数据链路层协议标准;硬件自动实现帧定序,接收确认与流量控制,发送失误的恢复,建立连接和释放数据链路等功能。仅英文互连标准资料就有8本。

专业术语咱也说不好。只知道像冲突检测这样的复杂技术都是由通信控制器内部硬件时序电路完成的。国际上曾经有一次著名的会议,会议上有一个人提出来计算机网络通信前端处理的观念(RS232绝对没有)从那以后,才有的通信控制器的概念——所有能用硬件完成的协议,都在OSI 物理层和数据链路层完成;(在网上才是软件完成)CSMA/CD必由硬件完成。所以小小CAN能够成为国际标准IEEE***。  提出建议的这个人由于他的建议导致了通信技术的革命而载入史册了。不过就是这么一个普通的建议。但是谁先提出来,想出来?我们现在不是还在想办法用75176实现载波侦听冲突检测?
   所以,恕我直言,我根本不会相信当今“国外相当多的产品也是如此处理”,除了在咱们中国。因为中国很少有人用前端处理器——通信控制器,因为它比MCU 硬件成本高;UART+75176 几乎不要钱,中国嵌入式工程师的智力开销——软件成本(软件处理冲突检测,流量控制.....)几乎为零。
所以,22楼如果能够拿出2000年以后国外产品有这么干的例证,我送你50分。再当众向你道歉。

推荐2本书:
1、《计算机网络——协议、标准与接口》【美】U.布莱克著   人邮出版社 1990年10月
2、《计算机通信网络——OSI协议图解入门》【日】小野钦司铃木健二 著,黑龙江科学技术出版社  1990年

20年前就有前端处理器了。书上1990年就写清楚了。CAN的中文资料也是10年前就写了的。

使用特权

评论回复
25
zhumingxing|  楼主 | 2010-5-17 09:09 | 只看该作者
您好:周末休息,所以没有看到您的回复,我这个程序在别的单片机开发板上面试过了,用232通信没问题,能正常接收。由于它是485发送,所以我的笔记本电脑接收就必须用485转232的hexin转换器啊 19# 冷漠

使用特权

评论回复
26
zhumingxing|  楼主 | 2010-5-17 09:23 | 只看该作者
另外,请问这个232转485的设备需要外接电源吗 19# 冷漠

使用特权

评论回复
27
tom3000| | 2010-5-17 09:27 | 只看该作者
关注下

使用特权

评论回复
28
zhumingxing|  楼主 | 2010-5-17 14:08 | 只看该作者
您好啊:前两天没上班所以没捞到看您的回复。我这个程序在别的单片机电路板上试过了,直接用232通信,没有问题,接收和预想的一样,就是不停的接收“123456”.由于最近的一个板子是用485通信,我想用PC接收数据,所以用HEXIN接收数据啊 19# 冷漠

使用特权

评论回复
29
zhumingxing|  楼主 | 2010-5-17 14:21 | 只看该作者
您好,我这个程序只接收,不发送,程序功能是不停的接收“123456”,所以发送端的设置就没有注意,呵呵 23# hulx

使用特权

评论回复
30
冷漠| | 2010-5-17 17:55 | 只看该作者
好办:
1、当然是将你的接收板485接口双绞线反向试试,75176发送/接收极性要对;
2、若有示波器,在笔记本一端双绞线上观测一下,看看HEXIN转接器到底发出来没有;缩小故障范围。
3、费点精神甩开笔记本,做2个和你接收板一样的转接板2个单片机RS232一发一收双机通信先训练好,然后两边接上485转接板,总该行吧。如若不行,当然问题集中在转接板:一共75176一个元件,没有示波器,用逻辑笔足够了。
4、都训练好了,再接笔记本。还不行?是HEXIN转接器的问题吧。
5、或者跳过2、3、4、5,直接把你的接收端75176电路也用一个HEXIN转接器代换呀。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
zhumingxing + 1
31
zhumingxing|  楼主 | 2010-5-18 12:49 | 只看该作者
本帖最后由 zhumingxing 于 2010-5-18 12:54 编辑

谢谢高手指点啊,佩服,接触单片机快一年了,感觉485最难弄 30# 冷漠

使用特权

评论回复
32
冷漠| | 2010-5-18 15:23 | 只看该作者
调通了以后,有什么经验告知一下,我也共享你的快乐。

最近突然又被其他公司拉去调试RS485,200米全双工双差分主从多机通信。应该叫RS422吧,反正软件都一样。不过接口驱动用的是MAX489。硬件对方设计好了的;头一次这么用——全双工组网。发送接收没遇到什么问题。需要电路图给你传一个。

使用特权

评论回复
33
zhumingxing|  楼主 | 2010-5-19 09:31 | 只看该作者
恩,谢谢高手啊,哈哈

使用特权

评论回复
34
zq1987731| | 2010-5-24 11:17 | 只看该作者
一段时间没上了,才发现有回复了...
To 冷漠
另外有一点,“国外相当多的产品也是如此处理,毕竟这都成标准了。”麻烦22楼能否告知把RS232用75176改造成RS485是什么标准?在RS485接口上实现CSMA/CD 是什么标准?无论是企业标准还是行业标准都至少应该有一堆互连规约文件和名字,以便大家遵循标准便于产品互连对接;更不要说国标,军标,国际标准了。22楼是按照什么标准做的?假设我也按照同样标准执行,那么当然我们两家设备就可以对接互连,把你的标准给我一份。
我们用的75176 是在Intel80C152上的通信控制器SIU上连接的,通信控制器上有一个RTS(对应参考调制解调器上的CTS)启动发送信号管脚自动控制发送/接收端——无需程序控制的。发送帧(硬件)按照HDLC规约,OSI 数据链路层协议标准;硬件自动实现帧定序,接收确认与流量控制,发送失误的恢复,建立连接和释放数据链路等功能。仅英文互连标准资料就有8本。

MCU本身提供的仅仅是UART接口,送出及接受的都只是TTL电平信号
RS485/RS422/RS232本身就是标准,具体用哪个取决于外部电平(协议)转换IC内部软件处理
那么何来“RS232用75176改造成RS485是什么标准”一说?!
我所指的国外相当多的产品也是如此处理,毕竟这都成标准了。实际产品多了去了,这里所谓的“标准”是对于高可靠性的通讯处理机制
大楼、马路、街道上随处可见的各品牌球机采用的都是RS485总线,区别仅仅是通讯协议、波特率不同,这种应用就是“多主485”的一种,实际应用中一般都会接N多个控制终端在总线上,同时又有那么几个品牌的球机喜欢收到数据的同时进行回码,也客串了起了"主机",这种情况下,从“一主多从”角度出发设计的简易玩具在这种场合能派得上用场?
专业术语咱也说不好。只知道像冲突检测这样的复杂技术都是由通信控制器内部硬件时序电路完成的。国际上曾经有一次著名的会议,会议上有一个人提出来计算机网络通信前端处理的观念(RS232绝对没有)从那以后,才有的通信控制器的概念——所有能用硬件完成的协议,都在OSI 物理层和数据链路层完成;(在网上才是软件完成)CSMA/CD必由硬件完成。所以小小CAN能够成为国际标准IEEE***。  提出建议的这个人由于他的建议导致了通信技术的革命而载入史册了。不过就是这么一个普通的建议。但是谁先提出来,想出来?我们现在不是还在想办法用75176实现载波侦听冲突检测?

所谓“RS485冲突检测”仅仅是软件里完善下收发机制,加入适当算法就能解决的问题,用得着如此麻烦?而且真正要求高速互联的设备我直接都上自带Ethernet+PHY的MCU了,直接挂个网络变压器什么都解决了,还能多N个卖点,比起成本省不到哪去的“UART+外挂CAN通信控制器”可要强太多了。
所以,恕我直言,我根本不会相信当今“国外相当多的产品也是如此处理”,除了在咱们中国。因为中国很少有人用前端处理器——通信控制器,因为它比MCU 硬件成本高;UART+75176 几乎不要钱,中国嵌入式工程师的智力开销——软件成本(软件处理冲突检测,流量控制.....)几乎为零。
所以,22楼如果能够拿出2000年以后国外产品有这么干的例证,我送你50分。再当众向你道歉。

“2000年以后国外产品有这么干的例证”,很不好意思...还是上面那个例子,安防行业的球机,控制终端,矩阵系统等等,凡是支持多终端同时控制的安防系统且该品牌不是中国的就是你根本不会相信的当今“国外相当多的产品也是如此处理”实例。
“嵌入式工程师”本就是脑力劳动者,客户有要求,努力去实现就是工作职责,就这一点全世界都一样,那么客户要求低成本的多主通信,实现得了,投入了相当的脑力,老板看到了给予大量的奖金,何来软件成本(软件处理冲突检测,流量控制.....)几乎为零一说?

使用特权

评论回复
35
草根白骨精| | 2010-5-25 09:24 | 只看该作者
硬件上没有问题,可能是你调试软件发送的是十六进制,而接收显示是字符显示,十六进制123传出去是 12 ,而3少一位没传,12不对应字符,所以显示____,您检查一下

使用特权

评论回复
36
冷漠| | 2010-5-25 11:36 | 只看该作者
本帖最后由 冷漠 于 2010-5-25 14:13 编辑

回34楼,国外产品会为了节省成本钱而用软件替代硬件?!那不是中国耶!你们公司请一个外国能做CSMA/CD 冲突处理 的软件工程师试试,看看他的工资是多少?也许他能做的你也能做,但是他就是比你工资高10倍不止吧。反正一般公司请不起。所以:

     中国软件工程师的工资只是可以和CAN控制器的硬件成本价格(25元一片)价值同级比较,(为了省25元一个节点而宁愿投入人工软件智力开销,算不算零成本?)老板一算,还是中国工程师的智力开销低,几乎零成本!比SJA1000CAN控制器(30RMB一个节点)还要低!结果当然采用RS485上玩多主仲裁,大不了烧掉几个75176。
    那么,请一个德国软件工程师来做这个方案试试?他会怎么干?很简单呀,老板付我10倍的工资,我一天能买一堆SJA1000CAN控制器,老板不肯出成本费,没事,我替他出,拿出我工资的十分之一就把方案改了。——做CAN多主仲裁方案比RS485上玩非标准仲裁方案,软件部分开销要小得多,可靠性、坚固性又高得多,每个节点硬件成本多不到50RMB,而我的日薪是1,000RMB ;几乎什么都不做还白拿年薪40W。在中国工作太轻松了。中国工程师做这个软件要耗多少心血?德国工程师一天就完成了,剩下时间玩去了。哈哈。
    咱还真没听说过,国外产品在可靠性方面节约成本的!硬件比软件可靠性高,34楼不会不承认这么简单的道理吧?你见过哪个现场总线标准在RS485上玩多主仲裁?你知道国外卖给中国核电站,或者是三峡发电站的现场总线上一个节点多少RMB?省钱?烧钱差不多。“能用硬件完成的绝不用软件”——控制系统设计的基本原则。
    34楼好不容易举了个什么例子?——玩具?玩具当然考虑成本。说了半天,RS485上玩多主仲裁到底是什么标准?我看了半天就印象是“马路边上的品牌球机”马路边上的产品是什么标准?马路边上,居委会街道边出现了国际品牌球机?问问国家体育总局买外国品牌球机考虑不考虑成本。敢不敢拿出来往马路、街道边上放玩?我特别注意看了一下我们马路边上的球机,——全部是国产品牌!说话要有依据。举个例子,你们马路边上的国际品牌球机是什么牌子的?多少$ 买的?若能说得出来,我输你一块大洋。
       绕来绕去还是没有结论呀。到底是什么标准?连GB都不是,国标我查过,都是以国际标准为参考,例如HDLC等等,中国目前还没有自己的通信标准。RS485上跑多主仲裁,很多明显的问题(最基本的,发生冲突时,会烧75176。)也许你说:短时间碰撞没关系?!这就是中国人的标准!?
       标准都是用钱堆出来的,哪有什么省钱的标准?开玩笑呢。国际品牌之所以大牌,是因为符合标准,甚至自己就是那个标准的始作俑者,像IBM的SDLC之类,你自己随便做个RS485 节点也许卖 500 RMB / 每节点,但是如果此节点符合现场总线Profibus(假设,没查。)标准,什么都没变,立刻价值20,000 RMB;就那个标准牌子值钱,买件汗衫,贴个E-LEND 熊,还得贵100多,什么标准牌子便宜省钱?没买过名牌?

       以为是中国,冷漠家会做土豆沙拉,于是开一家“小白桦俄罗斯西餐厅”,特聘 米高扬 • 瓦西里主厨,通过ISO9001国际认证,于是标准化啦。——菜价立马高了3倍。

单片机多机通信系统稳定性的研究.rar (167.71 KB)

教授烧75176,34楼就不烧?有什么诀窍也可以介绍给全国读者。

使用特权

评论回复
37
ejack| | 2010-5-25 12:36 | 只看该作者
年纪小小,嘴巴还挺硬……

使用特权

评论回复
38
zq1987731| | 2010-5-25 13:38 | 只看该作者
国外产品会为了节省成本钱而用软件替代硬件?!那不是中国!你们公司请一个外国能做CSMA/CD 冲突处理 的软件工程师试试,看看他的工资是多少?也许你也能做,他就比你工资高10倍不止吧。反正一般公司请不起。所以:


你去过国外实地考察过没?接触过多少国外成熟的产品?你怎么知道他们不会“为了节省成本钱而用软件替代硬件”?
我估计你接触的产品大多是价高量少类型,那种量能上100K的产品,你觉得软件成本和硬件成本到底谁高
关于485多主冲突检测及错误控制、重发机制,不过是在校期间的回家作业而已,这种程度的东西都解决不了的话,也算电子工程师


那么,请一个德国软件工程师来做这个方案试试?他会怎么干?很简单呀,老板付我10倍的工资,我一天能买一堆SJA1000CAN控制器,老板不用出成本费,我自己出钱,拿出我工资的十分之一就把方案改了。——做CAN多主仲裁方案比RS485上玩非标准仲裁方案,软件部分开销要小得多,可靠性、坚固性又高得多,每个节点硬件成本多不到50RMB,中国工程师做这个软件要耗多少心血?德国工程师一天就完成了,剩下时间玩去了。哈哈。
    咱还真没听说过,国外产品在可靠性方面节约成本的!硬件比软件可靠性高,34楼不会不承认这么简单的道理吧?你见过哪个现场总线标准在RS485上玩多主仲裁?你知道国外卖给中国核电站,或者是三峡发电站的现场总线上一个节点多少RMB?省钱?“能用硬件完成的绝不用软件”——控制系统设计的基本原则。




既然身在中国,就必须考虑实际国情,论坛里老板多得是,每个节点硬件成本多不到50RMB,如果非要如此做不可,那到算了,可这偏偏属于无谓的浪费!看谁舍得!
而这仅仅是通过简单的软件处理外加EMC/EMI处理的75176硬件电路就能完成的任务!
不用说见过哪个现场总线标准在RS485上玩多主仲裁”了,我都已经实际做在产品里直接给看守所、交警指挥中心等地方使用了,485线上千米往外拖,中继器都有不少,如果可靠性、坚固性不高到一定程度,公安部的各项测试能通得过?他们敢用?


34楼举了些什么例子?——玩具?玩具当然考虑成本。说了半天,RS485上玩多主仲裁到底是什么标准?我看了半天就印象是“马路边上的品牌球机”马路边上的产品是什么标准?马路边上,居委会街道边出现了国际品牌球机?问问国家体育总局买外国品牌球机考虑不考虑成本。敢不敢拿出来往马路、街道边上放玩?我特别注意看了一下我们马路边上的球机,——全部是国产品牌!说话要有依据。举个例子,你们马路边上的国际品牌球机是什么牌子的?多少$ 买的?若能说得出来,我输你一块大洋。




知不知道马路上的环境到底有多恶劣?接触过EMC/EMI方面的人都知道,即使以可靠性见长的PLC控制的红绿灯,遭遇间接雷击时在马路上都有**的可能!在马路上用的球机要求难道会比室内用的低?还有,非常不好意思,周边出现较多的Panasonic球机你难道认为是国产的!一块大洋就不必了


绕来绕去还是没有结论呀。到底什么标准?连GB都不是,国标我查过,都是以国际标准为参考,例如HDLC等等,中国目前还没有自己的通信标准。RS485上跑多主仲裁,很多明显的问题(最基本的,发生冲突时,会烧75176。)短时间碰撞没关系?!这就是中国人的标准!




你依然没明白我指的“标准”为何物,34楼我说的很明确了,RS485上跑多主仲裁会烧75176?只能说硬件设计能力不行那么最基本的,发生冲突时,会烧75176。这个说法只能说明你们直接把75176出来的2个差分IO脚不经任何保护直接挂到485总线上去了,NTC/PTC、压敏电阻、TSS、TVS、共模电感……这些东西放着当花瓶用的?我这边为了简单测试下通讯的可靠性,直接一把镊子插到485的AB差分线上外加反插、频繁热插拔等现场可能的操作进行模拟,通讯从未崩溃过,那么加上保护电路成本2块钱的成本比起每个节点硬件成本多不到50RMB,哪个更好?!





使用特权

评论回复
39
zq1987731| | 2010-5-25 13:52 | 只看该作者
咱还真没听说过,国外产品在可靠性方面节约成本的!硬件比软件可靠性高,34楼不会不承认这么简单的道理吧?你见过哪个现场总线标准在RS485上玩多主仲裁?你知道国外卖给中国核电站,或者是三峡发电站的现场总线上一个节点多少RMB?省钱?“能用硬件完成的绝不用软件”——控制系统设计的基本原则。

硬件比软件可靠性高?谁告诉你的?!
玩过CPLD/FPGA没?知道那些带仲裁的控制器都是怎么诞生么?知不知道有个行业叫做IC设计?!

使用特权

评论回复
40
zhumingxing|  楼主 | 2010-6-7 09:29 | 只看该作者
谢谢您啊,后来发现是232转485的问题,没想到质量那么差,谢谢 32# 冷漠

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则