首页 > 代码库 > 倩——使用周立功CAN接口卡的注意点
倩——使用周立功CAN接口卡的注意点
1.“收数据时,开始不丢帧,过了5-6分钟开始丢帧”:这个现象主要是客户程序效率低,从CAN缓冲区中取数太慢导致。CAN接口卡的缓冲达到10万帧,可以保证大流量时(5000帧/秒)不丢帧,但是用户程序若取得不及时,多大的缓冲都会被占满了。这种现象一般出现在使用VB编程的客户,由于显示占用大量时间,故取CAN帧就不那么快了。——解决方案:加大显示刷新时间,并且增加接收函数VCI_Receive(DWORDDevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive,ULONG Len, INTWaitTime=-1);中Len,就是每次最多取的帧数。使每一次可以取的帧数足够大,避免缓冲区堆积,一般Len设为1000即可。
2.“有时候收数据,丢了一半,而且是间隔着丢,比如第一帧能收到,第二帧就收不到,第三帧又能收到......”:这个现象是客户使用老的驱动库,并且打开了两次设备,即调用了两次VCI_OpenDevice(DWORDDevType, DWORD DevIndex, DWORDReserved);函数。导致系统产生2个CAN取数线程,即当CAN帧传到电脑后,遇到2个取数线程,那么只好公平分配了,所以造成隔着收帧。——解决方案:使用新的驱动库,当没有关闭设备前,不能再打开设备。或者在软件的关闭中加入VCI_CloseDevice(DWORDDevType, DWORD DevIndex);的函数,关闭这个CAN卡的接收线程。
3.“自发自收能成功,但是正常发送就失败了”:这是可能用户的网络上就一个CAN接口卡,没有其他的设备,而CAN协议规定,在发送后,需要有正确的应答(帧尾两个位时间中,有一个显性电平)才能算这帧发送成功了,而网络上只有1个节点的话,就不可能有应答,所以只能发送失败。而自发自收,就是自身进行应答,保证发送成功。另一种可能,若网络上有2个以上的节点,正常发送不成功,就可能是(1)波特率不匹配(我的就是这个原因,可是你也得告诉我在哪里是设置波特率吧);(2)位定时不匹配(多数是采样点不匹配,正确的应该是在75~85%);(3)下位机节点初始化错误。
4.“自发自收都不成功了”:这个有几种可能,(1)500K波特率以上必须接上120欧的终端电阻,否则不能通讯;(2)CAN收发器、或光耦、或DC-DC损坏了,由于雷击或强电造成损坏;(3)总线短路。
5.“USBCAN的USB线插上后红灯亮,无法打开设备”:这说明没安装驱动,可以找光盘安装一下。
6.“驱动安装不上”:可以使用安装包安装,安装包可以向各地技术支持询问。
7.“USBCAN插着电脑不工作,放了几个小时,指示灯就全灭了,再打开设备就打不开了”:这个原因估计是USB接口进入挂起状态了,建议长时间固定使用时,用PCI接口的CAN接口卡。毕竟USBCAN是便携的设备。
8.“插了USBCAN的USB线,指示灯不亮”:首先估计是USB线坏了,其次才要怀疑卡的电源坏了。
倩——使用周立功CAN接口卡的注意点