百色西门子专业授权代理商
组态软件CAN驱动特定
图4.1 组态软件CAN驱动
组态软件的CAN驱动程序,如图4.1所示,是人机界面和组态软件的接口,其功能和特点是:
CAN总线数据传递给组态软件的接口:
驱动要借助系统的设备驱动接口,读取CAN总线数据,并通过组态软件的标准形式,传递给组态软件的实时数据库。
可以通过多种形式保证数据发送和接收成功:
1)、驱动内部,判断CAN控制器发送错误信息;
2)、通过写入设备寄存器,然后,读取判断寄存器写是否成功。
关注CANopen协议操作应用层面:
驱动程序中,并不需要整合CANopen整个协议栈,支持CAN2.0协议就足够。然后,CANopen协议部分通过组态逻辑解决。
可以通过多种形式保障数据的完整性和实时性:
实时性就是*新发送总线数据,能够在规定的延时内,进入组态软件的实时数据库。完整性就是能够将所有的数据报文抓取到组态软件,并进行完整的数据处理和存储。根据控制工艺的要求,我们可以设置总线数据上发的频率,通过HMI嵌入的CAN控制器设置屏蔽减少非目标数据,也可以通过组态软件对CAN控制器和驱动缓冲区的处理数据收发性能。
4.2. HMIBuilder软件CAN驱动映射关系
4.2.1. HMIBuilder组态软件
HMIBuilder组态软件是北京昆仑纵横科技发展有限公司(Http://www.hmibuilder.com)推出的分布式组态软件。现场总线是HMIBuilder软件关注的重点之一。
4.2.2. HMIBuilder设备站参数对应PCI1680U的一个Port口
针对研华PCI-1680U板卡,在设备站参数设置中,其端口、设备号可以选择(见图4.2),波特率可以设定,比如Port1,设备号为0,波特率:250K。这些对应Advantech Device Magnager中的HardwareSetting(见图4.3)。其协议类型和远程帧方式对应CanMEx.exe测试程序中对CAN卡的进一步设置(详见图4.4),其中CanMEx.exe在安装研华Demo后目录中,如C:\Program Files\Advantech\CAN\CAN Examples\Examples\VC\CanMEx)。
图4.2 站参数选择
图4.3 HardwareSetting
图4.4 CanMEx
4.2.3. HMIBuilder模拟量CANopen帧的数据域
在图4.5中,其中Message内容为数据域的ASCII码形式解码。在HMIBuilder中,PCI1680U对应的点参数的设置方法如图4.5。其中,ID可以CANopen设备的PDO。如果要读PDO数据域的第一个Byte数据。那么设置如下:416:0:U8:R。也就是416表示设备ID,0表示偏移量,U8-表示8位无符号整形。也就是说,起始偏移为数据域按照字节的偏移,取值为0到7。如果按照F32数据类型,起始偏移取值为0和1。
图4.5 点参数的设置
注意:本驱动的解码方法包括8位无符号数据、8位带符号整数、16位无符号整数、带符号整数、16位BCD整数、32位无符号整数、32位带符号整数、32位BCD整数、32位浮点数。
5.应用实例
下面,我们针对芬兰Axiomatic公司MVINC-CO-x-range型号倾角传感器,实现CANopen模块的人机界面接入。
1、物理连接
准备首先正确接线,连接研华的PCI-1680U板卡;然后用研华的随机测试软件进行测试。如果测试通讯完成后,再进行下一步,连接带CAN通讯的下一级设备,在这里我们测试Axiomatic公司MVINC-CO-x-range型号倾角传感器。
2、倾角传感器分析
通过阅读传感器的技术说明文档,我们的目标是通过组态软件可以控制倾角传感器的启动和停止,同时采集传感器的倾角信息。模块的启动和停止可以通过NMT指令实现。模块的倾角信息通过TPDO1数据对象周期上传。我们也知道通过SDO,可以配置对象字典,通过层设置服务(LSS:Layer setting service)可以设置模块的Node-ID和波特率等,但是,这些不是本文的目标,也就是,这些不是操作应用层面关注的,而是系统设置层面关注的。
3、HMIBuilder站参数组态
设置一个站,选择驱动程序。如下:
图5.1 站参数设置
配置协议,参数设置如下:
用PCI-1680U板卡的第一个端口接收数据,所以在设备中选择Port1,设备号选择第一个设备,波特率选择250k(和传感器波特率相同),屏蔽码为255。
图5.2 通信设置
4、倾角传感器的NMT对象组态
表5.1 [3] 网络管理对象(NMT)数据报文格式
CAN-ID如果为0X00,表示总线上所有节点都执行相关命令操作。
命令分类为:
表5.2 [3] CAN模块命令
在HMIBuilder数据组态中,我们设置启动CAN模块2个模拟量参数如图,要求ID都为0,偏移地址连续,而其分别为0和1。
图5.3 模拟量参数设置
注意:
地址为0,偏移量为0
图5.4 地址无偏移
地址为0,偏移量为1.
图5.5 地址偏移一位
5、倾角传感器TPDO1对象组态
通过倾角传感器相关技术文档,我们可以察看设备定义的数据对象字典,确定数据报文的数据域的内容。比如TPDO1,对于MVINC-CO-2-180模块,CAN数据报文发送7个字节数据,数据的定义为:
Sub1为纬度角(Latitude angle),16Bits;
Sub2为经度角(Longitude angle),16Bits;
Sub3为温度(temperature),8Bits;
Sub4为辅助输入(Auxiliary bbbbb),16Bits;
表5.3 [3]MVINC-CO-2-180模块的TPDO1对象的数据字典内容
倾角传感器上传数据的格式:
表5.4 TPDO1对象的数据报文
如果我们读取CAN模块7个模拟量参数,需要在组态软件中做如下设置:
图5.6 模拟量参数设置
地址设置如下:
图5.7 采集上来的数据
图5.7 地址设置 偏移0.对应D0:416:0:U8:R
图5.8地址设置 偏移1对应D1:416:1:U8:R
注意:
读上的数据为7位,ID不变。设置偏移为0…6
6、HMIBuilder组态完成
配置启动画面
图5.9 启动画面
运行情况:
图5.10 运行结
果
6.结束语
通过HMIBuilder组态软件的CAN总线通信设置,实现了对倾角传感器数据的采集。进一步,我们可以看到:HMI系统中,我们主要关注CANopen协议的数据对象PDO部分,同时,其他数据对象也可以根据现场工艺的要求在组态软件中实现