论文部分内容阅读
摘 要:介绍基于CAN总线的船舶监控系统的基本结构。重点论述智能测控单元CAN通讯接口设计、CAN控制器外围硬件电路和CAN通信软件的实现。
关键词:现场总线;控制局域网;船舶监控系统;应用
中图分类号:TP273文献标识码:A
The CAN Fieldbus Technology Application in Ship Monitoring System
MA Li,XU Shan-lin
(Shanghai maritime university,Shanghai200135)
Key words: The fieldbus;CAN ;Ship Monitoring System;application
CAN(Controller Area Network),即控制局域网,是一种具有很高可靠性、支持分布式和实时控制的串行通信网络。CAN为多主方式工作,网络上任意节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从,且无需站地址等节点信息,通讯灵活。CAN协议模型结构只有3层,即只取OSI底层的物理层、数据链路层和应用层。CAN的最大特点是可靠性高,其节点在错误严重的情况下具有自动关闭输出功能,以使总线上其它操作不受影响。CAN的直接通信距离最远可达10km(速率在5kbps以下),通信速率最高可达1Mbps(此时通信距离最长为40m)。其通信介质可为双绞线、同轴电缆或光纤,选择灵活。CAN上的节点数主要取决于总线驱动电路,目前可达110个。在标准帧报文标识符有11位,而在扩展帧的报文标识符(29位)的个数几乎不受限制。
1 CAN总线在船舶的应用
CAN在船舶中的应用始于20世纪90年代初。1994年德国MTU公司成功地研制了基于CAN的MCS-51监控系统,开创了CAN网络船舶系统应用的新纪元。此后,CAN网络被广泛地用于船舶的远程控制、巡回检测、电站监控以及火灾报警系统中。CAN网络在船舶控制系统中的成功应用为解决船舶设备级(传感器、执行器、控制模块)的互联网络通信问题提供了新的数据传输协议,并由CAN控制器硬件完成协议的功能和服务。在CAN网络中,通过一根可同时传输电源和数据信号的总线可将所有满足CAN协议的设备挂接,并提供点对点、一点对多点和广播式三种通信方式。针对CAN在船舶中的日益广泛应用,美国国家海洋电子协会(NMEA,national marine electrons assciation)扩展了原有的NMEA0813协议,形成了新的NMEA2000协议,为CAN网络在船舶中应用制定了统一的标准和接口协议。
2 监控系统的基本结构
在一个监控系统中,测量、控制和执行单元是必不可少的。同时,在一个基本的通信网络中,网络硬件和协议控制器也是必需的。典型的基于CAN的监控系统结构设计如图1所示。
在图1中,基于CAN的监控系统包括以下几个部分:
(1)上位PC机收集总线上传输的所有信息,对系统的运行状态进行监控,检测所有设备的运行参数的调整及越限时的声光报警等功能。并通过CAN接口卡接入网络之中。
(2)智能测控单元(下位机系统)包括智能传感器、智能执行器和智能控制器等,它们被安装在测控现场,用于直接获取现场设备的参数或者执行相应操作和功能。智能测控单元和传统设备相比,区别在于它们本身带有支持CAN总线通信协议的CAN控制器模块。因而,单元3不仅可与上位机系统通信,同时也可根据系统设计需要从单元1接收数据或者向单元;2发送数据,实现现场底层设备之间的通信,这点对于某些系统来说是非常重要的。
2.1智能测控单元CAN通讯接口设计
智能测控单元主要以Cygnal公司出品的C8051F040单片机为核心构成。该单片机是完全集成的混合信号系统级芯片(SOC),具有与MCS-51完全兼容的指令内核。内部采用流水线结构,机器周期由标准的12个系统周期将为1个系统周期,峰值性能达到25MIPS。此外,C8051F040的内能还集成有CAN控制器、高速A/D转换器等,可以简化系统设计。C8051F040集成的是CAN控制器,要使CAN总线得以运行,还需在单片机上接CAN收发器,进行电气转换,将逻辑信号转换为平衡差分码。常用的CAN收发器为PHILIPS公司出品的PCA82C250、高速TJA1050等。这里选用的是PCA82C250,它可以提供对总线的差动发送和接收功能,与ISO11898标准完全兼容,有三种不同的工作方式,即高速(最高可达1Mbps)、斜率控制和待机,可根据实际情况选择。
C8051F040中的CAN的工作位速率可达1Mbps,实际速率可能受CAN总线上所选择的传输数据的物理层的限制。CAN处理器有32个消息对象,可以被配置为发送或接收数据。输入数据、消息对象及其标识掩码存储在CAN消息RAM中。所有数据发送和接收过滤的协议处理全部由CAN控制器完成,不需要CIP-51干预,这就使得用于CAN通信对CPU干涉最小。
该CAN控制器是可实现的Bosch全功能CAN模块,完全符合CAN规范2.0A和2.0B。CAN控制器的原理框图如图2所示。CAN核提供移位输出和输入(CANTX和CANRX)、消息的串/并转换及其它协议相关的任务(如数据发送和接收过滤)。消息RAM可存储32个可以在CAN网络上接收发送的消息对象。CAN寄存器和消息处理器为CAN寄存器和消息处理器为CAN控制器和CIP-51之间的数据传送和状态通知提供接口。
CIP-51可以通过特殊寄存器直接或间接访问CAN控制器中的CAN控制器寄存器(CAN0CN)、CAN测试寄存器(CAN0TST)和CAN状态寄存器(CAN0STA)。其它寄存器必须通过间接索引法访问。
2.1.1CAN控制器外围硬件电路实现
为了进一步提高系统的抗干扰能力,在CAN控制器引脚CANTX、CANRX和收发器PCA82C250之间并不是直接相连,而是通过高速光耦6N173构成的隔离电路后再与PCA82C250相连,这样就可以很好的实现总线上各节点的电气隔离。此通信物理层电路图如图3所示。
在PCA82C250与CAN总线接口部分也采用了一些安全和抗干扰措施。PCA82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线连接,电阻可以起到一定的限流作用,从而保护PCA82C250免受过流的冲击。在CANH和CANL与地之间各自接一个30pF的小电容,可以起到滤除总线上的高频干扰和防电磁辐射的能力。另外,在CANH和CANL之间并联一个15V的瞬态电压抑制二极管(TVS),可以保护PCA82C250在瞬间高电压情况下而不受损坏。PCA82C250的RS引脚上接有一个下拉电阻,电阻的大小可根据总线速率适当的调整,其值一般在16kΩ-140KΩ之间,图3中选用47KΩ。
C8051F040工作电压为2.7V~3.6V,其所有I/O口允许5V(极限值5.8V)输入,但是I/O口输出电平为VDD,而PCA82C250为5V系统,为了能够驱动其工作,在CANTX引脚上接一上拉电阻,其值为4.7KΩ。
2.1.2CAN通信软件实现
下位机CAN通信部分主要完成的任务是:将检测到的数据传送给上位机或其它下位机节点。同时,上位机可以对下位机的相关参数进行设置。
由以上可知,CAN节点通信主要包括系统初始化、发送程序、接收程序等。在本例中,系统软件采用结构化程序设计方案,使其具有较好的模块性和可移植性。
2.1.3系统初始化
初始化程序主要完成对所有报文对象的初始化(一般将所有值置零),对CAN控制器寄存器(CAN0CN)、位定时寄存器(BITREG)进行设置,还要对发送报文对象和接收报文对象分别进行初始化。其中,位定时寄存器的设置较为复杂,这里使用外部晶振为11.0592MHz,CAN通信速率为1Mbps。
(1)初始化CAN控制器的一般步骤为:将SFRPAGE寄存器设置为CAN0_PAGE;将CAN0CN寄存器中的INIT和CCE位设置为1;设置位定时寄存器和BRP扩展寄存器中的时序参数;初始化每个消息对象或将其MsgVal为设置为0(无效);将INIT清零。
(2)初始化发送对象的过程包括设置发送消息对象的命令屏蔽寄存器;设置仲裁寄存器;消息发送方向;指明消息长度和帧类型;选择发送消息号。部分代码如下:
void init_msg_object_TX (char MsgNum)
{
SFRPAGE=CAN0_PAGE;
CAN0ADR=IF1CMDMSK; // 指向命令掩码寄存器1
CAN0DAT=0x00B2;// 设为写,除了标识掩码和数据位
CAN0ADR=IF1ARB1; // 指向仲裁寄存器
CAN0DAT=0x0000;// 将仲裁ID设为最高优先级
CAN0DAT=0xA000;// 设置消息有效位,没有扩展ID,方向为写
CAN0DAT=0x0088; // 数据长度为8,数据帧
CAN0ADR=IF1CMDRQST;// 指向命令请求寄存器
CAN0DAT=MsgNum;// 写消息对象号,即对哪个消息对象进行操作
// 3~6个CAN时钟周期后,IF寄存器中的内容将被移到CAN存储器的消息对象中
}
初始化接收对象与发送对象类似,只需要将消息发送方向改为接收即可。
(3)CAN启动主要包括设置位定时寄存器;设置消息对象的命令屏蔽寄存器;设置CAN允许Init位;开中断即可。代码如下:
void start_CAN (void)
{
SFRPAGE=CAN0_PAGE;
CAN0CN |=0x41; // 使能CCE和INIT位
CAN0ADR=BITREG; // 指向位定时寄存器
CAN0DAT=0x2640; // 指向命令掩码寄存器1
CAN0ADR=IF1CMDMSK;
//设置CAN RAM为写,写数据字节,置位TXrqst/NewDat,Clr IntPnd
CAN0DAT=0x0087;
CAN0ADR=IF2CMDMSK;// 指向命令掩码寄存器2
CAN0DATL=0x1F;//设置接收:读CAN RAM,读数据字节
CAN0CN |=0x06; // 全局初始化IE和SIE
CAN0CN &=~0x41; // 清除CCE和INIT位
}
(4)数据发送和接收。配置好以上信息,C8051F040就可以接收到CAN总线上的数据帧,执行相应命令或进行相应的数据处理,将反馈信息送入CAN数据寄存器,告知CAN发送消息号就可以将反馈数据传送到上位机处理。发送程序的部分代码如下:
void CAN_transmit (char MsgNum)
{
SFRPAGE=CAN0_PAGE;
CAN0ADR=IF1DATA1;
CAN0DAT=Txbuffer;
CAN0ADR=IF1CMDRQST;
CAN0DATL=MsgNum;
}
3 结束语
随着科学技术的不断进步,船舶自动化进一步向数字化方面发展,以开放性、分散性和数字通信为特征的现场总线体系结构,能充分适应船舶控制系统的要求。基于CAN总线的船舶监控系统具有很好的实时性,CAN现场总线技术的控制系统必将在更多的船舶上得到广泛的应用。
参考文献:
[1]饶运涛,邹继军等.现场总线CAN原理与应用技术[M].第二版.北京航空航天大学出版社,2007.
[2]张培仁,孙力.基于C语言C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2006.
[3]李巍等.现场总线技术在机舱自动化系统中的应用[J].船舶工程,2002,(2).
[4]蔡华锋等.C8051F040中CAN控制器的应用[J].应用天地,2005,(1).
[5]何燕平等.基于C8051F040的CAN总线智能节点设计[J].嵌入式网络应用.
关键词:现场总线;控制局域网;船舶监控系统;应用
中图分类号:TP273文献标识码:A
The CAN Fieldbus Technology Application in Ship Monitoring System
MA Li,XU Shan-lin
(Shanghai maritime university,Shanghai200135)
Key words: The fieldbus;CAN ;Ship Monitoring System;application
CAN(Controller Area Network),即控制局域网,是一种具有很高可靠性、支持分布式和实时控制的串行通信网络。CAN为多主方式工作,网络上任意节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从,且无需站地址等节点信息,通讯灵活。CAN协议模型结构只有3层,即只取OSI底层的物理层、数据链路层和应用层。CAN的最大特点是可靠性高,其节点在错误严重的情况下具有自动关闭输出功能,以使总线上其它操作不受影响。CAN的直接通信距离最远可达10km(速率在5kbps以下),通信速率最高可达1Mbps(此时通信距离最长为40m)。其通信介质可为双绞线、同轴电缆或光纤,选择灵活。CAN上的节点数主要取决于总线驱动电路,目前可达110个。在标准帧报文标识符有11位,而在扩展帧的报文标识符(29位)的个数几乎不受限制。
1 CAN总线在船舶的应用
CAN在船舶中的应用始于20世纪90年代初。1994年德国MTU公司成功地研制了基于CAN的MCS-51监控系统,开创了CAN网络船舶系统应用的新纪元。此后,CAN网络被广泛地用于船舶的远程控制、巡回检测、电站监控以及火灾报警系统中。CAN网络在船舶控制系统中的成功应用为解决船舶设备级(传感器、执行器、控制模块)的互联网络通信问题提供了新的数据传输协议,并由CAN控制器硬件完成协议的功能和服务。在CAN网络中,通过一根可同时传输电源和数据信号的总线可将所有满足CAN协议的设备挂接,并提供点对点、一点对多点和广播式三种通信方式。针对CAN在船舶中的日益广泛应用,美国国家海洋电子协会(NMEA,national marine electrons assciation)扩展了原有的NMEA0813协议,形成了新的NMEA2000协议,为CAN网络在船舶中应用制定了统一的标准和接口协议。
2 监控系统的基本结构
在一个监控系统中,测量、控制和执行单元是必不可少的。同时,在一个基本的通信网络中,网络硬件和协议控制器也是必需的。典型的基于CAN的监控系统结构设计如图1所示。
在图1中,基于CAN的监控系统包括以下几个部分:
(1)上位PC机收集总线上传输的所有信息,对系统的运行状态进行监控,检测所有设备的运行参数的调整及越限时的声光报警等功能。并通过CAN接口卡接入网络之中。
(2)智能测控单元(下位机系统)包括智能传感器、智能执行器和智能控制器等,它们被安装在测控现场,用于直接获取现场设备的参数或者执行相应操作和功能。智能测控单元和传统设备相比,区别在于它们本身带有支持CAN总线通信协议的CAN控制器模块。因而,单元3不仅可与上位机系统通信,同时也可根据系统设计需要从单元1接收数据或者向单元;2发送数据,实现现场底层设备之间的通信,这点对于某些系统来说是非常重要的。
2.1智能测控单元CAN通讯接口设计
智能测控单元主要以Cygnal公司出品的C8051F040单片机为核心构成。该单片机是完全集成的混合信号系统级芯片(SOC),具有与MCS-51完全兼容的指令内核。内部采用流水线结构,机器周期由标准的12个系统周期将为1个系统周期,峰值性能达到25MIPS。此外,C8051F040的内能还集成有CAN控制器、高速A/D转换器等,可以简化系统设计。C8051F040集成的是CAN控制器,要使CAN总线得以运行,还需在单片机上接CAN收发器,进行电气转换,将逻辑信号转换为平衡差分码。常用的CAN收发器为PHILIPS公司出品的PCA82C250、高速TJA1050等。这里选用的是PCA82C250,它可以提供对总线的差动发送和接收功能,与ISO11898标准完全兼容,有三种不同的工作方式,即高速(最高可达1Mbps)、斜率控制和待机,可根据实际情况选择。
C8051F040中的CAN的工作位速率可达1Mbps,实际速率可能受CAN总线上所选择的传输数据的物理层的限制。CAN处理器有32个消息对象,可以被配置为发送或接收数据。输入数据、消息对象及其标识掩码存储在CAN消息RAM中。所有数据发送和接收过滤的协议处理全部由CAN控制器完成,不需要CIP-51干预,这就使得用于CAN通信对CPU干涉最小。
该CAN控制器是可实现的Bosch全功能CAN模块,完全符合CAN规范2.0A和2.0B。CAN控制器的原理框图如图2所示。CAN核提供移位输出和输入(CANTX和CANRX)、消息的串/并转换及其它协议相关的任务(如数据发送和接收过滤)。消息RAM可存储32个可以在CAN网络上接收发送的消息对象。CAN寄存器和消息处理器为CAN寄存器和消息处理器为CAN控制器和CIP-51之间的数据传送和状态通知提供接口。
CIP-51可以通过特殊寄存器直接或间接访问CAN控制器中的CAN控制器寄存器(CAN0CN)、CAN测试寄存器(CAN0TST)和CAN状态寄存器(CAN0STA)。其它寄存器必须通过间接索引法访问。
2.1.1CAN控制器外围硬件电路实现
为了进一步提高系统的抗干扰能力,在CAN控制器引脚CANTX、CANRX和收发器PCA82C250之间并不是直接相连,而是通过高速光耦6N173构成的隔离电路后再与PCA82C250相连,这样就可以很好的实现总线上各节点的电气隔离。此通信物理层电路图如图3所示。
在PCA82C250与CAN总线接口部分也采用了一些安全和抗干扰措施。PCA82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线连接,电阻可以起到一定的限流作用,从而保护PCA82C250免受过流的冲击。在CANH和CANL与地之间各自接一个30pF的小电容,可以起到滤除总线上的高频干扰和防电磁辐射的能力。另外,在CANH和CANL之间并联一个15V的瞬态电压抑制二极管(TVS),可以保护PCA82C250在瞬间高电压情况下而不受损坏。PCA82C250的RS引脚上接有一个下拉电阻,电阻的大小可根据总线速率适当的调整,其值一般在16kΩ-140KΩ之间,图3中选用47KΩ。
C8051F040工作电压为2.7V~3.6V,其所有I/O口允许5V(极限值5.8V)输入,但是I/O口输出电平为VDD,而PCA82C250为5V系统,为了能够驱动其工作,在CANTX引脚上接一上拉电阻,其值为4.7KΩ。
2.1.2CAN通信软件实现
下位机CAN通信部分主要完成的任务是:将检测到的数据传送给上位机或其它下位机节点。同时,上位机可以对下位机的相关参数进行设置。
由以上可知,CAN节点通信主要包括系统初始化、发送程序、接收程序等。在本例中,系统软件采用结构化程序设计方案,使其具有较好的模块性和可移植性。
2.1.3系统初始化
初始化程序主要完成对所有报文对象的初始化(一般将所有值置零),对CAN控制器寄存器(CAN0CN)、位定时寄存器(BITREG)进行设置,还要对发送报文对象和接收报文对象分别进行初始化。其中,位定时寄存器的设置较为复杂,这里使用外部晶振为11.0592MHz,CAN通信速率为1Mbps。
(1)初始化CAN控制器的一般步骤为:将SFRPAGE寄存器设置为CAN0_PAGE;将CAN0CN寄存器中的INIT和CCE位设置为1;设置位定时寄存器和BRP扩展寄存器中的时序参数;初始化每个消息对象或将其MsgVal为设置为0(无效);将INIT清零。
(2)初始化发送对象的过程包括设置发送消息对象的命令屏蔽寄存器;设置仲裁寄存器;消息发送方向;指明消息长度和帧类型;选择发送消息号。部分代码如下:
void init_msg_object_TX (char MsgNum)
{
SFRPAGE=CAN0_PAGE;
CAN0ADR=IF1CMDMSK; // 指向命令掩码寄存器1
CAN0DAT=0x00B2;// 设为写,除了标识掩码和数据位
CAN0ADR=IF1ARB1; // 指向仲裁寄存器
CAN0DAT=0x0000;// 将仲裁ID设为最高优先级
CAN0DAT=0xA000;// 设置消息有效位,没有扩展ID,方向为写
CAN0DAT=0x0088; // 数据长度为8,数据帧
CAN0ADR=IF1CMDRQST;// 指向命令请求寄存器
CAN0DAT=MsgNum;// 写消息对象号,即对哪个消息对象进行操作
// 3~6个CAN时钟周期后,IF寄存器中的内容将被移到CAN存储器的消息对象中
}
初始化接收对象与发送对象类似,只需要将消息发送方向改为接收即可。
(3)CAN启动主要包括设置位定时寄存器;设置消息对象的命令屏蔽寄存器;设置CAN允许Init位;开中断即可。代码如下:
void start_CAN (void)
{
SFRPAGE=CAN0_PAGE;
CAN0CN |=0x41; // 使能CCE和INIT位
CAN0ADR=BITREG; // 指向位定时寄存器
CAN0DAT=0x2640; // 指向命令掩码寄存器1
CAN0ADR=IF1CMDMSK;
//设置CAN RAM为写,写数据字节,置位TXrqst/NewDat,Clr IntPnd
CAN0DAT=0x0087;
CAN0ADR=IF2CMDMSK;// 指向命令掩码寄存器2
CAN0DATL=0x1F;//设置接收:读CAN RAM,读数据字节
CAN0CN |=0x06; // 全局初始化IE和SIE
CAN0CN &=~0x41; // 清除CCE和INIT位
}
(4)数据发送和接收。配置好以上信息,C8051F040就可以接收到CAN总线上的数据帧,执行相应命令或进行相应的数据处理,将反馈信息送入CAN数据寄存器,告知CAN发送消息号就可以将反馈数据传送到上位机处理。发送程序的部分代码如下:
void CAN_transmit (char MsgNum)
{
SFRPAGE=CAN0_PAGE;
CAN0ADR=IF1DATA1;
CAN0DAT=Txbuffer;
CAN0ADR=IF1CMDRQST;
CAN0DATL=MsgNum;
}
3 结束语
随着科学技术的不断进步,船舶自动化进一步向数字化方面发展,以开放性、分散性和数字通信为特征的现场总线体系结构,能充分适应船舶控制系统的要求。基于CAN总线的船舶监控系统具有很好的实时性,CAN现场总线技术的控制系统必将在更多的船舶上得到广泛的应用。
参考文献:
[1]饶运涛,邹继军等.现场总线CAN原理与应用技术[M].第二版.北京航空航天大学出版社,2007.
[2]张培仁,孙力.基于C语言C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2006.
[3]李巍等.现场总线技术在机舱自动化系统中的应用[J].船舶工程,2002,(2).
[4]蔡华锋等.C8051F040中CAN控制器的应用[J].应用天地,2005,(1).
[5]何燕平等.基于C8051F040的CAN总线智能节点设计[J].嵌入式网络应用.