原创 基于IO模块的CANopen报文学习(2)

2015-1-13 11:25 1631 17 18 分类: 工业电子

基于IO模块的CANopen报文学习(2)

二、SDO报文

SDO报文主要用来访问对象字典中的各个参数。它是基于变量地址(索引和子索引锁 定各个参数的地址)实现对各个参数的读写。SDO报文的格式如下表2所示。

表 2 SDO报文格式

节点 ID

功能码

索引

索引

子索引

Data4

Data3

Data2

Data1

注:节点ID为600h+设备地址,四个数据按小端格式排列,即反向放置。由于报文都是以

字节为单位,而索引为16位长度,故将其分开,分为高8位和地8位。功能码主要说明该报文的具体功能,具体分为读和写,以写入为例,按照每次写入的字节数目对应的功能码又可细分为2F(读一字节数据,如数字量)、2B(读2字节长度的数据如模拟量)、27(读3字节长度的数据,比较少见)、23(读4字节长度的数据)。读报文时则不必说明数据的长度,通用为40h,但设备响应的SDO报文的功能码区会显示读取的数据长度,具体响应的功能码为:4F(1字节长度)、4B(2字节长度)、47(3字节 长 度)、43(4字节长)。下面以读写IO模块模拟量通道的数值为例分别说明。

IO模块的索引6411H对各个模拟量。子索引01对应1号通道,02对应2号通道,共两个通道。例如对1号通道写入300可发送如下报文:

0x642 : 2b 11 64 01 2c 01 00 00

成功后IO反馈给计算机如下报文,表示写入成功。

0x5C2 : 60 11 64 01 00 00 00 00(功能码60h表示成功,如果是80h则是失败)

读取该通道的当前值可发送如下报文:

0x642: 40 11 64 01 00 00 00 00

IO响应给计算机的报文:

0x5C2 : 4b 11 64 01 2c 01 00 00

注意:写入的数值高位在byte6,低位在byte5,例如,上文中应该翻译为012c(十进制的300)。反馈报文的ID为580h+节点地址。

三、PDO报文

PDO报文用来传输有实时性要求的过程数据,传输类型可以是事件类型、同步传输、周期传输。PDO报文基于生产者消费者模式,所以使用之前需要先配置好生产者和消费者,这些在映射参数(1600h+n)和通信参数(1400h+n)里面完成。具体分以下三步完成。注:n 为设备地址

3.1 RPDO(接收型 PDO)

①在索引1400h+n,子索引01确定的变量里写入COB-ID(4字节)

②在索引1400h+n,子索引02里面写入传输类型《t》(1字节)t=1--240,表示设备每收到t个同步报文发送一次 PDO;t=253,表示每收到一个远程(RTR=1)PDO请求后方可发送;t=255,表示传输类型为事件类型,每当一个预先定义的事件发生时设备自动发送一条PDO报文。

③在索引1600h+n下面定义映射关系,具体由各个子索引完成。子索引00:定义其后面的总子索引数目,在该例子中为2;子索引01:写入第一个变量的映射地址,按以下格式写:

索引(2字节)-子索引(1字节)-数据类型(1字节)。例如将1号通道的模拟量值定义为映射变量,它的索引为6401h,子索引为01,数据类型为2字节16位,代号为10h,连起来即64010110h;

子索引02:这里定义1-8通道的数字量输入(索引6000h:01)为映射变量,故其内容为60000108h。至此已完成配置。

3.2 TPDO(发送型PDO)

①在索引1800h+n,子索引01写入COB-ID;

②在其对应子索引02写入传输类型,同3.1;

③在索引1A00h+n配置映射,具体同3.1。

四、心跳报文

如果希望设备每隔一段时间自动汇报自身运行状态,可在索引1017H设置心跳报文,默认时间间隔为0ms,即禁止心跳报文。如果需要改功能,可直接向1017H写入具体的间隔时间即可,数据单位为 ms。如希望每隔1s发送一次,可写入如下报文:

0x642 : 2b 17 10 00 e8 03 00 00

设置完成后每个一秒都会收到一条类似“0x742 : 7f”(反馈为节点地址为  42,预操作状态)

注意:本文中默认将设备地址设为42

五、同步报文-SYNC

同步报文只用于PDO报文中,服务于同步传输类型的PDO报文。同步报文的产生周期可在索引1006h,子索引00中设定,时间单位为微秒us。

例如,如果想10ms产生一个同步报文,可将10000(0x2710)写入到上述索引中,具体发送如下报文即可。

0x642 23 06 10 00 10 27 00 00(假设节点地址为42)若想停止产生同步报文,将 上述值改为0即可,如果要开始同步报文,将0x40000080写入索引1005h,子索引00中即可。同步报文 ID为80h,没有数据。格式如下。

0x80 00 00 00 00 00 00 00 00

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户403664 2015-1-15 10:31

欢迎!!!!
相关推荐阅读
用户1822298 2015-03-03 10:31
CAN总线分析仪在传感器信息反馈技术中的应用
CAN总线分析仪在传感器信息反馈技术中的应用 摘要:本文设计了信息反馈系统,采用CAN总线分析仪实现上位机和实验平台之间的通信。结合系统需要,编写上位机CAN通信程序,读取MEMS传感器中的数...
用户1822298 2015-02-28 17:50
利用PcanView显示模拟量值的变化
利用思泰的产品USB-CANmodul及与其配套的CAN/CANopen报文分析软件PcanView,来显示CANopen IO-C12模拟量输入的值。以此可以验证IO模块输入通道是否可以正常工作,模...
用户1822298 2015-01-13 11:22
基于IO模块的CANopen报文学习(1)
基于IO模块的CANopen报文学习(1) CANopen报文大致分为 NMT管理报文、SDO报文、PDO报文、应急报文。下面分别对这几类报文详细的工作过程讲解。一、NMT报文CANopen 设备有...
我要评论
1
17
关闭 站长推荐上一条 /3 下一条