LZ既然可以自己做到这种程度,看看24c256的数据手册,应该就可以搞定了将这些485接口全部串联(A对A,B对B)后,再用一个485转232,再接到上位机? ,貌似Z多能连31个设备?
现场有100个RS485接口的设备,如何连接到上位机?
说明:这个接线方法就是正确的485通讯接线方法,单个485总线下Z多支持连接247个设备,而不是Z多只能连31个设备。为什么会有这个说法呢?那是因为连接的设备数量越多,那么每个设备的轮询间隔就会越大,一般32个设备的轮询间隔都在2分钟之内,就是说大概2分钟刷新一次设备的数据,通常的项目都可以接受,再长时间就不太好了,特别是在布线非常远的情况下。
通讯工程师的建议一般都是单根总线不超过64个设备。
2、或者每个485都出来一根线,总共100路都接到一个多路串口终端服务器上,再与上位机通讯?
说明:这个方法肯定不可取,485通讯是总线型通讯,需要按照总线型接法才行,这种星型接法是万万不可取的,因为这样会造成通讯不通,还浪费线材。
3、串口通讯设备每台8路RS485口,一路以太网口。通过串口通讯设备就可以把现场485的设备和上位机连接起来。
说明:这个方法也是可以的,如果现场到上位机的距离比较远,不好布线,则可以考虑这种使用网线做桥接的方法。看你主程序循环时间了,如果比整个数据包接收下来的时间要短的话,你可以建立两个缓冲区,对换进行接收数据。
一个数据包完成后建立一个标志,换一个缓冲接收;主程序一旦查到有标志位被置位,刚把相应缓冲区的内容写到EEPROM,再把标志清零。
程序需要两个缓冲区,一个缓冲标识位和一个接收完成标志位。
一般来说,主程序循环时间太长说明你的程序有些地方处理不好,可以把占用时间较长的函数进行分片处理。首先,波特率要和上位机一致!然后你发送的时候,要每发一个数据,等待它发送完才能再发第二个数据,也就是判断TI有没有标志。你的波特率这么慢,更需要判断TI了!其实我不熟悉C的程序,但是大概可以看懂,希望对你有点帮助!这是最笨的等待方法,407的大内存,高速度,被你浪费光。我建议你做一个缓存,设置传输总数,传输序,及传输标志的信号变量,然后交给中断自己传;区分下一个循环的数据是下一组的,可以设置1个多字节帧头比如0xACACACAC。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)