- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《计算机控制技术》实验指导书
陈玉明 王鑫国
南京工业大学自动化学院
2006-04-17
目 录
实验一 DCS控制系统实验………………………………………2
实验二 离散系统的数字PID实验……………………………35
实验一 DCS控制系统实验
一.实验目的
掌握DCS控制系统硬件组成,软件结构。
熟悉conmaker控制算法组态软件的使用。
了解简单控制算法的设计。
研究集成触发器的调整方法及各点波形。
二.实验内容
1.1 工程组件
工程
工程包含了一个控制程序中的所有对象。工程存储到命名文件里。在工程中包含下面这些对象:POU(程序组织单元),数据类型,图形元素、资源和算法库。
POU(Program Organization Unit 程序组织单元)
POU可以是:函数(Function),功能块 (Function Block) 和程序(Programs)。
每个POU包含一个变量声明部分和一个本体。本体用IEC编程语言的任一种语言编写。包括 IL、 ST、SFC、FBD和 LD。
ConMaker(支持所有 IEC 的标准POU。如果想在工程中使用这些POU,须将 standard.lib 库连接进当前工程。
POU可以调用其它POU。但不允许递归调用。
函数
一个函数是一个POU, 函数执行时,会对一系列特定的输入产生唯一数据类型的输出结果。当定义函数时,切记函数必须接收一个数据类型(返回数据类型)。也就是说,在函数名的后面,输入一个冒号,然后输入类型。
如: FUNCTION Fct: INT
此外,结果必定被赋给函数本身,也就是说函数名被用做输出变量。函数定义以关键字FUNCTION开始,以END_FUNCTION结束。用IL语言编写的函数例子有三个输入变量,返回的结果是前两个数的乘积除以第三个数。
图2-1:函数
在ST语言中,函数调用可以作为表达式里的一个操作数。函数没有任何内部条件。这意味着以相同的输入参数调用函数总是产生相同输出。调用上述函数的例子:
用 IL 表示:
LD 7
Fct 2,4
ST Result
用 ST 表示:
Result := Fct(7, 2, 4);
用 FBD 表示:
在SFC语言中,函数调用只能以单步或者转换才能执行。
注释:如果你在工程中用CheckBounds来命名函数,可以用这个函数来检查工程变量范围溢出。定义函数名并且函数名有唯一的标志符。下面的例子说明函数是如何实现的:
图2-2:实现CheckBounds函数的例程
下面是测试数组越界CheckBounds函数的典型程序,它超出了定义数组的边界
CheckBounds函数确保TRUE值没有赋给A[10],而是赋给仍然有效的A[7]。因此,CheckBounds函数用来矫正超出数组边界的扩展。
图2-3 函数CheckBounds的测试程序。
注释:如果你在工程中定义了名为CheckDivByte, heckDivWord, CheckDivDWord和CheckDivReal,可以使用它们,看下面实现CheckDivReal函数的例子。
图2-4:实现CheckDivreal函数例程。
运算符DIV使用函数CheckDivReal的输出作为除数。如下所示示例中,避免被0除,除数(d)由原值0强制成1,除的结果是799。
图2-5 CheckDivReal函数的例子程序。
功能块
一个功能块是一个POU,它在运行中输出一个或多个值。和函数不同。功能块本身没有返回值,但存在一个或多个输出。若要使用功能块,则必须定义该功能块的调用实例。功能块声明以关键字FUNCTION_BLOCK开始,以END_FUNCTION_BLOCK结束。
用IL实现功能块的例子,有两个输入变量和两个输出变量。一个输出是两个输入的乘积,另一个输出是相等比较结果。
图2-6 功能块
功能块实例
名为INSTANCE的FUB功能块实例的举例
INSTANCE:FUB
从外部,只能改变功能块输入和输出参数。不允许对功能块的内部变量直接赋值(IEC规定)。
访问输入变量的例子:
功能块 fb 有一个INT类型的输入变量in1。
PROGRAM prog
VAR
inst1: fb ;
END_VAR
LD 17
ST inst1.in1
CAL inst1
END_PROGRAM
功能块和程序的声明部分包含了实例声明(instance declare),但实例声明在函数中是不允许的(函数本身有返回值)。
文档评论(0)