铝电解生产控制系统中CAN通讯技术程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
铝电解生产控制系统中CAN通讯技术的程序设计摘要:在铝电解计算机控制系统中,槽控机与接口机之间是采用can总线进行通信。文章介绍了can总线在铝电解控制系统中的应用,叙述了基于can总线的系统结构、组成以及can总线通讯接口软件设计方案。
关键词:can总线、can通讯、电解铝、槽控机
中图分类号:tf821 文献标识码: a 文章编号:
引言
can(control area network)德国bosch公司为解决汽车上众多控制器和传感器之间的数据交换而开发的一种串行通信网络,由于其具有抗干扰能力强、可靠性高、实时性好和易于使用等特点,已经广泛应用于工业自动化、交通工具、医疗仪器、楼宇自动化等多个领域,是公认为最有前途的现场总线技术之一。现代电解铝生产自动化控制系统中槽控机与接口机之间的信息交互主要是依靠can总线技术实现。
1 系统组成
铝电解控制系统主要由智能槽控机、监控接口机和can总线三部分组成。系统结构如图1-1所示。其中槽控机直接控制生产过程,负责采集电解槽槽电压和氧化铝浓度。监控接口机由一台工业控制pc机构成。主要功能是对现场槽控机进行参数据设置,通过总线网络实时获取槽控机实时数据,实放槽异常报警、报表输出等功能。can总线部分主要由智能pc-can总线适配卡、通讯介质、光电转换
器以及通讯软件组成。pc-can 总线适配卡上带有微处理以及1kb
和2kb高速ram,直接映射到主机内存,pc-can总线适配卡上还带有光电隔离器,保护pc机避免由于地环流的损坏;pc-can接口控制器上还带有可配置的hilon 协议及windows驱动程序,可插于计算机(工业控制机)的isa插槽。
随着光纤技术的发展,pc-can配卡嵌入光纤∕can转换模块,使can总线可以用光纤作为通信传输介质。这项技术的突破使电解铝控制系统的防电磁干扰,抗雷击等优点。
图1-1:铝电解控制系统
can总线工作原理
can总线数据收发由can控制器和can收发器完成。主机通过isa接口控制电路来访问can控制器,最终完成数据通信。为了提高系统的抗干扰能力,在can控制器和can收发器增加了隔离电路,隔离电路采用光电隔离技术,isa卡自带dc/dc转换模块,无需外界电源cand原理框图如下所示。
图2-1 can原理框图
can总线通讯控制器初始化的程序设计
can通信实现数据通信基本包括sja1000初始化、数据发送和数据接收3部分。can通讯系统的初始化就是在复位模式下进行
sja1000初始化。初始化程序编写如下:
can_init ( void){ mode = 0x09; 进入复位模式, 对sja1000 进
行初始化;cdr= 0x88; 选择pelican ;cmr= 0x0c; 清除数据溢出和释放接收缓冲器;ier= 0x03; 开放接收中断和发送中断;acr0=
0x66; 根据具体的协议定义设置验收码寄存器;acr1= 0x66;acr2= 0x66;acr3 = 0x66;amr0 = 0xff; 根据具体的协议定义设置验收屏蔽寄存器;amr1 = 0xff;amr2 = 0xff;amr3 = 0xff;btr0 = 0x41;btr1 = 0x1b;12 mhz 晶振下, 设置速率为200 kb/s;ocr = 0xaa; 输出控制寄存器ocr ;mode= 0x08; 单向滤波方式, 进入正常模式;} 系统接口机通讯程序设计
铝电解系统接口机通讯软件的设计基于microsoft visual basic 6.0集成环境开发,采用模块化的设计结构,共分为三大独立模块:通信模块、接口机显示模块和主机数据库模块。模块之间采用tcp/ip通信。通信模块通过pc-can适配卡与网络上每个槽控机进行通信。pc-can卡自身可实现can协议的物理层和数据链路层功能,因此我们只需对应用层进行编程即可。在上位机通信软件的设计中,有8个can函数可供调用,通讯模块通过调用这些函数可以对系统网络进行监控和管理。
4.1 打开pccan卡public declare function can_open lib “win32mab” (byval address as integer, byval card as byte) as integer
入口参数: address指定的双口ram的段地址(范围为:
0xc000--0xe000);
card板卡索引号(从0开始);
出口参数: 1 —成功;
0 —失败;
-1: 指定的双口ram地址对应的卡已经存在
说明:card 只能为0~3之间的值;双口ram段地址为板卡address跳线指定的地址,详细设置参见设置说明部分。
4.2 初始化函数:public declare function can_init lib “win32mab”(byval mode as byte, byval address as byte, byval baudrate as integer, byval card as byte) as integer 入口参数:mode模式(‘n’,’m’,’s’);
address本卡地址;
baud rate位速率选择因子;
card板卡索引号(从0开始);
出口参数:1 —打开pccan卡成功;
0 —打开pccan卡失败
-1 —设定的pccan板卡不存在
说明: card用以选择操作的pccan板卡。can控制器的波特率的设定以16mhz晶振为参考,参见表4-1.
表4-1 波特率与baudrate参数对照表
表4-2 工作模式mode的选择
4.3 设置中断号函数:public declare function