wagina 发表于 2009-8-13 11:04:46

请高手指教,我现在要做一个400个开关量的采集传输装置

请高手指教,我现在要做一个400个开关量的采集传输装置,采样周期<20ms,传输距离>2m,有线传输就好,请大家给点意见!

wagina 发表于 2009-8-17 13:15:13

初步选定方案为:cpu采用atmega128,采样部分采用7片74ls138扩展7*8=56个io口,采用其中50个口选通50个74ls244用于采集。
传输部分采用:高速串口芯片TL16C754

疑问:1.采样点数太多,采用查询浪费好多时间,想采用中断,但是还没有好的方案
      2.想采用类似交换机似的级联方式传输,暂时没有好的思路
      3.想采用更高级的FPGA

请高手指教啊!谢谢!

wagina 发表于 2009-8-18 09:27:28

大家给提个好的方案讨论下啊!

oldtom 发表于 2009-8-18 09:37:37

采样周期小于20ms?这是在什么场合的应用呢?在工控行业有时候为了防止干扰或者抖动,我们还要做50ms以上的滤波呢!

makesoft 发表于 2009-8-18 09:41:55

直接用并串转换算了,用总线估计布线很麻烦的。

shinehjx 发表于 2009-8-18 09:46:37

7片74ls138+50片74ls244+PCB面积及布线,CPLD/FPGA应是更好的选择

wagina 发表于 2009-8-18 11:09:21

回复3楼:我们是做人机互动的,要求实时性很强!
回复4楼:我也在考虑用74hc165进行并串转换,但是担心速度跟不上啊!
回复5楼:我开始就考虑的FPGA和CPLD但是老大不同意!无奈啊!

shinehjx 发表于 2009-8-18 14:32:47

并串转换速度应该够的,假设1个位耗时5us,400个位也就是2ms而已

wagina 发表于 2009-8-18 17:21:01

回复4和7楼:你们说的并串转换,具体怎么做?还需要单片机吗?是用专用芯片吗?能说下具体方案吗?谢谢!

oldtom 发表于 2009-8-19 09:52:32

如果是那么高的频率还真是建议用CPLD。

wagina 发表于 2009-8-19 10:56:45

回复9楼:CPLD是比较适合,但是老大不同意,现在我怀疑老大的实力了!

yemingxp 发表于 2009-8-19 11:57:43

中断肯定过不了测试..

wagina 发表于 2009-8-19 12:02:34

回复11楼:请问yemingxp兄你有好的建议吗?请提出宝贵意见啊!谢谢!

QQ1013182577 发表于 2009-8-19 12:05:33

难道用于电路板测试用啊?ICT?

erxun 发表于 2009-8-19 12:42:55

50个244挂在总线上,得多少缓冲器啊~~~~

模拟开关呢,8(模拟开关4051)*8(模拟开关4051)=64占用7个8位口,可以采集469个开关量。
用mega1280吧。86个io,模拟开关ABC ABC 串口 ,肯定够用了。

czzhouyun 发表于 2009-8-19 12:49:22

to 10L,永远不要怀疑老大的实力,使用并进串出吧,或使用并进串出的集成芯片,记得有种芯片可以扩展几十个IO口的,四川的,具体什么芯片你可以查一下

czzhouyun 发表于 2009-8-19 12:51:30

四川国腾GM8164,一片可扩展32个输入

wagina 发表于 2009-8-19 13:30:08

回复QQ1013182577 yu:不是用于电路板测试,只是开关量的采集!
回复erxun 老孟:谢谢你的好建议,我好好思考下,查下资料!
回复czzhouyun :很好的信息,就是不知道价位怎么样,我查一下!

shihantu2 发表于 2009-8-19 13:57:41

【14楼】 erxun 老孟
模拟开关不适合。4051导通电阻比较大,信号源要通过一个通道电阻拉动一大片4051的公共端,还要通道切换,裕量不多。
如果不要求随机访问,个人意见是并串转换,采集时间是足够的,更主要的是每一片门都有锁存缓冲,电气特性上更保险。

shihantu2 发表于 2009-8-19 14:05:06

【1楼】 wagina
看到你说讨论查询和中断的选择,不知道是不是这些开关量都是长高或者长低。
如果这样,让单片机硬件输出时钟,移位芯片输出接到中断,这样就可以实现硬件响应。响应后再用软件移位读取。

综合起来,用若干165+mega8应该可以完成核心功能。

wagina 发表于 2009-8-19 14:25:29

回复shihantu2:谢谢!很好的建议!我思考下,整理好方案大家讨论下!

wagina 发表于 2009-8-19 14:35:53

现在有个疑问请教下大家,就是串口通讯部分比如通讯波特率为9600那么也就是1s传输9600位,那我1s中要是既采集又传输肯定就传输不了9600位了对吗?因为cpu还要在采集上消耗时间,不知道分析的对不对!请教了!

oldtom 发表于 2009-8-19 14:40:21

你对通信也有特殊要求吗?用啥协议呢?

shihantu2 发表于 2009-8-19 15:14:23

串口中断耗的CPU时间不多。跑大流量协议或者复杂运算(加解密等)就不好说了。

wagina 发表于 2009-8-19 16:18:35

回复oldtom:想走485总线,采用MODBUS协议,因为传输距离大约400米
回复shihantu2:大流量协议指的是什么协议啊?请教了!

oldtom 发表于 2009-8-19 16:43:51

如果用modbus的话,那500ms一个来回可能差不多了。

wagina 发表于 2009-8-19 16:50:31

在网上查了一些开关量输入输出模块,大多支持485总线或者CAN总线的,而且每块也就采集8个点,感觉我设计的这个方案有问题,即使能实现,抗干扰性也是个问题,请高手指教!

wagina 发表于 2009-8-19 17:52:33

谁可以推荐一本详细的介绍通讯协议的书啊,谢谢!

wagina 发表于 2009-8-20 11:52:45

现在又有个疑问,我读244的数据的时候用一个74ls148可以实现吗?74ls148连接单片机一个8位io口
谁还有更好的办法呢?谢谢!

helloshi 发表于 2009-8-20 13:33:09

分而治之。一个模块采集30-40点,主控和这些模块通讯

oldtom 发表于 2009-8-20 13:56:28

20ms一个采集周期,那等你用modbus通信送出去,20ms肯定达不到的。

你的开入采集是不是要和开出关联起来呢?感觉你们的应用好奇怪啊!

shihantu2 发表于 2009-8-20 14:14:38

【28楼】 wagina
我反而不明白为什么要这样了。。。

wagina 发表于 2009-8-31 10:48:55

回复helloshi :你得建议很好,我们现在就是这么在做,我们分成了3块板子。
回复oldtom:20ms是没问题的,假设设置波特率38400的话,一秒钟可传输4.8Kbit足够400/8=50bit的数据量。
回复shihantu2:我是想把各路开关量都通过一个74ls148传送到cpu只是每组开关量都可以顺序的去控制74ls148.(因为若每组都用一个得话io太多啊,现在选用的是并转串传输,只要设计好时序就可以了。)

laosuntou 发表于 2009-8-31 11:06:14

400米,38400估计够呛,你试试误码率有多少

vijea 发表于 2011-2-25 11:36:02

wagina :
    您这个开关量转化器做的如何了?如果好了可以联系vijea:qq20853795 进行包装。
页: [1]
查看完整版本: 请高手指教,我现在要做一个400个开关量的采集传输装置