一个串口对多个仪表的轮询采集
一个串口对应多个仪表,每块仪表有不同的地址标识,连接方式为并行连接,通过数据MODBUS协议采集,labview该如何实现.请高手指点. 必须要有一个RS232-RS485的转换器,市面上很多的,价格也不贵,几十块钱吧.将所有的仪表与RS485端口相连接,然后按他的通信协议进行发送命令就可以了.要装有VISA哦,要不然LV不能用串口.
电脑--RS232-RS485------------------------------------------
------------------------------------------
|| || ||.............................||
C1 C2 C3...........................Cn
上面是一个简单的图,RS485只需要两根线相接就可以了.C1代表客户端仪表. 谢谢!!但是还有一个问题。:loveliness:
硬件上的实现明白了,软件的采集会不会速度很慢?假如一个串口带有二十块仪表,每次采集一块仪表的数据就进行初试化、释放一次,采集的数据会滞后呢?
一点经验教训
注意转换器的模式,如果仪器不支持半双工就得用全双工,如果干扰大买带光隔离的转换器 在程序开始时进行初始化,不要每次采集一次就进行一次初始化动作.在结束程序时再释放就可以了.串口速度当然不能要求很快,还有一个就是仪表的反应速度也会影响到你的采集速度.
一般情况下二十个仪表全部轮循完如果仪表反应速度快的话可以在两秒钟内完成.
回复ricken
你说的程序开始和结束进行初始化和释放,指的是程序一开始运行进行初始化,直到程序结束时再释放吗?如果这样的话采集完第一块仪表数据后,不进行释放和再次初始化,继续采集第二块仪表数据时,因仪表
的地址不同会产生错误!
我现在采集十块仪表,全部轮循完需要十秒钟,找不出是啥原因?
还请ricken指点指点。谢谢!! 不会啊,你232串口就使用了一个,后面转成485后,可以桥接31个子单元并联,如果采用自构造的话,选用好的转换芯片,可以并接100多个子单元,只是地址不同而已。
对某个地址取具体单元的数据就是modbus的意思,你只操作一个串口就可以了,其他全部就是 地址+命令(数据) 串口的设置是不用改变的,只是当你要读取不同的表时,因为每个表的地址不同,所以你发送的命令也会是不一样的.一般的命令格式是这样的,
读取命令+仪表地址+寄存器低位-高位+CRC校验码
读取不同的仪表时只需要改变仪表地址就可以了,CRC校验码应该是自动计算的.NI网站上有一个模块是专门用于modbus的,你可以去下载. 你指的NODBUS是ni_modbus8_2.exe(NI ModbBuS1.1),我在安装时为啥老提示有问题呢?提示见附件。
没有办法我把nimodbus.mnu和Modbus.llb就直接复制过来了。 有没有这方面的例程可共参考啊! 是不是你安装的时候没有选择好啊,我当初安装时都没有问题哦.
例子NI的网站上有,你可以去下载. 我在NI的网站没有找到这方面的例程呀!
有哪位朋友做过MODBUS这方面的工程的,给帮忙上传个这方面的例程吧?
谢谢!或发我的邮箱88586@163.com 非常感谢 风定云远 和 ricken 的帮助。 看来你没有去NI网站搜一下哦,太多了类似的内容.
This LLB includes the Modbus VIs you can use to use LabVIEW as a master serial or slave serial device in combination with a Modbus device. This LLB also includes example VIs.
Copy and paste this URL into your browser to view information about and instructions for using these VIs:
http://zone.ni.com/devzone/conceptd.nsf/webmain/3166EB59237BB74286256F5500789D5A
怎么不能发附件呢? 附件不是压缩格式啊,你只要将文件改名去掉那个zip就可以了.是一个LLB库文件
页:
[1]
2