Benchtop Measurement and Test
Distributed Measurement and Control
High-Performance Test
Systems Engineering Software
Perspectives showcases how NI sees what’s next in the world of test and technology.
You can request repair, RMA, schedule calibration, or get technical support. A valid service agreement may be required.
Provides support for NI data acquisition and signal conditioning devices.
Provides support for Ethernet, GPIB, serial, USB, and other types of instruments.
Provides support for NI GPIB controllers and NI embedded controllers with GPIB ports.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
06-25-2016 09:28 AM - 编辑日期 06-25-2016 09:30 AM
三个问题,急求大神解答!!
1.串口超时:现做一运动控制系统上位机,两计算机间通过串口通讯,一台计算机(接收端)接收另一台计算机(发送端)命令,无返回,接收端通过串口接收到“start”命令后开始执行运动控制程序,问题是执行运动控制程序过程中发送端可以随时发送stop命令停止运动控制,这样串口接收会一直保持接收状态,会出现超时出错,我现在解决方法是将超时参数改大,如8小时,即工作一天都不超时,但这样是不是一直占用资源,请问有没有好的解决方法??
2.运动控制程序中用到udp通讯,下位机的通讯方式是发送一个命令返回一个命令,但我有9个下位机,所以发送到下位机用的是广播方式,但此时上位机同一时刻接收的只是其中一个下位机返回的数据,请问如何才能接收到所有下位机的数据??
3.针对问题2,我不用广播,换成顺序结构做轮询,让下位机顺序返回数据拿来处理,但新问题出现,第一次上位机发送命令后,下位机轮询返回数据正常,但第二次发送命令后立马出错,请问如何解决??
问题1与问题3程序如图
修改时间 07-11-2016 10:31 PM
问题1,超时时间设置太长还是不合适的,可以不处理超时错误。
但是你的系统运行过程中长时间不和上位机通信也是不合适的,最好做一个定时的通信检查,系统运行的状态也应该及时的上传给上位机,进行适当的保存。
修改时间 08-05-2016 03:26 PM
232串行口一般用于一对一通讯。且距离不能太长,不能靠近电源线,干扰会很大。
汽车上是用CAN总线来进行通讯。
你用问答式通讯可以解决竞争问题,这是对的。程序设计中 要防止下位机等待丢失数据的问题。
修改时间 08-05-2016 07:49 PM
第一个问题,你的状态是两个状态,一个是发stop的停机状态,另一个是初始无开机的状态。增加一个状态的指示即可。
另外建议多用基于状态机的编程模式,你这个程序,看起来很费劲。过一段时间再看,你自己都可能看不懂。
修改时间 10-03-2016 10:23 AM
1,一台上位机与九台下位机通讯,采用中断处理方式比较节约CPUde时间。
2,各个下位机应该有自己的地址。如果是九个RS-232也可以。如用CAN总线,可以抗干扰。
3,巡回查询,第一遍通过,第二遍出错,说明有状态改变了,检查一下是可以发现问题所在。
简单的方法,把巡回查询作成一个大循环,每次进入进行初始化,这样保证每次进入的状态是一样的。
What do you need our team of experts to assist you with?
Thanks!
We'll be in touch soon!