当前位置:首页 > 面向对象编程在过程控制功能块中的开发应用
华北电力大学本科毕业设计(论文)
第4章 具体程序的编写
4.1 用C++编程实现一个简单过程控制
4.1.1 功能流程框图
程序启动 点击 启动温度测控 程序检测 温度 调节 符合设定范围 不在设发送命令 定范围 温度调节装置 继续运行 图4-1 功能流程框图
4.1.2 具体过程思想
利用面向对象的过程思想,在过程控制中,根据温度检测的特点,设置一个温度检测类,可以探测当前温度值,还可以给温度值标号(就是不同时刻)。
给系统设定0-50摄氏度的合理温度范围,当启动程序时,实际中应用温度探测器去提取系统内的连续时刻的真实温度。在此程序里,由于没有连接真实的传感器和系统,所以只能让系统产生连续时刻的随机温度值。如果连接真实的传感器,则应可以把不符合温度范围的时刻温度调整为0-50摄氏度这个区间内。在MFC中绘制显示的人机交互界面。
21
华北电力大学本科毕业设计(论文)
4.1.3 温度检测类的代码
#ifndef PT_READER_H #define PT_READER_H //温度传感器类 class PTReader {
public: PTReader(); ~PTReader();
bool Open( int portID, int comBaud ); bool Close(); //探测当前温度 bool ReadPT();
//param channelID begin with zero. //获取指定编号的温度值 double GetPT( int channelID ); private:
static void __stdcall OnRecevieData( int port ); private: int m_port; int m_comBaud;
double m_ptValue[2];//温度值,可存储两路温度值 }; #endif
22
华北电力大学本科毕业设计(论文)
4.1.4 运行界面
当运行主函数后,点击“启动温度测控”,结果如下:
图4-2 运行效果截图1
图4-3 运行效果截图2
4.2 用C++实现PID控制过程
4.2.1 位置式PID算法
PID位置式算法。对于位置式PID算法,其核心步骤是实现计算机离散化的处理:把T作为一个采样周期,用K记录采样的编号。那么离散化的采样时间KT就和连续的时间t相对应。采用一些近似,可做变换如下:
23
华北电力大学本科毕业设计(论文)
图4-4 位置式PID运算原理
当T选择的足够小,近似就变得足够准确,离散与连续几乎相同。只是在编程中每一次输出时都要去参照过去的e(k),不断叠加,导致消耗RAM很大,运行比较慢。
24
共分享92篇相关文档