- 经验
- 10
- 分贝
- 0
- 家园分
- 38
- 在线时间:
- 12 小时
- 最后登录:
- 2021-4-20
- 帖子:
- 6
- 精华:
- 0
- 注册时间:
- 2014-7-2
- UID:
- 1030367
注册:2014-7-2
|
发表于 2020-7-10 15:23:10
|显示全部楼层
[url=]0[/url]
3、通讯协议
上位机和桥接板之间采用RS232总线进行数据传输,桥接卡和控制卡以及各个控制卡之间采用I2C总线进行数据的传输,通讯采用主叫和应答方式,数据传输中使用单片机进行解码[8]。
主叫方发出指令后,等待对方响应,如果主叫方写指令到被叫方,则被叫方收到指令实行操作后返回确认信号;如果从主叫方读指令,则被叫方在下一时刻占用总线后发送数据到主叫方,主叫方在0.5s内没有收到响应包,表明传输失败。若连续3次没有响应,则与对方通信连接失败。
为了实现数据的一致性,RS-232和I2C总线采用相同的通信协议。
数据传输时以“包”进行封装,中间加入长度位和奇偶校验位。封装格式:起始字符+长度字符 +序列号+源地址+目的地址包类型+传输数据+包校验+结束字符;数据传输均采用ASCII码。
包的定义:起始位定义为‘#’,占用一个字节,接收方接收到‘#’时,表明数据开始传输;长度字符定义为除起始字符、结束字符和校验字符的所有原始字符的长度,占用一个字节;源地址:发送方地址,占用一个字节;目的地址:接收方地址,占用一个字节,当为‘00’时,定义为广播地址;包类型:占用一个字节,表明数据的类型,接收方根据包类型实行对应操作;传输数据:控制量的大小;包校验:定义为长度字符,源地址,目的地址,包类型和数据之和,占用两个字节;结束位:定义为‘~’,当接收方接收到结束字符时,表明本包传输结束,对数据包进行处理,长度位和校验位正确时实行指令,否则,放弃改数据包。
4、实验结果
使用该通讯系统实现和四控制卡之间的通讯控制,使用串口助手进行数据收发,在发送数据间隔为5us的情况下对该通讯系统进行测试,在进行8小时的测试中,系统没有出现数据丢失、错误、死机现象;使用广播地址进行数据发送,返回信号正确,没出现死机现象。
使用该通讯系统对四个电机进行控制,电机实际输出情况如表1:
本实验数据证明了该通讯系统的可用性及数据传输的准确性。
使用该系统采用广播地址实现四个电机同步联动,各个轴的运动情况如表2:
本实验数据证明了各个电机实现了指定的转动角度;各个轴运动期间,电机的状态经过I2C总线[9]及RS-232总线通讯系统成功的发送到了上位机,通讯系统没有出现死机和数据丢失,经过该实验,证明了数据传输的正确性。
|
|
|