PCAN二次开发教程

本文目录

二次开发教程

本站所有技术文档均为虹科技术工程师所编写和更新,如果您发现任何错误,欢迎扫码下方二维码联系我们进行更正,万分感谢。

如果您需要定制的项目服务或教程培训,请联系虹科获取报价

1. 适用硬件

  • PCAN-USB(IPEH-002021/IPEH-002022)
  • PCAN-USB FD(IPEH-004022)
  • PCAN-USB Pro FD(IPEH-004061)
  • PCAN-USB X6(IPEH-004062/IPEH-004063/IPEH-004064)
  • PCAN-PCI(IPEH-002064/IPEH-002065/IPEH-002066/IPEH-002067)
  • PCAN-PCIe(IPEH-003026/IPEH-003027)
  • PCAN-PCIe FD(IPEH-004026/IPEH-004027/IPEH-004040)
  • PCAN-miniPCIe FD(IPEH-004045/IPEH-004046/IPEH-004047)
  • PCAN-miniPCI(IPEH-003045/IPEH-003046/IPEH-003047)
  • PCAN-miniPCIe(IPEH-003048/IPEH-003049)
  • PCAN-M.2(PCIe)(IPEH-004083/IPEH-004084/IPEH-004085)
  • 虹科PEAK系列所有型号的PCAN卡

2. 适用环境与下载地址

3. 使用前提

  • 驱动

链接:https://peak-system.com.cn/driver/

(全选)

  • API关系

  • DLL文件位置
    • 使用dll文件的时候,可以选择(非必须这样做)把dll文件拷贝到如下位置,方便调用。
    • 32位系统:
      • 32BitDLLs>Windows\system32
    • 64位系统:
      • 32bitDLLs>Windows\syswow64
      • 64bitDLLs>Windows\system32
    • 参考来源:http://en.wikipedia.org/wiki/WoW64

任何通信相关问题建议在PCAN-View或PCAN-Explorer6测试无误后再转移至PCAN-API进行开发

任何程序相关的不确定性可以通过官方例程进行验证:

4. 例程问题

所有的API开发包中均包含例程讲解,不同开发包包含的例程不同(C#、Python、Java、C/C++等,实际以开发包内容为准)

特别说明:PCAN-BasicAPI的Labview例程需要额外收费,包含PCAN-BasicAPI中所有函数接口,请联系虹科获取!

5. API开发流程

 本说明以PCAN-BasicAPI进行说明

请结合API开发包中的API帮助文档(PCANBasic_enu.chm)

  • 连接设备

PCAN通道:PCAN-BasicAPI中对于USB接口和PCI/PCIe接口的设备分别开辟了16个PCAN通道,也就是说一台上位机最多可连接16个USB接口的PCAN和16个PCI/PCIe接口的PCAN板卡。详情请参考API帮助文档中PCANHandleDefinitions

PCAN波特率:

    • CAN的波特率为API中的枚举值,可以直接调用。详情请参考API帮助文档中TPCANBaudrate
    • CANFD的波特率为一个字符串,该字符串指明对应CANFD的仲裁域和数据域的波特率。详情请参考API帮助文档中TPCANBitrateFD。可以先在PCAN-View中设置好波特率,然后想内容复制出来,直接作为API中的CANFD波特率参数,如下图:
    • 连接设备即为设备初始化,对应API中的函数为CAN_InitializeCAN_InitializeFD,单次初始化为初始化一个PCAN通道,与具体型号的设备无关。其中,除了区分硬件类型外,相同类型的硬件通过插入PC的顺序判断初始化通道的顺序,多通道的硬件通过通道编号顺序来判断初始化通道的顺序。
  • 发送报文

对应API中函数CAN_WriteCAN_WriteFD,每次调用发送一帧报文,周期发送需要结合Timer等处理方式,以下几点需要注意:

参数TPCANMsgFD中的报文长度为DLC而不是Length,详情请参考API帮助文档中TPCANMsgFD

参数TPCANMessageType为报文类型,其中CANFD的BRS开关需要单独设置,详情请参考API帮助文档中TPCANMessageType

  • 接收报文

对应API中函数CAN_ReadCAN_ReadFD,每次调用函数会从硬件的缓存中读取最早的一帧,也就是缓存队列的队头,缓存容量为32767帧。

建议:接收报文可以通过检查TPCANStatus是否为PCAN_ERROR_QRCVEMPTY来判定缓存队列是否为空,详情请参考API帮助文档中CAN_ReadCAN_ReadFD

  • 记录报文

对应API中函数的CAN_SetValue,详情请参考API帮助文档的TPCANParameter 

  • 断开连接

断开连接即为设备去初始化,详情请参考API帮助文档中CAN_Uninitialize

  • 总线状态处理

总线状态监控:对应API中函数CAN_GetStatus,主要检测总线状态是否正常、高负载、宕机等

总线状态复位:通过CAN_SetValue函数中传参PCAN_BUSOFF_AUTORESET设置,而CAN_Reset只是清除对应通道的收发缓存队列。当然,也可以通过CAN_Reset+断开重连完成总线复位

  • 错误帧处理

通过传参PCAN_ALLOW_ERROR_FRAMES打开错误帧接收,错误帧对应具体情况见API帮助文档中ErrorFrames

  • 报文过滤

对应API中函数CAN_FilterMessages,其中参数TPCANMode可选择标准帧或扩展帧,    该函数可以多次调用,详情请参考API帮助文档中CAN_FilterMessages

  • 数据库加载

开发包中暂无现成DBC数据库加载接口