作者/顾敏鑫、陶杰,苏州农业职业技术学院
基于wif i和组态技术的舵机远程控制系统设计与实现
作者/顾敏鑫、陶杰,苏州农业职业技术学院
本文利用wifi技术设计一ASMC-03大扭矩舵机远程操控系统,采用 LAPIS的ML610Q496作为MCU制作远程驱动终端,使用USR C210WiFi模块实现wifi通信、TLC5618 DAC控制舵机,并定义了上层通信协议,编写程序,利用组态王设计操作界面,并和数据库联接,实现远程操控舵机和舵机角度查询。
组态技术;wif i;ML610Q496;远程驱动
ASMC–03大扭矩舵机模块,可用于机器人、机械臂、阀门控制,摄像机云台控制等方面,本项目将其用于远程摄像机底座控制,实现远程调节摄像机视角功能。可采用模拟/脉冲两种方式控制。本项目采用模拟电压模式控制,输入电压为0–5V,0.22V对应0゜,4.78V对应300゜。
整个项目设计方案如图1所示,由监控终端、驱动终端、AP、数据库服务器等组成系统。监控终端通过互联网连接AP,AP与驱动终端之间通过无线网通信,监控终端可远程发指令给驱动终端操控电机,并可通过指令查询舵机的位置数据,存储在数据库服务器,监控终端可查询实时数据和历史记录。
图1 系统示意图
驱动终端电路主要包括MCU、wif i模块、ADC模块,以及辅助的接口连接电路。MCU与wif i模块通过串口通信,接入wif i。MCU通过I2C与DAC模块通信,通过DAC输出电压,控制舵机驱动模块,硬件组成如图2所示。
图2 硬件组成示意图
驱动终端的MCU采用 LAPIS的ML610Q496,采用5V电压供电,可提供的接口有UART(5通道)、SPI(1通道)、I2C(1通道)。限于篇幅,其最小系统的电路图可参考相关手册资料[2]
Wif i模块采用USR–C210,提供串口与wif i的转换功能,其与MCU之间通过串口连接[3]。因该模块采用3.3V电压供电所有与MCU的串口之间需要加接电压转换电路,其与MCU的电路图如图3所示,包括WRXD、WTXD;以及复位端WREST,用于模块复位, 低电平有效,拉低至少100ms。
图3 wifi模块电路图
本项目采用 DAC模块,可实现双路12位的DAC,采用5V电压供电。MCU与TLC5618DAC模块采用I2C总线通信,实现DAC模拟量输出控制。
就整个系统而言,经过互联网、AP、wif i模块和串口的传送,在MCU和远程上位机之间进行数据透传,为了统一上层数据的含义,制定了上层通信协议,定义的格式如下:
表头(1B)地址码(4B)分割码(1B)命令码(1B)数据长度(1B)传送数据(≤256B)和校验(1B)表尾(1B)68 A0 A1 A2 A3 68 CMD LEN D0~Dn CS 16
其中,LEN 为需要传送的数据长度,占用1B,如果不需要传送数据,LEN=0;D0~Dn 为传送的数据,低位在前、高位在后,不超过256字节。 上层通信协议支持1条查询指令、1条控制指令。查询指令的命令码CMD为0x01,用来获取相应的舵机数据。数据长度为 0x00;对应的返回数据帧命令码CMD为0x01,数据长度为1,数据为HEX,表示当前舵机的角度,范围在0~180°。
控制指令的命令码CMD为0x02,用来控制相应的舵机转动。数据长度为 0x10;数据内容为 C0 C1两个字节,其中C0 为控制使能:0不控、1使能控制;C1为HEX,表示0~180°的控制角度;对应的返回数据帧命令码CMD为0x02,数据长度为1,数据为HEX,表示当前舵机的角度,范围在 0~180°。
具体组帧时,采用数组g_Wif i Buf [ ]实现,图4所示为返回数据帧组帧的流程图,用于查询和设置后的返回数据,g_add[4]为节点地址,g_servoAngle[6]为当前舵机角度;GetChecksum(g_Wif i Buf [0],pos)为和校验函数,从数组g_Wif i Buf [0]起始,共有pos个字节相加产生和校验码。
另外,本项目没有采用wif i模块提供的自带心跳包功能,在应用层利用上层通信协议自定义了心跳帧,每隔2s发送,定义其命令码CMD为0xFE,上传数据内容是当前心跳包计数值。
整个终端模块的主流程分为四个阶段,包括开机处理、初始化、主循环任务、各子任务分解。系统流程图如图5所示,开始阶段单片机开机初始化,主要进行上电自检、芯片startup等工作。而后进行硬件初始化,包括各引脚的配置、RAM、Flash、串口通信等方面的参数设置,主流程中采用查询方式,根据串口中断的处理情况,进行上位机查询和控制命令处理;根据2s定时中断标记,发送心跳包和处理响应情况。
操作界面采用组态软件Kingview7.0,设计操作和监控界面。数据库采用mySQL5.5,当操作界面有动作,命令舵机转动或查询舵机角度,则将给定角度和查询时间刷新,写入mySQL数据库中对应的实时数据表,并通过触发器在操作记录表中插入一条操作记录。上位机软件采用c#编程,每隔1s从操作记录表中读取最新操作记录,判断是否有新的操作,并根据上层通信协议组帧,下发给驱动终端,并接受驱动终端的返回数据,写入数据库内;同时每隔2s,接收上传的心跳帧进行处理。
图4 上层帧组帧流程图
操作界面涉及的各个参数,主要包括各个舵机的位置设定值、实时角度,以及操作按钮、查询按钮对应的开关量,在上位机系统的ODBC数据源管理器中添加mySQL数据库驱动程序后,通过组态软件工程浏览器中提供的SQL访问管理器工具,创建记录体,将变量与数据库表中对应的字段联接,并在组态画面的命令语言中利用组态软件提供的SQLConnect、SQLUpdate等数据库访问函数编程,即可实现组态界面访问数据库的功能[4]。
图5 系统流程图
根据手册,在局域网内检测调试,在USR–C210web设置页面中,先设置wif i参数,设置wif i组网方式为STA,设置AP的网络名称和密码,IP地址为192.168.1.101;在透传参数设置中,先根据驱动终端规定的串口协议设置串口参数,而后将工作模式为透传,SocketB协议设为TCP–Client,根据上位机的网络编程设定端口为5555,选取服务器所在地址192.168.1.200,将上位机作为服务器,设置IP地址,查看数据库和操作界面,通过测试,系统能够实现预期的控制效果,满足监控需要。
* [1] 陶杰,聂琼,过琦芳.基于zigbee与PLC的圈舍环境监控系统设计与实现[J].江苏农业科学 2015(43):458-462.
* [2] 高新,张俊哲,耿春丽.基于ML610Q496掉电事件采集器的设计.电测与仪表2016(53):50-53
* [3] 杨玲,朱江,程勇,刘秋玥.基于安卓的无线体征信息监测系统设计与实现.电子测量技术2015(38):121-124
* [4] 孙明革,朱喜林.基于组态王软件下的SQL数据库技术.控制系统2006(22):109-111
苏州农业职业技术学院优秀毕业论文资助项目(LWXT201710)