2.上位机与DSP的串口通讯协议
2.1 上位机向DSP发送数据的格式
上位机向DSP发送的数据均为6个字符,格式如表2-1。
表2-1 上位机发布指令的格式
参数1 参数2 高位数字 中间数字 起始符 $ 类型符 类型字符 参数3 低位数字 结束符 ; 所有指令均以符号’$’开始,以符号’;’结束,类型符表示了参数的类型,中间三位是ASCII表示的参数值。因为只有三位,所以表示的参数范围是0~255。
上位机向DSP发送的所有指令列表如表2-2所示。
表2-2 上位机发送指令列表 字符串表示 $C000; $X***; $L000; 开环 $L001; 闭环 $S***; $R000; $P***; $I***; $D***; $T001; P $T002; PI $T003; PID 指令 清除LCD 控制量初始值 开环/闭环 设定转速 PID控制器复位 比例系数 积分时间常数 微分时间常数 PID类型 16位进制数据表示 24 43 30 30 30 3B 24 58 3* 3* 3* 3B 24 4C 30 30 30 3B 24 4C 30 30 31 3B 24 53 3* 3* 3* 3B 24 52 30 30 30 3B 24 50 3* 3* 3* 3B 24 49 3* 3* 3* 3B 24 44 3* 3* 3* 3B 24 54 30 30 31 3B 24 54 30 30 32 3B 24 54 30 30 33 3B 注:表中’*’表示0~9中的某个数字。 2.2 上位机几个指令菜单的发送内容
在主菜单的“发送指令”菜单下,有三个指令用于向DSP发送指令,它们执行的指令顺序如以下几个表所示。DSP应该在SCI接收中断中解析接收到的指令,并做相应处理。
表2-3 “设置PID控制器”执行顺序 DSP应做的处理 清除LCD(可选) 设置D/A输出的初始值,以改变风扇的当前转速 修改开环/闭环变量 修改设定转速变量 清除历史误差项,令PID初始输出等于初始控制量 指令 清除LCD 控制量初始值 开环/闭环 设定转速 PID控制器复位 比例系数 积分时间常数 微分时间常数 PID类型 修改比例系数 修改积分时间常数 修改微分时间常数 修改PID类型,更具P、I、D参数计算数字化PID中的参数 表2-4 “设定转速”执行顺序 DSP应做的处理 清除LCD(可选) 修改设定转速
表2-5 “开环/闭环”执行顺序 DSP应做的处理 清除LCD(可选) 修改开环/闭环 指令 清除LCD 设定转速 指令 清除LCD 开环/闭环 2.3 DSP向上位机上传数据格式
DSP向上位机上传数据格式如表2-6所示。
表2-6 DSP向上位机上传数据格式 数字1 数字2 数字3 数字4 高位 - - - 起始符 # 类型符 类型字符 数字5 低位 结束符 ; DSP可以将接收到的表2-2内的指令用‘#’替换‘$’,并在前两位数据位添0后返回给上位机,表明DSP已经成功接收指令,并执行了指令。
DSP主要向上位机传送转速和控制量,指令如下表。
表2-7 上位机接收的转速和控制量数据
字符串表示 16位进制数据表示 #V*****; #U*****; 23 56 3* 3* 3* 3* 3* 3B 23 55 3* 3* 3* 3* 3* 3B 指令 转速 控制量 注:转速和控制量的范围是0~255,所以在指令的参数值中只有后3位有用。 2.4 上位机接收到数据后的处理
上位机使用MSComm控件进行串口通讯,在OmComm事件中接收到数据后,处理数据的流程如图2-1所示。
在DSP端发送转速和控制量时没有先后顺序区别,甚至可以只发送转速或控制量。