前语
现场总线是当今主动化范畴技术发展的热门之一,被誉为主动化范畴的计算机局域网。它的呈现为分布式操控体系完结各节点之间实时、牢靠的数据通讯供给了强有力的技术支撑。CAN(Controller AreaNetwork)归于现场总线的范畴,它是一种有用支撑分布式操控或实时操控的串行通讯网络。较之现在许多RS-485依据R线构建的分布式操控体系而言,依据CAN总线的分布式操控体系在以下方面具有显着的优越性:
首要,CAN操控器作业于多主方法,网络中的各节点都可依据总线拜访优先权(取决于报文标识符)选用无损结构的逐位裁定的方法竞赛向总线发送数据,且 CAN协议废除了站地址编码,而代之以对通讯数据进行编码,这可使不同的节点一起接纳到相同的数据,这些特色使得CAN总线构成的网络各节点之间的数据通讯实时性强,并且简单构成冗余结构,进步体系的牢靠性和体系的灵活性。而运用RS-485只能构成主从式结构体系,通讯方法也只能以主站轮询的方法进行,体系的实时性、牢靠性较差;
其次,CAN总线经过CAN操控器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状况只能是高电平或悬浮状况,CANL端只能是低电平或悬浮状况。这就确保不会呈现象在RS-485网络中,当体系有过错,呈现多节点一起向总线发送数据时,导致总线呈现短路,然后损坏某些节点的现象。并且CAN节点在过错严峻的情况下具有主动封闭输出功用,以使总线上其他节点的操作不受影响,然后确保不会呈现象在网络中,因单个节点呈现问题,使得总线处于“死锁”状况。
并且,CAN具有的完善的通讯协议可由CAN操控器芯片及其接口芯片来完结,然后大大下降体系开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS- 485所无法比拟的。别的,与其它现场总线比较而言,CAN总线是具有通讯速率高、简单完结、且性价比高级许多特色的一种已构成国际规范的现场总线。这些也是现在 CAN总线应用于很多范畴,具有微弱的市场竞赛力的重要原因。
硬件电路规划
CAN遵从ISO的规范模型,分为数据链路层和物理层。在工程上,这两层一般由CAN操控器和收发器完结的。当时,市道上有两种CAN总线器材可供挑选:一种是带有片上CAN的微操控器,如P8XC591/2、87C196CA/CB、MC68376、PowerPC555等,运用这种集成器材便利用户制造印制板,电路图也更紧凑;别的一种是独立的CAN操控器,如Philips SJA1000、Intel公司82526以及MCP2510(具有SPI接口,便利MCU衔接)等, 运用独立的CAN操控器的潜在优势是,体系开发人员能够依据所需从很多品种的单片机中挑选最理想的体系规划方案。
节点微操控器选用单片机80C196KC,CAN接口由独立操控器SJA1000和CAN操控器接口芯片82C250组成。SJA1000在软件上和引脚上都是与它的前款PCA82C200独立操控器兼容的,并增加了许多新功用:规范帧数据结构和扩展帧数据结构,并且这两种帧格作为式都具有单/双接纳过滤器;64字节的接纳FIFO;可读写拜访的过错计数器和过错约束报警以及只听方法等等。
SJA1000有两种作业形式:Basic CAN形式和PeliCAN形式,其间PeliCAN形式全面支撑CAN2.0B协议。SJA1000作为微操控器的片外扩展芯片,其片选引脚CS接在微操控器的地址译码器上,然后决议了CAN操控器各寄存器的地址。SJA1000经过CAN操控器接口芯片82C250衔接在物理总线上。82C250器材供给对总线的差动发送才能和对CAN操控器的差动接受才能,彻底和“ISO11898”规范兼容。其引脚8答应挑选三种不同的作业方法:高速、斜率操控和待机。在低速和总线长度较短时,一般选用斜率操控方法,约束上升和下降斜率,下降射频搅扰,斜率可经过由引脚8至地衔接的电阻进行操控。斜率正比于引脚8 上的电流输出。为进一步进步体系抗搅扰才能,在CAN操控器SJA1000和CAN操控器接口82C250之间加接6N137光电阻隔芯片,并选用DC- DC变换器阻隔电源。通讯信号传输到导线的端点时会产生反射,反射信号会搅扰正常信号的传输,因此总线两头接有终端电阻R1、R2,以消除反射信号,其阻值约等于传输电缆的特性阻抗。
软件规划
CAN总线节点要有用、实时地完结通讯使命,软件的规划是要害,也是难点。它首要包含节点初始化程序、报文发送程序、报文接纳程序 以及CAN总线犯错处理程序等等。CAN操控器芯片SJA1000的内部寄存器是以作为微操控器的片外寄存器存在并效果的。微操控器和SJA1000之 间状况、操控和指令的交流都是经过在复位形式或作业形式下对这些寄存器的读写来完结的。在初始化CAN内部寄存器时留意使得各节点的位 速率有必要共同,并且接、发两边有必要同步。报文的接纳首要有两种方法:中止和查询接纳方法。
为进步通讯的实时性,文中选用中止接纳方法,并且这样也可确保接纳缓存器不会呈现数据溢呈现象。SJA1000的Basic CAN作业形式是与其前一款PCA82C200独立操控器相兼容的形式, 而PeliCAN作业形式支撑CAN协议中的更多功用,它的程序规划也与之有所不同。下面给出SJA1000作业在模PeliCAN式下的节点初始化、报文发送、报文接纳的196汇编源程序。
INITIALIZE: 初始化子程序
LDB AL, #09H; 初始化形式寄存器进入复位形式
STB AL, MODE; 挑选单滤波方法
LDB AL, #88H; 时钟分频器
STB AL, CDR; 选Peli CAN形式
LDB AL, #00H
STB AL, ACR0; 初始化接纳代码寄存器
LDB AL, #60H
STB AL, ACR1
LDB AL, #00H
STB AL, AMR0; 初始化接屏蔽寄存器
LDB AL, #3FH; 只接纳标识符为2,3的报文
STB AL, AMR1
LDB AL, #8FH
STB AL, IER; 中止使能寄存器
LDB AL, #01H; 总线守时寄存器0、1的设置
STB AL, BTR0;
LDB AL, #1CH; 在16MHz晶振情况下
STB AL, BTR1; 波特率设置为250
LDB AL, #0AAH
STB AL, OCR; 输出操控器寄存器设置
LDB AL, #0H; 接纳缓存器开始地址设为0
STB AL, RBSA;
LDB AL, #01H;
ORB AL, MODE;
STB AL, MODE; 回来作业形式
RET TRANSMIT:; 发送子程序
LDB AL, SR
SRCVE: JBS AL,4, SRCVE;正接纳?