标签:
无标签
作者:李建章
指导:董立华
摘要:
介绍如何用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功能手册
系统分类:
工控软件 | 用户分类:
无分类 | 来源:
原创