基于CAN总线的实验室管理系统

来源:互联网 发布:北京赛车软件下载 编辑:程序博客网 时间:2024/06/12 01:51

STC15W408AS单片机

资源

IO分配

IO 分配 1.0 控制灯 1.1 CAN_INT 1.2 CAN_CS 1.3 CAN_SI 1.4 CAN_SO 1.5 CAN_SCK 1.6 电流状态模拟量输入 1.7 电压状态模拟量输入 3.0 串口 3.1 串口 3.2 设备号选择位0 3.3 设备号选择位1 3.4 设备号选择位2 3.5 设备号选择位3 3.6 设备号选择位4 3.7 设备号选择位5 5.4 空 5.5 继电器控制

CAN总线

CAN 报文帧

普通帧(108bit)

帧以起始帧 ( SOF)位开始, SOF 为显性状态,允许所有节点的硬同步。
SOF之后是仲裁字段, 由12个位组成, 分别为11个标识位和一个远程发送请求 ( Remote Transmission Request, RTR)位。 RTR 位用于区分报文是数据帧( RTR 位为显性状态)还是远程帧 ( RTR 位为隐性状态) 。
仲裁字段之后是控制字段,由 6 个位组成。控制字段的第一位为标识扩展( Identifier Extension, IDE)位,该位应是显性状态来指定标准帧。标识扩展位的下一位为零保留位( RB0) , CAN 协议将其定义为显性位。控制字段的其余 4 位为数据长度码 ( Data Length Code,DLC) ,用来指定报文中包含的数据字节数 ( 0 到 8 字节) 。
控制字段之后为数据字段,包含要发送的任何数据字节。数据字段长度由上述 DLC 定义 ( 0 到 8 字节)。
数据字段之后为循环冗余校验( CRC)字段,用来检测报文传输错误。 CRC 字段包含一个 15 位的 CRC 序列,之后是隐性的 CRC 定界位。
最后一个字段是确认字段 ( ACK),由 2 个位组成。在确认时隙( ACK Slot)位执行期间,发送节点发出一个隐性位。任何收到无错误帧的节点会发回一个显性位(无论该节点是否配置为接受该报文与否)来确认帧收到无误。确认字段以隐性确认定界符结束,该定界符可能不允许被改写为显性位。

扩展数据帧(128bit)

在扩展 CAN 数据帧中,紧随 SOF 位的是 32 位的仲裁字段。仲裁字段的前 11 位为 29 位标识符的最高有效位( Most Significant bit, MSb)(基本lD) 。紧随这 11 位的是替代远程请求 ( SubstituteRemote Request, SRR)位,定义为隐性状态。 SRR位之后是 lDE 位,该位为隐性状态时表示这是扩展的CAN 帧。
应该注意的是, 如果发送完扩展帧标识符的前 11 位后,总线仲裁无果,而此时其中一个等待仲裁的节点发出标准 CAN 数据帧 ( 11 位标识符),那么,由于节点发出了显性 lDE 位而使标准 CAN 帧赢得总线仲裁。另外,扩展 CAN 帧的 SRR 位应为隐性,以允许正在发送标准CAN 远程帧的节点发出显性 RTR 位。
SRR和lDE位之后是标识符的其余18位(扩展lD) 及一个远程发送请求位。
为使标准帧和扩展帧都能在共享网络上发送,应将29位扩展报文标识符拆成高 11 位和低 18 位两部分。拆分后可确保 lDE 位在标准数据帧和扩展数据帧中的位置保持一致。
仲裁字段之后是 6 位控制字段。控制字段前两位为保留位,必须定义为显性位。其余 4 位为 DLC,用来指定报文中包含的数据字节数。扩展数据帧的其他部分 (数据字段、 CRC 字段、确认字段、帧结尾和间断)与标准数据帧的结构相同 。

选择

选择帧格式

为保证63个电气节点可用,同时兼顾8个命令,所以采用普通帧11位仲裁仍可保证2个位的空余以留今后扩展,若仍不足,可采用扩展帧。

bit explain bit10~5 地址位 bit4~3 保留 bit2~1 00:关电源 01:开电源 10:电压 11:电流 bit0 0:发送 1:返回

如“2x00111100000”为主机向0F号节点发送关电源请求。
如“2x11110000001”为3C节点告诉主机已经关闭电源。

数据格式

根据不同命令,数据最大可达八字节。

串口

处理方式

采用ASCII码,串口5毫秒无数据则断帧处理。
命令格式为,命令本身+空格+地址(+数据)

已实现命令

命令 说明 示例 OpenPower 打开目标节点电源 OpenPower 0F DownPower 关闭目标节点电源 DownPower 0F InquireV 查询目标节点电压 InquireV 0F InquireI 查询目标节点电流 InquireI 0F

其他设备选型

其他

致谢