MFC编程学习心得

2024-10-15

MFC编程学习心得(精选2篇)

1.MFC编程学习心得 篇一

软件编程学习心得

随着计算机技术的发展和工作的需要,为了能够更好的维护公司生产管理系统;公司安排我们到北大青鸟APTECH进修。我们选择了时下最流行、发展速度较快的语言C#。C#学习共分三个阶段,目前我只学习了第一个阶段;现将我在北大青鸟学习第一阶段为期两个月的学习心得总结如下:

C#是一种新的面向对象的编程语言,专门用于.NET运行时。C#编译器只能生成受管制的代码,也可以使用.NET基类。C#语言自C/C++演变而来。但是,它具有简单、现代、完全面向对象和类型安全等诸多特性。下面就简单说说简单和现代其中两种特性。

1、简单

C#具有C++所没有的一个优势就是学习简单。该语言首要的目标就是简单。很多功能(还不如说是缺少了C++的一些功能)有助于C#全方位的简单。

在C#中,没有C++中流行的指针。默认地,您工作在受管理的代码中,在那里不允许如直接存取内存等不安全的操作。我想没有C++程序员可以声称,从没有使用指针访问过不属于他们的内存。

C#弃用其它操作符,名字空间、成员和引用仅使用单个操作符 “.”。现在一个程序员所需要理解的就是嵌套名字的注解了。

C#使用统一的类型系统。这种系统充许您把各种类型作为一个对象查看,它是一个原始类型还是一个full-blown 类。和其它编程语言相比,由于加框(boxing)和消框(unboxing)的机制,把简单类型当作对象处理并不能获得性能的改善。稍后将详细解释加框和消框,但基本上仅当需要时才使用对象访问简单类型这种技术。

2、现代

投入学习C#的努力是一笔大投资,因为C#是为编写NGWS 应用程序的主要语言而设计。很多用C++可以实现或者很费力实现的功能,在C#中不过是一部分基本的功能而已。根据应用程序的特殊需求,可以很容易地创建出新的一种数据类型。

指针不再是编程武器的一部分。运行时NGWS提供了一个垃圾收集器,负责C#程序中的内存管理。因内存和应用程序都受到管理,所以很必要增强类型安全,以确保应用的稳定性。

异常处理是C#的主要功能。C#的异常处理与C++的不同点在于它是交叉语言的(运行时的另一个功能)。在没有C#之前,您必须处理怪异的HRESULTs,但现在由于使用了基于异常的健壮的出错处理,这一切都结束了。

对于现代的应用程序,安全是首要的,C#也不会例外。它提供了元数据语法,用于声明下述NGWS安全模式的能力和许可。元数据是NGWS运行时的一个关键的概念。

通两个多月学习,我能够很好的掌握C#语言的基本语句、语法以及老师补充的一些要点;能够编写简单的应用程序,例如电子邮件的收发等,为接下来的第二、第三阶段学习打下了良好的基础。

2.MFC编程学习心得 篇二

1.注意区分输入端接的是电压信号还是电流信号;输出端是电流信号还是电压信号。在模拟模块上不同信号下的接线方式。

2.了解信号输入元件相关资料:

如使用温度变送器,要了解温度变送器测量范围,如0~100℃;输出电流范围4~20mA;分度号是什么,如PT100;接线原理图等。相关输入元件;输出元件在模拟模块上的接线方式。其他如工程要求的精度是多少等。

3.关于PID设定值(VD204)确认:

假定我们将控制温度定位23.5℃;以单极性为例,首先应确定输入信号是0~10V电压信号还是4~20mA电流信号?,这在PID设定值中非常重要。如是0~10V电压输入信号对应0~32000,温度范围0~100℃,设定值为可直接算出: VD204=23.5/(100-0)=0.235;

若是电流4~20mA,其对应数值应为6400~32000,温度范围0~100℃,则设定值应为0.388。

原因:模拟模块中0~32000对应0~20mA;其中6400~32000对应4~20mA对应0~100℃;这就必须进行相关的计算,23.5℃电流计算方式:

(20-4):(100-0)=(X-4):23.5;解方程:X=7.76(mA)。设定值:VD204=7.76/20=0.388.4.关于PID输出值(VD208)确认:

以单极性为例,应确定输出信号是0~10V电压信号还是4~20mA电流信号对应着0~32000?

若是输出信号AQW0对应电压信号,比如0~10V,则 AQW0=(实数VD208*32000在转化成整数)即可; 若是输出信号AQW0对应电流信号,比如4~20 mA,则 AQW0=(实数VD208*32000在转化成整数+6400)。5.关于PID恒温控制实际: 通过上机实验可知:PID恒温控制是围绕着设定值进行调节的。若设定温度为23.5℃;当温度低于设定值时,加温蒸汽调节阀始终处于全部打开状态,;当温度达到23.5℃,加温用的蒸汽调节阀开始逐渐关闭,在关闭过程中,温度有可能仍在渐渐上升,温度偏离越大,关闭速度越快;知道全部关闭为止;当温度再次低于设定值时,加温蒸汽调节阀则会逐渐打开,打开速度取决于温度偏离值的大小,偏离越大,打开速度越快;直到温度再次达到设定值。若温度长时间未达到设定值,调节功能会将调节阀全部打开,这就是我所观察到的PID恒温控制情况。所以,我们可以根据实控情况进行必要的编程,有效的利用低于设定值时PID控制时段;切断高于设定值部分的PID控制,在温度高于设定值后,即可根据生产要求干脆部分或全部关闭加温阀。以防温度上升过高。来求得优越的温控效果。

西门子SIEMENS S7-200CPU PID控

制图解之二

点击数:103 发布时间:2009年9月27日 来源:

常问问题

1做完 PID 向导后,如何知道向导中设定值,过程值及 PID 等参数所用的地址?

•做完 PID 向导后可在 Symbol Table(符号表)中,查看 PID 向导所生成的符号表(上例中为 PID0_SYM),可看到各参数所用的详细地址,及数值范围。

•在 Data Block(数据块)中,查看 PID 指令回路表的相关参数。如图所示:

图 12.PID 数据块

2、做完 PID 向导后,如何在调试中修改 PID 参数?

可以在 Status Chart(状态表)中,输入相应的参数地址,然后在线写入用户需要的 PID 参数数值,这样用户就可根据工艺需要随时对 PID 参数、设定值等进行调整。

3、PID 已经调整合适,如何正式确定参数?

可以在 Data Block(数据块)中直接写入参数。

4、做完 PID 向导后,能否查看 PID 生成的子程序,中断程序?

PID 向导生成的子程序,中断程序用户是无法看到的,也不能对其进行修改。没有密码能够打开这些子程序,一般的应用也没有必要打开查看。

5、PID 参数有经验值吗?

每一个项目的 PID 参数都不一样,没有经验参数,只能现场调试获得。

6、我的 PID 向导生成的程序为何不执行?

•必须保证用 SM0.0 无条件调用 PID0_INIT 程序

•在程序的其它部分不要再使用 SMB34 定时中断,也不要对 SMB34 赋值

7、如何实现 PID 反作用调节?

在有些控制中需要 PID 反作用调节。例如:在夏天控制空调制冷时,若反馈温度(过

程值)低于设定温度,需要关阀,减小输出控制(减少冷水流量等),这就是 PID 反

作用调节(在 PID 正作用中若过程值小于设定值,则需要增大输出控制)。

若想实现 PID 反作用调节,需要把 PID 回路的增益设为负数。对于增益为 0 的积分或

微分控制来说,如果指定积分时间、微分时间为负值,则是反作用回路。

8、如何根据工艺要求有选择地投入 PID 功能?

可使用“手动/自动”切换的功能。PID 向导生成的 PID 功能块只能使用 SM0.0 的条件 调用。

PID Wizard 中的给定-反馈设置

完成 PID Wizard 组态后,会为每个 PID 回路生成一个子程序 PIDx_INIT(x = 01.0 之间的实

数,而可以是实际的反馈地址,或是其他变量。例如,PV_I 可以是模拟量输入地址

AIW0,也可以是存储器地址 VW100 等;Setpoint 则往往来自 V 变量存储区,这样可以

从人机操作界面(HMI)设备输入给定值。注意:对于 PID 控制系统来说,必须保证给定与过程反馈的一致性: •给定与反馈的物理意义一致

这取决于被控制的对象,如果是压力,则给定也必须对应于压力值;如果是温度,则 给定也必须对应于温度。•给定与反馈的数值范围对应

如果给定直接是摄氏温度值,则反馈必须是对应的摄氏温度值;如果反馈直接使用模

拟量输入的对应数值,则给定也必须向反馈的数值范围换算。如果给定与反馈的换算有特定的比例关系也可以。如给定也可以表示为以反馈的数值 范围的百分比数值。

给定与反馈的数值具体是什么数值,其取值范围究竟如何,完全取决于我们在使用

“PID 向导”编程时指定的给定与反馈的数值范围。其中,反馈量的数值范围不能随

便自己定义,而要取决于具体应用的模拟量输入模块。图 2.在图中 a.处设置给定范围 图 3.在图中 b.处设置反馈范围

假定一个 PID 控制系统的控制对象是压力,反馈元件的测量范围为 020mA(或 41200.0 °C。则

可按如下设置给定的范围。

表 2.在上面的例子中,反馈和给定可以按照如下方法设置

图 4.反馈范围设置

图 5 给定范围设置

PID 自整定

新的 S7-200 CPU 支持 PID 自整定功能,在 STEP 7-Micro/WIN V4.0 中也添加了 PID 调 节控制面板。

用户可以使用用户程序或 PID 调节控制面板来启动自整定功能。在同一时间最多可以有 8 个 PID 回路同时进行自整定。PID 调节控制面板也可以用来手动调试老版本的(不支持 PID 自整定)CPU 的 PID 控制回路。用户可以根据工艺要求为调节回路选择快速响应、中速响应、慢速响应或极慢速响应。PID 自整定会根据响应类型而计算出最优化的比例、积分、微分值,并可应用到控制中。PID 调节控制面板

STEP 7-Micro/WIN V4.0 中提供了一个 PID 调节控制面板,可以用图形方式监视 PID 回路的运行,另外从面板中还可以启动、停止自整定功能。

图 1.PID 调节控制面板 在图 1 中: a.过程值指示 显示过程变量的值及其棒图 b.当前的输出值指示

显示当前使用的设定值、采样时间、PID 参数值及显示当前的输出值和棒图

c.可显示过程值、设定值及输出值的 PID 趋势图 A.过程变量和设定值的取值范围及刻度

B.PID 输出的取值范围及刻度 C.实际 PC 时间

D.以不同颜色表示的设定值、过程变量及输出的趋势图

d.调节参数 这里你可以:

o 选择 PID 参数的显示:当前参数(Current)、推荐参数(Suggested)、手动输入(Manual)

o 在Manual 模式下,可改变 PID 参数,并按 Update PLC 按钮来更新 PLC 中的参数 o 启动 PID 自整定功能

o 选择 Advanced(高级)按钮进入高级参数设定 e.当前的 PID 回路号

这里你可以选择需要监视或自整定的 PID 回路

f.时间选项设定

这里你可以设定趋势图的时基,时基以分为单位

g.图例颜色

这里你可以看到趋势图中不同的颜色代表不同的值的趋势 h.帮助按钮

i.PID 信息显示窗口

j.关闭 PID 调节面板

要使用 PID 调节控制面板,PID 编程必须使用 PID 向导完成。

PID 自整定步骤

第一步:在 PID Wizard(向导)中完成 PID 功能组态

要想使用 PID 自整定功能,PID 编程必须用 PID 向导来完成第二步:打开 PID 调节控制面板,设置 PID 回路调节参数 在 Micro/WIN V4.0 在线的情况下,从主菜单 Tools > PID Tune Control Panel 或点击进入 PID 调节控制面板中,如果面板没有被激活(所有地方都是灰色),可点击 Configure(配置)按钮运行 CPU。在 PID 调节面板的 e.区选择要调节的 PID 回路号,在 d.区选择 Manual(手动),调节 PID 参数并点击

Update(更新),使新参数值起作用,监视其趋势图,根据调节状况改变 PID 参数直至调节稳定。

为了使 PID 自整定顺利进行,应当做到:

•使 PID 调节器基本稳定,输出、反馈变化平缓,并且使反馈比较接近给定

•设置合适的给定值,使 PID 调节器的输出远离趋势图的上、下坐标轴,以免 PID 自整定开始后输出值的变化 范围受限制

参见:手动调整 PID 回路参数

图 3.设置 PID 自整定高级选项 在此允许你设定下列参数:

a.你可以选中复选框,让自整定来自动计算死区值和偏移值对于一般的 PID 系统,建议使用自动选择。b.Hysteresis(滞回死区):

死区值规定了允许过程值偏离设定值的最大(正负)范围,过程反馈在这个范围内的变化不会引起 PID 自整定调节器改变输出,或者使 PID 自整定调节器“认为”这个范围内的变化是由于自己改变输出进行自整定调节而引起的。PID 自整定开始后,只有过程反馈值超出了该区域,PID 自整定调节器才会认为它对输出的改变发生了效果。这个值用来减少过程变量的噪声对自整定的干扰,从而更精确地计算出过程系统的自然振动频率。如果选用自动计算,则缺省值为 2%。如果过程变量反馈干扰信号较强(噪声大)自然变化范围就大,可能需要人为设置一个较大的值。但这个值的改变要与下面的偏差值保持 1:4 的关系。c.Deviation(偏差):

偏差值决定了允许过程变量偏离设定值的峰峰值。如果选择自动计算该值,它将是死区的 4 倍,即 8%。有些非常敏感的系统不允许过程量偏离给定值很多,也可以人工设置为比较小的值,但是要和上述“死区”设置保持比例关系。这就是说,一个精度要求高的系统,其反馈信号必须足够稳定。

d.Initial Output Step(初始步长值):PID 调节的初始输出值 PID 自整定开始后,PID 自整定调节器将主动改变 PID 的输出值,以观察整个系统的反应。初始步长值就是输出的变动第一步变化值,以占实际输出量程的百分比表示。

e.Watchdog Time(看门狗时间):过程变量必须在此时间(时基为秒)内达到或穿越给定值,否则会产生看门狗超时错误。PID 自整定调节器在改变输出后,如果超过此时间还未观察到过程反馈(从下至上或从上至下)穿越给定曲线,则超时。如果能够事先确定实际系统响应非常慢,可以加长这个时间。

f.动态响应选项:根据回路过程(工艺)的要求可选择不同的响应类型:快速、中速、慢速、极慢速 o 快速:可能产生超调,属于欠阻尼响应 o 中速:在产生超调的边缘,属于临界阻尼响应

o 慢速:不会产生任何超调,属于过阻尼响应

o 极慢速:不会产生任何超调,属于严重过阻尼响应用户在这里指定需要达到的系统控制效果,而不是对系统本身响应快慢的判断。g.设定完参数点击 OK 键回到 PID 调节控制面板的主画面

第四步:在手动将 PID 调节到稳定状态后,即过程值与设定值接近,且输出没有不规

律的变化,并最好处于控制范围中心附近。此时可点击 d.区内的 Start Auto Tune 按

钮启动 PID 自整定功能,这时按钮变为 Stop Auto Tune。这时只需耐心等待,系统完

成自整定后会自动将计算出的 PID 参数显示在 d.区。当按钮再次变为 Start Auto Tune 时,表示系统已经完成了 PID 自整定。

要使用自整定功能,必须保证 PID 回路处于自动模式。开始自整定后,给定值不能再改变。

第五步:如果用户想将 PID 自整定的参数应用到当前 PLC 中,则只需点击 Update PLC。

完成 PID 调整后,最好下载一次整个项目(包括数据块),使新参数保存到 CPU 的 EEPROM 中。

PID 自整定失败的原因

1.PID 输出在最大值与最小值之间振荡(曲线接触到坐标轴)

解决方法:降低 PID 初始输出步长值(initial output step)

2.经过一段时间后,PID 自整定面板显示如下信息:“ The Auto Tune algorithm was aborted due to a zero-crossing watchdog timeout.” 即自整定计算因为等待

反馈穿越给定值的看门狗超时而失败。

解决方法: 确定在启动 PID 自整定前,过程变量和输出值已经稳定。并检查

Watchdog Time 的值,将其适当增大。

对于其它错误,可参考手册中表 15-3 中的错误代码的描述。如何获得一个稳定的 PID 回路 在开始 PID 自整定调整前,整个 PID 控制回路必须工作在相对稳定的状态。

稳定的 PID 是指过程变量接近设定值,输出不会不规则的变化,且回路的输出值在控制范围中心附近变化。问题与解决方法:

1.PID 输出总是输出很大的值,并在这一区间内调节变化

产生原因:

o 增益(Gain)值太高

o PID 扫描时间(sample time)太长(对于快速响应 PID 的回路)解决方法:降低增益(Gain)值并且/或选择短一些的扫描时间 2.过程变量超过设定值很多(超调很大)

产生原因:积分时间(Integral time)可能太高 解决方法:降低积分时间 3.得到一个非常不稳定的 PID

产生原因: o如果用了微分,可能是微分参数有问题 o没有微分,可能是增益(Gain)值太高 解决方法:

o调整微分参数到 0-1 的范围内

o根据回路调节特性将增益值降低,最低可从 0.x 开始逐渐增大往上调,直到获得稳定的 PID。

S7-200 PLC在PID闭环控制系统中的应用 引 言

在工业生产中,常需要用闭环控制方式来控制温度、压力、流量等连续变化的模拟量,无论是使用模拟量控制器的模拟控制系统还是使用计算机(包括PLC)的数字控制系统,PID控制都得到了广泛应用。PID控制器是比例-积分-微分控制(Proportional-Integral-De-rivative)的简称,其优点是不需要精确的控制系统数学模型,有较强的灵活性和适应性,而且PID控制器的结构典型、程序设计简单、工程上易于实现、参数调整方便。本文以西门子公司S7-200 PLC为例介绍PLC在PID闭环控制系统中的应用。PLC实现PID控制的方式

用PLC对模拟量进行PID控制大致有如下几种方法:

(1)使用PID过程控制模块:这种模块的PID控制程序是PLC厂家设计的,并放在模块中,用户使用时只需要设置一些参数,使用起来非常方便。

(2)使用PID功能指令:它是用于PID控制的子程序,与模拟量输入/输出模块一起使用,可以得到类似于使用PID过程控制的效果,但价格便宜得多。如S7-200的PID指令。

(3)用自编的程序实现PID闭环控制:在没有PID过程控制模块和功能指令的情况下,仍希望采用某种改进的PID控制算法,此时用户需要自己编制PID控制程序。

本文以西门子S7-200 PLC为例,说明PID控制的原理及PLC的PID功能指令的使用及控制功能的实现。PLC PID控制器的实现

3.1 PID控制器的数字化

PLC的PID控制器的设计是以连续的PID控制规律为基础,将其数字化,写成离散形式的PID方程,再根据离散方程进行控制程序的设计。

在连续系统中,典型的PID闭环控制系统如图1所示。图1中sp(t)是给定值;pv(t)为反馈量;c(t)为系统的输出量,PID控制器的输入/输出关系如式(1)所示:

式中:M(t)为控制器输出;Mo为输出的初始值;e(t)=sp(t)-pv(t)为误差信号;Kc为比例系数;T1为积分时间常数,TD为微分时间常数。等号右边前三项分别是比例、积分、微分部分,它们分别与误差、误差的积分和微分成正比。如果取其中的1项或2项,可以组成P,PD或PI控制器。

假设采样周期为TS,系统开始运行的时刻为t=0,用矩形积分来近似精确积分,用差分近似精确微分,将式1离散化,第n次采样时控制器的输出如式(2)所示:

式中:en-1为第n-1次采样时的误差值;K1为积分系数;KD为微分系数。

基于PLC的闭环控制系统如图2所示,图中虚线部分在PLC内,spn,pvn,en,Mn分别为模拟量sp(t),pv(t),e(t),M(t)在第n次采样的数字量。在许多控制系统中,可能只需要P,I,D中的1种或者2种控制类型。例如,可能只要求比例控制或比例与积分控制,通过设置参数可对回路控制类型进行选择。

3.2 输入输出变量的转换

PID控制有输入量2个:给定值sp和过程变量pv。给定值通常是固定值,过程变量通常是经过A/D转换和计算后得到的被控量的实测值。给定值和过程变量都是和被控对象有关的值,对于不同的系统,它们的大小、范围与工程单位有很大的不同。应用PLC的PID指令对这些量进行运算之前,必须将其转换成标准化的浮点数(实数)。同样,对于PID指令的输出,在将其送给D/A转换器之前,也需要进行转换。

3.2.1 回路输入的转换

首先,将给定值或A/D转换后得到的整数值由16位整数转换为浮点数,可以用下面的程序实现这种转换:

然后,将实数进一步转换成0.0~1.0之间的标准数,可用式3对给定值及过程变量进行标准化:

式中:RNorm为标准化实数值;RRaw为标准化前的值;offset为偏移量,对单极性变量为0.0,对双极性变量为0.5;Span为取值范围,等于变量的最大值减去最小值,单极性变量的典型值为32 000,双极性变量的典型值为64 000。

下面的程序将上述转换后得到的AC0中的双极性数(其中span=64 000)转换为0.0~1.0之间的实数的转换程序为:

3.2.2 回路输出的转换

回路输出即PID控制器的输出,它是标准化的0.0~1.0之间的实数。将回路输出送给D/A转换器之前,必须转换成16位二进制数,这一过程是将pv与sp转换成标准化数值的逆过程。

用下面的式(4)将回路输出转换为实数:

式中,RScal是回路输出对应的实数值;Mn是回路输出标准化的实数值。

将回路输出转换为对应的实数的程序为:

将代表回路输出的实数转化为16位整数的指令为: PID指令及其回路表

S7-200的PID指令如图3所示。

指令中TBL是回路表的起始地址,LOOP是回路编号。编译时如果指令指定的回路表起始地址或回路号超出范围,CPU将生成编译错误(范围错误),引起编译失败。PID指令对回路表中的某些输入值不进行范围检查,应保证过程变量、给定值等不超限。回路表如表1所示:

过程变量与给定值是PID运算的输入值,在回路表中他们只能被PID指令读取而不能改写。每次完成PID运算后,都要更新回路表内的输入值Mn,它被限制在0.0~1.0之间。

如果PID指令中的算术运算发生错误,特殊存储器位SM 1.1(溢出或非法数值)被置为1,并将中止PID指令的执行,想要消除这种错误,在下一次执行PID运算之前,应改变引起运算错误的输入值,而不是更新输出值。PID指令编程举例

温度控制是工业生产过程中很重要的一种控制。温度控制系统一般具有大惯性、大延时的特点。在工业控制中,难以建立温度系统的精确数学模型,而应用模拟或数字式PID闭环控制往往能获得较好的控制精度。

本例采用PID控制器,温度给定值经标准化处理后为0.8,选取控制器参数初值为:Kc=0.2,Ts=0.05 s,TI=20 min,TD=10 min。控制程序如下:

结 语

上一篇:高中班会励志课件下一篇:珠宝项目合作协议