本文来源电子发烧友社区,作者:h1654155285.8644, 帖子地址:https://bbs.elecfans.com/jishu_2296730_1_1.html
本人收到开发板后,进行了基础功能的测试,便根据所申请内容进行课题开发。本开发板支持MIPI接口的LCD显示器,但是本人没有该接口的显示,只能用一个串口屏代替该接口的显示器进行波形的显示。我看在测评内容中有位仁兄申请了一块MIPI接口的LCD显示器,很是羡慕,自己也该申请一下。下面对本人所做内容进行汇报。
本人计划开发项目名称为“抽油机微电网能量转换控制器的研制”。抽油机是一种位能性负载,在运行过程中存在倒发电的情况,为了节约能源,并利用倒发电能量,油田的很多丛式井组采用共直流母线形式供电,即将为抽油机供电的变频器直流侧并联在一起,并在直流母线上连接太阳能、风能等新能源发电设备,从而组成微电网。但是在丛式井组中,如果多台抽油机同时处于倒发电状态,大量能量进入直流母线,使直流母线电压升压,危及设备正常运行。因此需要设计一种控制器,能够调节各抽油机的运行状态,使其耗能和倒发电状态错开,实现能量利用的最大化
该控制器利用基于直流侧母线的载波通信方式,读取各抽油机的运行状态,并预测各抽油机倒发电的时刻,如果某些抽油机的倒发电处于同一时刻,则利用载波通信向对应抽油机发出调频指令,使其倒发电时刻错开。此外,该控制器还需要测量每台抽油机的功率、位移参数,组成电功图,利用控制器的强大算力对电功图进行分析,确定其工作状态,为运行人员提供参考,并将测量结果和分析情况通过LCD显示器提供给用户,同时利用以太网将数据传输至后台。
试用时间比较短,不能在现场进行测试,故只能对部分功能进行简单开发。本帖子主要对波形显示这部分内容进行介绍。
对于波形显示系统而言,硬件电路比较简单,使用了RZ/G2L开发板和大彩3.5寸串口屏,串口屏连接至开发板的串口1。
本报告中的串口屏共有三个界面,分别是电功图界面、功率曲线界面和载波通信界面。
(1)电功图界面
该界面用于显示抽油机的电功图,电功图为抽油机的位移和功率曲线的合成,电功图有不同的表示方法,本人使用两个曲线分别显示的方法进行展示。另有三个按钮,用于在三个界面中进行切换。
(2)功率曲线界面
该界面用于显示功率变化曲线,此外在上方的三个文本框分别显示当前的瞬时功率、一个冲程内的最大功率和最小功率。
(3)载波通信界面
载波通信界面用于载波通信数据传输的演示。接收数据对应的文本框用于显示接收到的数据;发送数据对应的文本框用于显示要发送的数据,按下“发送”按钮,该数据会一载波形式向外发送。载波通信对应程序会在下一次报告中给予展示。
开发板程序的作用是向串口屏下发指令进行电功图的绘制、瞬时波形的显示、功率大小的显示和载波通信。本次报告不包括载波通信的内容。由于只是在家模拟,没有进行现场进行测试,故波形数据是直接借用的以前所采数据。另外实现的功能不复杂,故采用顺序编程形式,未采用多线程编程。程序框图如下:
(1)串口初始化程序
char dev[] = "/dev/ttySC1";
struct termios oldtio,newtio;
speed_t speed = B115200;
int next_option,havearg = 0,flow = 0;
const char *const short_opt = "fd:";
fd = open(dev, O_RDWR | O_NONBLOCK| O_NOCTTY | O_NDELAY);
if (fd < 0) {
printf("Can't Open Serial Port!
");
exit(0);
}
tcgetattr(fd,&oldtio);
bzero(&newtio,sizeof(newtio));
newtio.c_cflag = speed|CS8|CLOCAL|CREAD;
newtio.c_cflag &= ~CSTOPB;
newtio.c_cflag &= ~PARENB;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
tcgetattr(fd,&oldtio);
设置串口1为115200波特率
(2)电功图的绘制
绘制电功图只需将两个曲线的数据上传至串口屏即可。程序代码如下。
void power_diagram(void)
{
unsigned char temp[250],i,t;
t=0;
temp[t++]=0xEE;
temp[t++]=0xB1;
temp[t++]=0x32;
for(i=0;i<3;i++)
temp[t++]=0x00;
temp[t++]=0x01;
for(i=0;i<2;i++)
temp[t++]=0x00;
temp[t++]=200;
for(i=0;i<200;i++)
{
temp[t++]=(unsigned long)move_data[i]*235/338+10;
}
temp[t++]=0xFF;
temp[t++]=0xFC;
temp[t++]=0xFF;
temp[t++]=0xFF;
write(fd, temp, t);
usleep(100000);
t=0;
temp[t++]=0xEE;
temp[t++]=0xB1;
temp[t++]=0x32;
for(i=0;i<3;i++)
temp[t++]=0x00;
temp[t++]=0x01;
temp[t++]=0x01;
temp[t++]=0x00;
temp[t++]=200;
for(i=0;i<200;i++)
{
temp[t++]=(unsigned char)((power_data[i]+1.08)*235/(7.88+1.08)+10);
}
temp[t++]=0xFF;
temp[t++]=0xFC;
temp[t++]=0xFF;
temp[t++]=0xFF;
write(fd, temp, t);
}
(3)功率曲线绘制
曲线绘制采用在曲线头添加数据的方法,瞬时功率采用格式化本文显示的方法,这里不再详细介绍。
四、运行效果
本图为电功图运行画面,其中白色为位移曲线,黄色为功率曲线,该曲线反映了抽油机的电功率和悬点位移之间的对应关系。
本图是瞬时功率曲线,波形实时向右移动,左上角的文本框显示当前的功率大小。
由于某些原因,本人缺少MIPI接口的显示器,只能利用串口屏进行显示操作,没有充分体验到该开发板的强大能力,稍显遗憾。如果时间充裕,本人会自行购买MIPI接口显示器、摄像头等设备,丰富项目的开发内容。
【附上开发板体验视频(详见作者原文)】
全部0条评论
快来发表一下你的评论吧 !