【飞凌RZ/G2L开发板试用体验】第二篇 基于飞凌RZ/G2L开发板的波形显示系统的搭建

描述

本文来源电子发烧友社区,作者:h1654155285.8644, 帖子地址:https://bbs.elecfans.com/jishu_2296730_1_1.html


本人收到开发板后,进行了基础功能的测试,便根据所申请内容进行课题开发。本开发板支持MIPI接口的LCD显示器,但是本人没有该接口的显示,只能用一个串口屏代替该接口的显示器进行波形的显示。我看在测评内容中有位仁兄申请了一块MIPI接口的LCD显示器,很是羡慕,自己也该申请一下。下面对本人所做内容进行汇报。

一、开发内容

本人计划开发项目名称为“抽油机微电网能量转换控制器的研制”。抽油机是一种位能性负载,在运行过程中存在倒发电的情况,为了节约能源,并利用倒发电能量,油田的很多丛式井组采用共直流母线形式供电,即将为抽油机供电的变频器直流侧并联在一起,并在直流母线上连接太阳能、风能等新能源发电设备,从而组成微电网。但是在丛式井组中,如果多台抽油机同时处于倒发电状态,大量能量进入直流母线,使直流母线电压升压,危及设备正常运行。因此需要设计一种控制器,能够调节各抽油机的运行状态,使其耗能和倒发电状态错开,实现能量利用的最大化

该控制器利用基于直流侧母线的载波通信方式,读取各抽油机的运行状态,并预测各抽油机倒发电的时刻,如果某些抽油机的倒发电处于同一时刻,则利用载波通信向对应抽油机发出调频指令,使其倒发电时刻错开。此外,该控制器还需要测量每台抽油机的功率、位移参数,组成电功图,利用控制器的强大算力对电功图进行分析,确定其工作状态,为运行人员提供参考,并将测量结果和分析情况通过LCD显示器提供给用户,同时利用以太网将数据传输至后台。

试用时间比较短,不能在现场进行测试,故只能对部分功能进行简单开发。本帖子主要对波形显示这部分内容进行介绍。

二、硬件电路的构成

对于波形显示系统而言,硬件电路比较简单,使用了RZ/G2L开发板和大彩3.5寸串口屏,串口屏连接至开发板的串口1。

开发板试用

三、软件设计

1、串口屏软件设计

本报告中的串口屏共有三个界面,分别是电功图界面、功率曲线界面和载波通信界面。

(1)电功图界面

开发板试用

该界面用于显示抽油机的电功图,电功图为抽油机的位移和功率曲线的合成,电功图有不同的表示方法,本人使用两个曲线分别显示的方法进行展示。另有三个按钮,用于在三个界面中进行切换。

(2)功率曲线界面

开发板试用

该界面用于显示功率变化曲线,此外在上方的三个文本框分别显示当前的瞬时功率、一个冲程内的最大功率和最小功率。

(3)载波通信界面

开发板试用

载波通信界面用于载波通信数据传输的演示。接收数据对应的文本框用于显示接收到的数据;发送数据对应的文本框用于显示要发送的数据,按下“发送”按钮,该数据会一载波形式向外发送。载波通信对应程序会在下一次报告中给予展示。

2、开发板程序设计

开发板程序的作用是向串口屏下发指令进行电功图的绘制、瞬时波形的显示、功率大小的显示和载波通信。本次报告不包括载波通信的内容。由于只是在家模拟,没有进行现场进行测试,故波形数据是直接借用的以前所采数据。另外实现的功能不复杂,故采用顺序编程形式,未采用多线程编程。程序框图如下:

开发板试用

(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接口显示器、摄像头等设备,丰富项目的开发内容。
 

基于飞凌RZ/G2L开发板的波形显示系统的搭建


【附上开发板体验视频(详见作者原文)】

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分