日志档案

发表于 2008-5-21 11:07:08

0

标签: 无标签

基于HMIBuilder组态软件的CAN模块通信

  作者:李建章
  指导:董立华

  摘要:
  介绍如何用HMIBuilder组态软件与CAN总线上的设备进行通信。通过应用一个带CAN通信模块的倾角传感器,阐述了HMIBuilder的设置方法。实践表明软件设置简单、平台运行稳定可靠。
  关键词:
  HMIBuilder组态软件、研华PCI-1680U板卡、倾角传感器、CANOpen。
  一、 系统概述
  在很多应用中,我们需要获取现场总线模块的数据,并参与控制,比如:温度信号、湿度信号、高度信号等等。我们现在可以采用组态软件利用现场总线传输,来采集现场的信号。为我们获取应用现场的信号提供了方便快捷的解决方案。
  二、 组态软件通讯分析
  组态软件建立在数据库系统之上,实时数据库通过驱动接口采集总线系统中PLC、智能仪表和其他设备的信息,详细架构请见图1。


  图1 现场总线数据采集架构图

  组态软件与硬件设备组成的CAN总线系统,详细组成请见图2。


  图2  CAN总线系统

  三、 CAN设备分析
  1. CANOpen设备模型
  CANOpen设备模型外部连接CANBus系统合过程I/O,采集现场数据,通过CAN总线系统,向高层传送。设备模型(图3)内部可以被分为3部分:
  1.1 通信接口(Communication)部分:
  提供在总线上收发通信对象的服务。不同CANOpen设备间的通信都是通过交换通信对象完成的。这一部分直接面向CAN控制器进行操作。
  1.2 对象字典(Object Directory)部分:
  对象字典描述了设备的功能性。它以特定的方式描述了通信对象(应用数据和配置数据),从而实现了设备的功能性描述。这些对象通过一个16位的索引和一个附加的8位子索引来访问。对象字典位于CAN总线设备通信部分和应用部分之间,向应用程序提供接口,应用程序对对象字典进行操作就可以实现CANOpen通信。
  1.3 应用(Application)部分:
  应用部分由用户编写,包括功能部分和通信部分。通信部分通过对对象字典进行操作实现CANopen通信,而功能部分由用户根据应用要求实现。比如CAN控制器,应用程序部分则为过程控制或数据处理逻辑,需要用户编写。

点击看大图
  图3[1] CANOpen设备模型

  2. CANOpen标识符
  为了减小简单网络的组态工作量,CANopen定义了强制性的缺省标识符(CAN-ID)分配表。这些标志符在预操作状态下可用,通过动态分配还可修改他们。CANopen设备必须向它所支持的通讯对象的提供相应的标识符。
  缺省ID分配表是基于11位CAN-ID,包含一个4位的功能码部分和一个7位的节点ID(Node-ID)部分。如图4所示。

点击看大图
  图4  PDO数据格式[1]

  Node-ID:对应CANOpen设备,由系统集成商定义,例如通过设备上的拨码开关设置。Node-ID范围是1~127(0不允许被使用)。
  Function Code:确定CAN帧的类型,比如:PDO 和SDO:对应CANOpen设备的寄存器。在CANOpen设备中,常用的PDO为0x180+Node-ID。其中0x180就是指Functon Code。SDO 是用来在设备之间传输大的低优先级数据的服务数据对象,典型的功能是配置CANopen网络上的设备。
  PDO 用来传输8字节或更少数据,没有其它协议预设定(意味着数据内容已预先定义)。 比如:某倾角传感器上传的为7个字符,因此它有8个PDO数据需要传到现场总线上。标识符的格式为TPDO=0X180+NODE_ID,因此发送的PDO可以表示为表3.1的描述。

点击看大图
  表3.1  传感器设备的PDO

  四、 组态软件CAN通讯映射关系
  1. HMIBuilder设备站参数对应PCI1680U的一个Port口
  针对研华PCI-1680U板卡,在设备站参数设置中,其端口、设备号可以选择(见图4.1.1),波特率可以设定,比如Port1,设备号为0,波特率:250K。这些对应Advantech Device Magnager中的HardwareSetting(见图4.1.2)。其协议类型和远程帧方式对应CanMEx.exe测试程序中对CAN卡的进一步设置(详见图4.1.3),其中CanMEx.exe在安装研华Demo后目录中,如C:\Program Files\Advantech\CAN\CAN Examples\Examples\VC\CanMEx)。


  图4.1.1  站参数选择


  图4.1.2  HardwareSetting


  图4.1.3 CanMEx

  2. HMIBuilder模拟量对应CANOpen帧的数据域
  在图4.1.3中,其中Message内容为数据域的ASCII码形式解码。在HMIBuilder中,PCI1680U对应的点参数的设置方法如图4.2.1。其中,ID可以对应CANOpen设备的PDO。如果要读PDO数据域的第一个Byte数据。那么设置如下:416:0:U8:R。也就是416表示设备ID,0表示偏移量,U8-表示8位无符号整形。也就是说,起始偏移为数据域按照字节的偏移,取值为0到7。如果按照F32数据类型,起始偏移取值为0和1。


  图4.2.1 点参数的设置

  注意:本驱动的解码方法包括8位无符号数据、8位带符号整数、16位无符号整数、带符号整数、16位BCD整数、32位无符号整数、32位带符号整数、32位BCD整数、32位浮点数。
  五、 应用实例
  针对芬兰Axiomatic公司MVINC-CO-x-range型号倾角传感器的CAN模块通讯测试
  1、 物理连接
  准备首先正确接线,连接研华的PCI-1680U板卡;然后用研华的随机测试软件进行测试。如果测试通讯完成后,再进行下一步,连接带CAN通讯的下一级设备。
  2、 HMIBuilder站参数
  设置一个站,选择驱动程序。如下:


  图5.2.1  站参数设置

  配置协议,参数设置如下:
  用PCI-1680U板卡的第一个端口接收数据,所以在设备中选择Port1,设备号选择第一个设备,波特率选择250k(和传感器波特率相同),屏蔽码为255。


  图5.2.2 通信设置

  3、 倾角传感器的NMT对象:

点击看大图
  表5.1

  CAN-ID固定为0X00。


  表5.2

  在HMIBuilder数据组态中,我们设置启动CAN模块2个模拟量参数如图,要求ID都为0,偏移地址连续,而其分别为0和1。


  图5.3.1 模拟量参数设置

  注意:
  地址为0,偏移量为0


  图5.3.2 地址无偏移

  地址为0,偏移量为1.


  图5.3.3  地址偏移一位

  4、 倾角传感器PDO对象
  倾角传感器上传数据的格式:

点击看大图
  表5.3

  读取CAN模块7个模拟量参数:

图5.4.1 模拟量参数设置

  地址设置如下:


  图5.4.2 采集上来的数据

图4.4.2 地址设置 偏移0.对应D0:416:0:U8:R

  
  图5.4.3地址设置 偏移1对应D1:416:1:U8:R

  注意:
  读上的数据为7位,ID不变。设置偏移为0…6
  5、 HMIBuilder组态完成
  配置启动画面


  图5.5.1 启动画面

  运行情况:

点击看大图
  图5.5.2 运行结果

  六、 结束语
  通过HMIBuilder组态软件的CAN总线通信设置,实现了对倾角传感器数据的采集。
  七、 参考文献
  [1] 周立功  CAN-Bus  现场总线基础方案。
  [2] HMIBuilder功能手册

系统分类: 工控软件   |   用户分类: 无分类   |   来源: 原创

    阅读(651)    回复(6)  

最新评论