线下实训
HOME
线下实训
正文内容
ab电机plc编程 罗克韦尔(AB)PLC讲解,创建串级PIDE控制策略
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

罗克韦尔(AB)PLC讲解,创建串级PIDE控制策略

串级控制

串级控制在过程控制工业领域中有着广泛的应用。传统串级设计具有两个显著的特征:存在两个嵌套的反馈控制回路,一个次级控制回路嵌在另一个主控制回路中。本实验串级控制过程的控制策略将实现Logix功能块编辑器对反应器单元温度的控制。随着快速动作的夹套温度控制回路对反应器夹套传热液态系统内的扰动作出响应,串级PID控制

将采取矫正措施。最终结果是:具有缓慢响应特性的温度控制回路(主回路),其“偏离允许误差范围”的总体时间最小化。

本实验内容:

• 创建程序和功能块例程

• 使用RSLogix5000在串级控制组态界面创建新的PIDE模块。

• 使用SRTP指令创建分程输出。

应用过程指令进行过程模拟。

创建程序和串级PID功能块例程

创建“

Area_01_250_Control_Task ”任务应用于温度控制例程而非程序中。为反应器01温度控制创建程序。

1. 右击 Area_01_250ms_Control_Task ,然后创建新程序。命名新程序为‘REACTOR_01_TempLoops ’,点击OK

2. 右击 REACTOR_01_TempLoops ,然后创建新例程。命名新程序为 ‘A1_R1_TIC_116AB

确保Type:的选择是Function Block Diagram ,In Program or Phase的选择是Reactor_01_TempLoops 。点击 OK 关闭例程属性窗口,然后再点击 OK

3. 双击 REACTOR_01_TempLoops 程序,打开属性窗口 ,然后点击Configuration,选择 A1_R1_TIC_116AB 作为主例程,点击OK

4. 双击控制器项目管理器中 A1_R1_TIC_116AB 例程,打开一个空例程。

5. 点击工具栏的Process 选项卡

出现Process指令的菜单栏。

6. 将鼠标移动到指令类型的PIDE指令

7.在工具栏的Process 选项卡上,点击“PIDE”功能块两次,在编辑区产生两个PIDE功能块。这两个PIDE功能块出现在图上(PIDE_01和PIDE_02)。

8. 在菜单栏上点击 View > Fit to Window ,调整编辑区大小。

9.点中后拖动PIDE_02,这样每个PIDE功能块周围都能留有一定的操作空间。

10.如果需要放大或缩小,点击工具栏上的缩放按钮。

11. 连接PIDE_01 的输出 CVEU PIDE_02 设定输入 SPCascade 如下所示:

点击PIDE_01的CVEU输出引脚,然后点击PIDE_02的 SPCascade 引脚,当变绿后就连接上了。

回顾串级PIDE指令的额外注意事项如下

过程应用注意事项

PIDE指令具有内嵌的功能,可以处理串级回路。

串级/ 比率模式:

次级回路可以设定成串级模式,也可以设定成自动模式。次级回路为串级模式时,主回路的输出作为次级回路的设定值;次级回路为自动模式时,我们可以直接为设备夹套输入温度设定值。

初始化:

若次级回路不用串级模式,主回路就要停止控制,因为它不再影响控制过程,同时应使它的输出等于次级回路的设定值,这样当次级回路恢复串级模式时,主回路可以平滑过渡启动控制。

Windup 饱和:

当次级回路达到输出或设定值的限度时,主回路应该在限度方向上停止合成。例如,如果次级回路达到了输出上限,主回路应当在正方向上不再合成。以本实验为例,如果次级回路已将冷却阀达到了100%,主回路再继续要求更多的冷却就没有意义了,因为次级回路不能再提供更多的冷却。

组态初始化和饱和参数

依据上面的叙述,我们需要进行附加参数的设定。首先对于主回路,需要设定CVInitReq 和CVInitValue 引脚的可见性。当次级回路不采用串级模式时,这些将用来设定主回路的初始化。

1. 通过点击PIDE-01的

按钮,显示主回路的参数 ,点击 Parameters 选项卡, 向下滚动鼠标找到

CVInitReq CVInitValue 参数,选中参数的可见性复选框 ,如下所示:

点击 Apply OK ,关闭PIDE 属性对话框。

13. 显示次级回路 PIDE_02 InitPrimary 参数,选中该参数的可见性复选框,操作同上。

14. 连接初始参数。点击次级回路设定输出引脚PIDE_02.SP ,再点击主回路CVInitValue 引脚PIDE_01.

CVInitValue ,连接初始值。点击次级回路InitPrimary 引脚 PIDE_02.InitPrimary ,再点击主回路CVInitReq 引脚 PIDE_01.CVInitReq ,连接初始请求。在任意空白区域点击,此时编辑区类似下图所示:

注意InitPrimary到CVInitReq的连接是布尔量连接(虚线),SP到CVInitValue的连接是实数连接(实线)。

这些连接使次级回路(PIDE_02)准备好,向主回路(PIDE_01)发出请求进行初始化,主回路利用当前次级回路设定值自行初始化。这可使自动模式到串级模式平滑过渡。

下一步,使能PIDE模块的Anti-Windup抗饱和复位特性。

15. 点击PIDE_02 的按钮,显示次级回路的参数,点击 Parameters 选项卡,滚动鼠标找到 WindupHOut

WindupLOut 参数,点击复选框选中以显示他们。

16. 重复上述操作显示PIDE_01WindupHIn WindupLIn 参数。

17. 将PIDE_02的WindupHOut引脚连接到PIDE_01的WindupHIn引脚,PIDE_02.WindupLOut引脚连接到PIDE_01的WindupLIn引脚。

现在配置情况如下图所示:

同样当次级回路达到限度时,这些连接会限制主回路的动作。

18. 点击主工具栏上的

图标,校验例程。

在结果窗口将看到下面的错误提示:

检查功能块图,您会注意到在主回路PIDE模块和次级回路PIDE模块上都有“X”标记。

过程应用注意事项

功能块中,执行流程是从次级回路到数据流,这是至关重要的。实际上,执行流程是由数据流决定的。如下

所示,功能块图展示了在输出过程对数据的中间计算和操作。

实际执行指令次序只是与数据流路径相关的。当操作(指令)是从‘上游’到‘下游’执行时,明确指令的实际执行次序就不再重要。

X ”是模块上存在错误的指示标记。在这种情况下,出错原因是数据流方面出现了一些问题。每当以数据流中“下游”模块的反馈量作为输入时,您必须确定依照执行次序的规则哪个输入量应当首先被解决处理,以此决定哪个模块要最先执行。

19. 右击从 PIDE_02.InitPrimary 到 PIDE_01.CVInitReq 的反馈线,选择Assume Data Available.

20. 对连接到 PIDE_01 上的其余3条连线重复上述操作 这就解决了执行次序的问题,也对例程进行了校验。 完成后,每条线上都有了箭头,如下:

一些基本操作参数需要在PIDE 指令中设置。PIDE_02的串级设定功能要通过设置AllowCasRat参数才能激活。

21.点击PIDE_02 的查看模块属性的省略号按钮打开属性界面,点击Cascade/Ratio 选项卡。点中复选框AllowCascade/Ratiomode ,激活此模式。

22.现在要把I/O连接添加到例程中。点击工具栏的输入参考值符号和输出参考值符号,插入两个输入参考值和一个输出参考值。每点击工具栏一次,参考值添加一次。

23. 按下图所示拖动模块重新布置,将输入连接到PIDE_01的PV引脚和PIDE_02的PV引脚,输出连接到PIDE_02的CV引脚。

该项目的标签已经作为控制器作用域标签而创建了,但它们在例程中被引用。

24. 为PIDE_01的 PV input reference 键入 ‘TT_116’ ,或者双击后从下拉菜单中查找。

25. 为 PIDE_02的 PV input reference 键入‘TT_117 ’ ,或者双击后从下拉菜单中查找。

26. 从 PIDE_02的 CV output reference 类型中查找’Product_Temp_Dmd ’ 或者双击后从下拉菜单查找。 组态效果当如下所示:

1. 在PIDE_01 指令上点击查看模块属性的省略号按钮

,打开属性界面,点击Tag 选项卡后,重命名

PIDE_01指令的标签。

将PIDE_01标签名称改为‘TIC_116

28. 在PIDE指令上设定工程单位标定,点击EUs/Limit s选项卡,输入下列数值:

• 100%时PV最大值的跨度设置为‘250

• 0%时PV最小值的跨度设置为‘0

• SP上限值设置为‘250

• SP下限值设置为‘0

因为这个PID的输出用于创建PIDE_02 的串级设定点输出,所以按照如下信息设定CV工程单位范围,以使夹套温度控制器的“串级模式 “的设定点范围达到预设值:

• 100%输出时CV 最大值设置为‘200’

• 0%输出时CV最大值设置为‘0’

29. 点击General Configuration选项卡,设置PID初始比例积分增益,获得一定初始位移。在后面实验中的自动调整功能将代替这些操作,点击Ok

30. 在PIDE_02 指令上点击查看模块属性的省略号按钮,打开属性界面,点击Tag选项卡,重命名PIDE_02指令的标签。

将PIDE_02标签名称改为‘TIC _117

31. 在PIDE指令上设定工程单位标定,点击EUs/Limits选项卡,输入下列数值:

• 100%时PV最大值的跨度设置为‘250

• 0%时PV最小值的跨度设置为‘0

• SP上限值设置为‘250

• SP下限值设置为‘0

该PID的输出作为输出需求CV工程单位%输出,如下:

• 100%输出时的CV 最大值设置为‘100

• 0%输出时的CV最大值设置为‘0

32. 点击General Configuration选项卡,设定PID初始比例积分增益,获得一定初始位移。在后面实验中自动调整功能将代替这些操作,点击OK

33.双击PIDE模块右下角的Autotune ? 标签输入框,为两个PIDE指令分配自动调整标签。

34. 点击下拉框,双击菜单中的 AUTOTUNE 选项卡。

35.点击主菜单栏上的

图标,校验该例程。在结果窗口中,将看到下面的错误提示:

使用分程时间比例(SRTP) 指令

在我们的示例应用中,有一个必须控制反应器温度的典型场景。其中包括从周围环境温度加热到想要的运行温度,并在反应过程中进行冷却。该实例中反应过程是放热的,因此,在反应过程中,用冷却的办法来维持想要的反应器的温度是很关键的。

我们的应用实例使用了通常的分程控制方案,其中单一控制器的输出分开两个调节阀。在分程控制策略中,如果夹套温度控制器输出量在0到50%之间,冷却的CTW阀会打开;如果夹套温度控制器输出量在50到100%之间, Dowtherm阀会打开。

Logix5000分程时间比例(SRTP)指令采用百分比输入值(0%~100%)并转换为占空比离散输出。例如如果输入值设定为50%,指令周期设定为5秒,离散输出将有2.5秒时间为开通2.5秒时间为关断。在以总周期时间的百分比输入作为开通时间的场合,这个周期将会重复。SRTP指令的一般应用在大功率电热丝的温度控制中。在这些应用中,功率的模拟量控制要么不切实际,要么成本太高。时间比例继电器或类似设备可以把功率应用于不带连续模拟量调节的加热器。同样,通常用脉冲电磁阀控制冷却液流量实现冷却作用。

该指令也有模拟量输出。可以将模拟量输入信号分程为两个不同的模拟量输出,其范围由时间比例决定。这种功能可用于某些应用场合,同一个模拟量信号控制两个执行机构,且这两个执行机构要求有不同的比例尺度。(例如反应器温度控制应用中,既有加热阀执行机构又有冷却阀执行机构)。

通常,输入(%)到输出(%)的映射如下所示:

注意‘MaxXXXXIn’可以小于或大于‘MinXXXXIn’参数。这对于在一端或两端进行反向控制是很有用的。(例如: 加热/冷却配对控制中的冷却控制的输入数值下限比较高)

过程应用注意事项

‘MaxXXXXIn’可以小于或大于‘MinXXXXIn’的特性使该指令可以用于粗略/精细控制策略。一个粗略/精细控制策略使用两个控制阀(CV),一个大的一个小的,在过程中具有补充作用。大的CV能对需求变化快速响应,

但通常分辨率较低。小的CV可以提高分辨率,增强可调性。

组态SRTP

现在看一下如何组态SRTP指令。SRTP指令参数确定了输入值和每个输出值的最小值和最大值,确定了离散输出的周期(循环时间)。

本实验Reactor_01_TempLoops程序位于执行缓慢的任务中,因为过程变量是容器温度,不能进行快速物理变化。通常SRTP指令在较快速高优先级的周期型任务中执行,以便保持高分辨率和精确的脉冲输出。即使在本实验中没有用到脉冲输出,SRTP指令已应用在了快速的10ms周期型任务中,该任务包含需要有快速执行时间的例程。

36 在控制器项目管理器打开Area _01_10ms_Fast _Control 任务中的REACTOR_01_Fast_Control 程序。

37. 双击打开SRTP 例程 。

在该例程工具栏的过程功能指令集中包含了用于多回路的SRTP指令。

38.在表单工具栏的描述框内输入‘PIC_118Split Range ’,确定当前活动表单(Sheet1of2)。

39。在下拉菜单中点击Sheet 2,选择表单2。

40.在表单工具栏的描述框内输入‘TIC_116 Split Range ’,确定当前活动表单(Sheet 2 0f 2)。输入对该表单的描述内容。

41. 点击SRTP模块上的省略号按钮,访问其参数。

42. 点击Insert Factory Defaults 按钮,

复位指令参数。理想的运行情况图形描绘如下:

将下面的‘映射’关系用于SRTP参数:

• MinHeatIn = 50% 当 PIDE.CV=50%, Heat%=0%

• MaxHeatIn = 100% 当 PIDE.CV=100%, Heat%=100%

• MinCoolIn = 50% 当 PIDE.CV=50%, Cool%=0%

• MaxCoolIn = 0% 当 PIDE.CV=0%, Cool%=100%

• 如果需要脉冲输出,则下面的参数也要满足:

• MinHeatTime = 0 sec 0秒的最小加热时间相应于0%加热

• MaxHeatTime = 10 sec 10秒的最大加热时间相应于100%加热

• MinCoolTime = 0 sec 0秒的最小冷却时间将相应于0%冷却

• MaxCoolTime = 10 sec 10秒的最大冷却时间将相应于100%冷却

SRTP功能块必须有下列定义参数才能运行: CycleTime, MinHeatIn, MaxHeatIn, MaxHeatTime。

如果必须分程控制,那么运行前还需要有下列参数:MinCoolIn, MaxCoolIn, MaxCoolTime。

不管何种应用,要实现模块功能,CycleTime参数必须为非零值。

其余参数可以保持其默认值。

因为‘null’点(不加热不冷却)位于PIDE.CVEU=50%时,所以通过使用PIDE中的PIDE.CVInitValue参数,在程序中将PIDE设置为在50%时初始化。

43.在上述必备参数基础上,既然周期参数、MaxHeatTimeMaxCoolTime 参数都是必需的,参数值都输入‘10’。依照下面图表设定MaxHeatIn,MinHeatIn, MaxCoolIn, MinCoolIn 参数。

44.确保EnableOut参数设定为1,点击OK ,关闭属性对话框。SRTP指令将单一PIDE输出分为两个模拟量范围,如下所示:

仿真实验概述

下面部分将展示一些功能块指令,着重说明Logix平台和其编程语言的灵活性。

本实验的仿真是基本的,但它为工程师提供了在许多复杂应用和过程解决方案中用到的各种工具。由于在本实验中没有I/O,为此,我们为仿真逻辑创建了专门的任务和带有例程的程序,生成输入输出标签数据、闭环、反应过程变化和仿真设备,如电机、阀门及泵类。

大多数非积分控制过程可由一系列死区延迟和一阶滞后环节模拟。在我们实验中,模拟的两个回路是动作较迟缓的“Primary”, Product Temperature回路和响应快速的“Secondary”, Jacket Temperature回路。

用于仿真的功能块指令有“死区”(DEDT)模块,超前-滞后(LDLG)模块和函数发生器(FGEN)。死区(DEDT)指令提供了延迟并反映了过程死区时间或迟滞时间。超前-滞后(LDLG)指令提供了一个过程滞后时间。函数发生器(FGEN)指令用于描绘输出特性并将信号转换到过程工程单元。

回顾并编辑温度仿真逻辑

1. 点击Simulation Task ,然后选择Simulation Program

2. 右击All_Simulation 功能模块例程,然后点击open ,打开例程逻辑。

3. 在表单工具栏上点击next sheet ,进入例程的下一页。

4. 确保表单工具栏的指示框内容为TIC116ab S Range simulation ,以校验该温度模拟仿真。

您将会看到下面的功能块逻辑。

由于SRTP提供了两个独立的输出,并且它们的“过程特性”是独立的,分别为加热过程和冷却过程创建了一套死区和迟滞指令。本实验中我们规定它们是相同的。两者的联合作用传到用于描绘输出特性和设定温度范围比例尺度的函数信号发生器,模拟快速响应的“次级”夹套温度TT_117。然后这又反馈到另一套死区和迟滞指令,模拟动作较缓慢的主反应器温度TT_116。

5. 点击省略号按钮并在属性对话框中选择Parameters Tab ,打开SRange DEDT_01 死区模块参数对话框。

6. 确保该模块的死区时间为‘3.0 ’,增益为‘1.25 ’,点击OK

7. 双击省略号按钮,在属性对话框选择 Parameters 选项卡,然后对SRange_DEDT_02 死区模块参数重复上述操作步骤。使死区时间为‘3.0 ’秒,增益为‘1.25 ’。

8. 点击省略号按钮并在属性对话框中选择Parameters 选项卡,打开SRange_LDLG_02 超前-滞后模块参数对话框。

9. 确保滞后值为15秒,增益为1.0。

10. 对SRange_LDLG_01 模块重复上述操作步骤。

函数信号发生器指令给出了独立输入变量(X_In)并通过XY图形定义了‘曲线拟合’输出(Y_Out)。图形是通过数组与指令的联合获得的。X值包含在单维数组中(X_数组),相对应的Y值包含在另一个单维数组中(Y_数组)。这些数组在指令前被确定。当输入一个输入值,函数发生器将在X_数组(或在输入框中添加)中找到该数值,并在Y_数组中返回相应的值(或添加)作为输出。

11. All_Simulation例程中在过程指令组内包含了函数信号发生器指令。

12. 点击省略号按钮打开SRange_FGEN_02函数信号发生器模块参数对话框。

13.滚动鼠标指针指向XY1Size参数描述说明,并保持指向状态。

该参数值指示了输出曲线上能够显示的分段数量。点击OK 关闭对话框。

14. 右击输出标签数组SRange_FGEN_02Y1

15.选择监视 “SRange_FGEN_02Y1 ”,打开标签编辑器

1. 在监控标签窗口中点击

,展开SRange_FGEN_02Y1 输出。

该数组定义了函数信号发生器输出曲线分段以及仿真输出范围。

17. 在监控标签窗口,向上查找标签,展开SRange_FGEN_02X1 输出数组。

该数组定义了函数信号发生器相应于输入曲线分段的输入范围。

18. 双击All_Simulation 功能块例程,返回原例程。

19. 点击省略号按钮并在属性对话框中选择Parameters 选项卡,打开SRange DEDT_03 死区模块参数对话框。注意死区时间大于次级或夹套温度.。这是从夹套到反应器产品传热的休整延迟时间。

20. 点击OK 关闭对话框。

21. 点击主工具栏上的

图标,校验该例程。在结果窗口中将看到下面错误提示:

22. 点击工具栏上的Save 图标,保存该项目。

23. 保存项目后,点击控制器状态栏上的控制器图标然后选择下载,将项目下载到控制器上。

24. 当出现用于确认项目和目标控制器的下载提示对话框时,选择Download

25.项目下载完成后,返回控制器状态栏点击控制器图标并在下拉菜单中选择Run Mode ,将控制器设置为运行模式。

26. 然后在确认对话框中点击Yes

状态和例程窗口边沿变为绿色

罗克韦尔(AB)PLC讲解,创建一个新的“Add On指令”

创建一个新的指令的工作流程包括:

• 预先设计或技术规格-一个小计划将促使长久的发展。

• 创建指令框架-选择指令逻辑的语言,预/后扫描行为,版本选择等等。

• 指令的固定标签结构-参数与本地标签。很显然,此处做的选择在不同语言环境下会影响外观、条件和验证要求。

在本次实验中,创建一个常规目的指令来模拟一个带有变量滞后和时间常数的连续过程(适用于一阶滞后)。

输入为: 信号输入(浮点型,固有单位) 滞后时间(浮点型,秒)

时间常数(浮点型,秒)

输出为: 信号输出(浮点型,固有单位)

1、在下拉菜单中,右键单击‘Add-On Instructions’文件夹,然后选择‘New Add-On Instruction …’。

2. 完成所示的Add-On 指令对话框。

值得注意的是一个Add-On指令能够用以下任何一种语言来编写:梯形图、功能块或结构化文本。

3. 单击OK 完成。

4. 许多新条目出现在控制器项目管理器中。

5. 右击新创建的Add-On指令:‘Simulation_DT_1st ’,然后在下拉菜单中选择‘Open Definition ’。

6.现在‘Add-On Instruction Definition’编辑器应该可以使用。

• ‘General’选项卡包括所有在指令创建时首先要输入的条目。

• 以‘Revision Note’为形式的版本信息,其形式自由并且能由用户单独更新和强制,没有版本自动跟踪机制。

• 窗口底部有许多用户经常使用的条目。‘Logic’按键可以立即打开该指令的逻辑例程。

• ‘Data Type Size’记录了指令数据所使用的内存数量(以字节为单位)。

7. 单击参数选项卡,查看指令中的参数。

通过任务的详述说明,以下为我们所知一定包含在定义中的参数。

每个Add-On指令中‘EnableIn’和‘EnableOut’参数是预先确定而且为缺省值。‘EnableIn’由每种语言环境的特定因素决定,而且可以被用作特殊功能。这是一个高级主题,超出了本实验范围。‘EnableOut’通常与‘EnableIn’的状态保持一致,但是也可以由用户编程控制参数。

‘Parameters’选项卡是与该Add-On指令相关的标签数据库编辑器窗口,并包括一些已定义的特定字段:Usage、Alias For 、Default、Style 、Req、Vis、Description、External Access、Constant。

‘Usage’允许用户指定参数为: ‘Input’指令的输入参数(支持基本数据类型) ‘Output’ 指令的输出参数(支持基本数据类型)

‘InOut’通过‘按参考方式’传递到指令的参数(任何数据类型包括用户自定义结构类型、数组等等)

‘Alias For’ 允许用户将该参数定义为本AOI的某local tag(或其下一级tag)的别名参数。可以通过下拉菜单进行选择。只有‘Input’和‘Output’类型的参数才可定义别名。

‘Default’允许用户为相关参数指定缺省值。这个数值是指令首次创建时指令调用实例标签的参数值。‘Style’设定参数的显示格式,如二进制、八进制、十进制、十六进制、日期/时间、指数、浮点数。

‘Req’-当在例程中使用指令实例时,点选‘Required’复选框的参数将强制用户输入一个标签或者对这个参数进行一个功能块连接。该修改符定义了本编程语言的校验行为。缺省情况下,‘Required’参数也是‘Visible’的。

‘Vis’-当在例程中使用指令时,点选‘Visible’复选框的参数将可见。因为修改符的使用,导致了一些取决于指令示例中使用的数据类型和语言(LD、FB、ST)的结果不同。

‘Description’字段很重要,因为在此处使用的任何信息都将会‘传递’到用户程序的任何一个指令实例中。这种‘自身文档’可用于描述指令的使用情况、单位等等。不超过512个字符。

‘External Access’设定外部设备(如人机界面)访问该参数的权限。有三种不同的权限:Read/Write(可读写)、Read Only(只读)、None(不可访问)。

‘Constant’设置该参数是否为常数。如果选择了该项,则可避免参数值被AOI外部逻辑修改,但AOI内部逻辑可以修改该参数值。

用户可以隐藏或显示某列,(在该列标题行点击鼠标右键,根据出现的菜单操作)。

8.从任务规范中可以看出,下列是必须包含在定义中的参数: 输入:

• Name:SimInput

• Usage:输入参数

• Data Type:实型

• Default:0.0

• Required*(选择)

• Visible(选择)

• Description:仿真输入

• External Access:读/写

* 这个参数是‘Required’,因为仿真必须要有输入。默认情况下,‘Visible’随‘Required’变化而变化。另外,External Access设为读/写,这意味着外部设备(如人机界面)可以读且可以改写该参数。

• Name:SimDeadtime

• Usage:输入参数

• Data Type:实型

• Default:0.0

• Not Required* (不选择)

• Not Visible (不选择)

• Description: 停滞秒数

• External Access:读/写

* 这个参数被认为是可选参数并且默认情况为不是‘Required’或‘Visible’,但是仍然可以访问或者被用户操控。

• Name: SimTimeConstant

• Usage:输入参数

• Data Type : 实型

• Default:1.0

• Not Required* (不选择)

• Visible (选择)

• Description:时间常数(秒)

• External Access:读/写

* 这个参数被认为是可选参数并且为不是‘Required’,但是为了用户输入它应该为‘Visible’。

此指令的输出:

• Name:SimOutput

• Usage:输出参数

• Data Type: 实型

• Default:0.0

• Not Required (不选择)

• Visible* (选择)

• Description:仿真输出

• External Access:只读

* * 对于用户连接来说,输出应该为‘Visible’,但是不选择‘Required’(它可以直接通过标签数据库访问)。另外,External Access设为只读,这意味着外部设备(如人机界面)只能读该参数,而无法更改该参数值。如果External Access设为‘None’,则外部设备看不到该参数。

9. 在定义参数表中输入这些参数和规范。

‘Signature’选项卡允许用户设置对AOI进行封装和签名,以防他人更改。该选项卡还显示签名历史记录。

10. 单击Apply 完成修改。

11.单击一次Logic 按键打开空白的功能块例程(这是控制器项目管理器的Add-On指令文件夹中命名为‘Logic’ 的例程)。

Add-On指令中的‘Logic’例程与其他语言类型的例程一样,只是功能块额外在右上角(更多在其后)带有‘Data Context’下拉菜单。

在‘Logic’中编写逻辑遵循相同规则和约定,就好像在控制器中的任何地方编写一个标准例程。

该指令的仿真逻辑会包括FB DeadTime Block(DEDT)和一个FB LeadLag Block(LDLG)

12. 将DEDT和LDLG功能块加入到这页上。

结果如下:

13. 双击DEDT 功能块上的问号然后输入DA1 ,点Enter 完成。

14. 右击‘DA1 ’,然后从下拉菜单中选择‘New ParameterDA1 ’…’。

15. 完成‘Parameter/Local Tag Prosperities ’对话框如下:

16. 单击OK 完成。

InOut ’是为指令指定该数据‘按参考方式’进行传递。这就等同于将‘数据的指针’传到指令,代替传递‘数据的数值’。这是使用数组、预定义结构体或UDT作为Add-On指令输入的合适方式。‘InOut ’参数将在‘使用新的指令’部分进一步讨论。

17.打开DEDT的属性,选择‘Parameters’选项卡显示DEDT功能块的‘Dead Time’输入参数和‘DeadtimeInv’ 输出参数并‘点选’那些参数的可见性。

18. 单击ApplyOK 完成修改。

19.打开LDLG功能块的属性,显示‘Lag’参数,然后‘点选’参数的可见性。

20. 单击ApplyOK 完成更改。

21. 在此页上放置3个输入参考(IREF)。

22. 连接如下:

• DEDT.In

• DEDT.Deadtime

• LDLG..Lag

显示如下:

23. 将DEDT.Out连接到LDLG..In

24. 双击第一个IREF然后输入‘SimInput ’,既可以直接键入,也可以下拉选择标签。

25. 重复先前步骤,将输入参数‘SimDeadtime ’放置到第二个IREF。

26.再次重复,将输入参数‘SimTimeConstant ’放置到第三个IREF。逻辑应该如下所示:

27. 在此页上放置一个输出参考(OREF)。

28. 将它连到LDLG..Out上

29. 双击输出参考(OREF),然后键入‘SimOutput’(输出参数是以前定义的)。

考虑到FB滞后时间功能块(DEDT)的特性,输入的定时/延时时间值很可能使得100个元素数组不够用,所以,比较适合的做法是,把相关的错误信息位(DEDT_01.DeadtimeInv)作为一个输出参数,这样就能够在指令外部监视此错误状况。

30. 在本页上放置另一个输出参考(OREF)并将其连到DEDT.DeadtimeInv上。

31. 双击一个新的输出参考(OREF)然后键入‘SimDTInv’。单击Enter 接受。

32. 右击‘SimDTInv’,然后从下拉菜单中选择‘New Parameter‘SimDTInv…’。

33. 完成的‘New Parameter’对话框显示如下:

34.单击OK 完成。

通过这种方式,可以在逻辑编辑器中创建新参数,这与在定义参数中创建它们一样容易。逻辑定义应该如下所示:

35. 关闭‘Logic’例程。

36. 如果在屏幕上还没有存在,右击控制器项目管理器中的Add-On指令 ‘Simulation_DT_1st’,打开AOI定义,然后从下拉菜单中选择‘Open Definition’。

37. 单击Parameters 选项卡查看指令中的参数。

38.单击Local Tags 选项卡:

确切地说,Local Tags是指令自己本身使用的标签,而不是用户使用的标签。因此,当指令在例程中使用时,这些Local Tags标签在数据结构中是不可见的。典型的使用是作为AOI的内部标签或者作为一些操作的中间变量使用。这些标签只在指令内部可见。

注意,功能块标签创建时默认为Local Tags。通常,支持标签(backing tag)不作为参数来使用,而作为内部标签。这对于任何一个包含标签结构的指令都是适用的,如:定时器、计数器、功能块、嵌套的AOI等等。

使用内部的指令帮助文件

1. 单击Help 选项卡:

Help ’选项卡包含了指令帮助预览,它由用户提供的信息自动产生等。

2. 下拉滚动条找到‘Available Languages’部分。

这部分显示了每种可用的语言(RLL、FB和ST)中指令的默认外观。

3. 继续下拉滚动条,可见显示所有指令参数、用法、类型和修改符的表格。

再下面是可选的‘Extended Description’,它是在选项卡最顶部‘Extended Description’字段中由用户定义的更详细的使用说明,以及指令修改的历史记录。修改的历史记录会跟踪上次编辑日期以及指令的创建时间。

这就是当访问RSLogix5000指令帮助时,指令‘Help’的显示外观。

4. 关闭AOI定义编辑器窗口。

5.校验整个控制器程序。

应该校验控制器程序保证没有任何问题。如果接收到一个错误,询问指导教师查出项目哪里出错了。

目前为止,我们已经开始了一个新的RSLogix 5000工程并创建了一个Add-On指令,键入了必须的参数和将执行的逻辑。我们还没有真正地使用它。这即将在下一步。

使用新的指令

新的指令可以在梯形图逻辑、功能块或结构化文本语言(包括SFC Action中的结构化文本语言)中使用。指令的可见性遵循所处环境。在‘Parameter’定义中的参数属性中选择每种语言的输入、校验和可见性行为。

以前在功能块语言中创建的Add-On指令能够使用在任何标准指令编辑器中。

指令工具栏有一个‘Add-On’选项卡,上面列写了全部的当前程序中可利用的Add-On指令。

梯形图逻辑实例

1. 打开‘MainTask ’中‘MainProgram ’的‘MainRoutine ’(默认情况下,这是一个梯形图逻辑例程)。

2. 在一个空的梯级上单击指令工具栏上Add-On选项卡中的Simulation按键,放置一个‘Simulation_DT_1st’指令。

后面带一个问号(?)的参数需要键入一个标签名。如下:

• Simulation_DT_1st

类型为‘Simulation_DT_1st’的标签作为这个指令中不可重名的数据实例。这个非常像TON指令中提及的定时器结构体。

• SimInput 需要一个实型标签作为输入参数。

• DA1 需要一个实型数组暂存中间数据,数组至少有100个元素。

后面带有双问号(??)的参数填写的是标签值。这些字段显示那些参数的当前值。

3.双击第一个问号(?),然后键入‘LDsim1 ’作为指令的参数。单击Enter 完成。

4. 右击 ‘LDsim1’ 条目,然后选择‘New“LDsim1”…’。

5. 完成‘New Tag’对话框如下。

6. 单击【OK】完成。

7. 在指令中键入另外两个标签并创建它们。

SimInput

• Name: RealValue1

• Type:Base

• Data Type: 实型

• Scope:MainProgram

DA1

• Name:deadarray1

• Type:Base

• Data Type:实型[100]

• Scope: MainProgram

8.校验RLL例程:

RLL例程如下:

9. 回顾之前指令定义中创建的参数选项卡信息如下:

‘Visible’参数值显示在指令上。‘InOut’例外。

在梯形图逻辑中,一个布尔型的输出参数指定为‘Visible’(而不是‘Required’)在指令上会表现为‘位类型’引脚。这与‘SimDTInv’输出参数的例子一样。

‘Required’参数需要用户在指令校验前键入一个符合这个参数的正确标签变量。

?考虑‘SimDeadTime’参数。利用以下的RLL MOV指令(或一些相似一个数值。

10.单击属性按钮 ,查看指令的参数。

在这里

注意RLL指令中的可见性不能改变时,‘Visibility’列不起作用。

* 在指令定义中作为‘本地标签’创建的标签在哪?

11.按以下信息修改‘SimDeadtime ’和‘SimTimeConstant ’参数值:

12.单击ApplyOK 完成更改

功能块实例

1. 在‘MainProgram’下创建一个名为‘FB1’功能块例程。

2. 打开‘FB1’功能块例程,显示例程编程域。

3. 单击Logix5000工具栏上的Add-On选项卡,在功能块编程域内放置一个‘Simulation_DT_1st ’指令。

与参数相关的引脚已经在指令定义中指定为‘Visible’,默认情况下在指令中可见。

指令的数据标签‘Simulation_DT_1st_01’已经创建完成。这与任何一个在功能块语言环境下创建的指令一致。

4。 双击DA1对应的问号(?)并键入‘deadarray2’。按Enter完成。

5.右击刚才创建的 ‘deadarray2 ’ 条目,然后选择‘New “deadarray2”…’

6. 完成‘New Tag ’对话框如下,注意Data Type

7. 单击OK 完成。

8.此时校验例程。

9. 注意报告的错误信息:

在指令定义中,‘SimInput’指定为‘Required’参数。在功能块语言环境下,同样要求连接另一个功能块。观察‘SimInput’参数的引脚。

输入引脚末端的‘结点’指示该参数需要连接到其他功能块。直到所有的‘required’参数都有连接(要求的输入和输出类似),该指令才会校验无误。

10. 在页面上放置一个输入参考(IREF),然后将它与‘SimInput ’连接在一起。

11. 双击IREF,然后键入RealValue1 (这个输入标签与在RLL部分使用过的标签一样)。按Enter 完成。

12.校验例程(这时例程应该显示无误)。

13.单击属性按钮,显示指令参数。

注意‘Visible’列生效。这个适合功能块语言环境,在此环境下,可以增加可选参数的功能性。

14. 按以下信息修改‘SimDeadtime’和‘SimTimeConstant’参数的值。

15.单击ApplyOK 完成更改。

结构化文本实例

1. 在‘MainProgram’下创建一个新的名为‘ST1’的结构化文本例程。

2. 打开‘ST1’结构化文本例程显示编程域。

3. 从指令工具栏、插入/选择或只是简单的键入, 添加一个‘Simulation_DT_1st’指令。

工具提示框显示了指令中所必需的参数,以实现校验无误。注意只有指令的支持标签(backing tag)和在定义中指定为‘Required’的参数是唯一在结构化文本执行过程中出现的。

4. 右击‘Simulation_DT_1st’,然后从下拉菜单中选择‘Argument List…’。

5. 按如下变量完成‘Argument List’。

6.单击Apply和OK完成更改。

7.完成带有如下标签的结构化文本指令。在标签上右击,然后选择‘NewTag’创建标签。

• Name: stsim1

• Type: 基本型

• Data Type:Simulation_DT_1st

• Scope:MainProgram

• Name: RealValue1 *‘RealValue1’ 已经存在了。

• Type: Base

• Data Type:实型

• Scope:MainProgram

• Name: deadarray3

• Type:Base

• Data Type:实型[100]

• Scope:MainProgram

* 在每行的末端使用分号终止结构化文本。

若要直接修改支持标签(backing tag)值,则必须通过指令属性或标签数据库视图完成。

8.校验ST例程。

9. 右击指令,然后在下拉菜单中选择‘Prosperities’。

10. 在指令属性选项卡中,修改‘SimDeadtime’和‘SimTimeConstant’的参数如下:

11. 单击ApplyOK 完成更改。

正如上三部分所示,在Add-On指令设计阶段,参数的VisibleRequired 修改符的使用必须要考虑在其中。语言类型应该总在考虑范围之内。

相关问答

abb机器人与ABplc之间通讯设置?

1.可以通过适当的设置实现abb机器人与ABplc之间的通讯。2.通讯设置需要考虑以下几个方面:a.硬件连接:需要通过适当的接口将abb机器人和ABplc连接起来。...

ab的modbus指令详解?

Modbus是一种通信协议,用于将不同设备之间的数据传输。其中,ab的modbus指令是AB公司所推出的modbus协议指令集,包括读写寄存器、读写线圈、读写离散输入、读写...

ABPLC有没有步进指令,或顺序功能图的编法?

有的,你在建立程序段的时候选择SFC形式的即可啊,然后就可以按照顺序功能图来编了。平常我们都选择LD或者是FBD的形式。有的,你在建立程序段的时候选择SFC形式...

ABB变频器以太网怎么和ABPLC通讯?

abb变频器没有以太网吧?要是你用的ABPLC要是可以做Modbus主站的话,可以用Modbus通讯,ABB上设置还是很简单的,要是不行可以加一个可以做主站设备。abb变频器...

PLC写程序问题,通过编码器输入PLC,ab相位时间差,判断电机正反转,这个程序怎么写,希望有备注?

给你个提示,正传是B接通的情况下,A上升沿。反转是A接通B下降沿。懂了吧,你非得要程序我下午给你拍照。我有现成的程序。给你个提示,正传是B接通的情况下,A上...

ab系统的plc程序密码破解?

那得看什么时候的PLC了,11年之前的破解软件应该就能联机破解(不知道win7系统下能不能破解最早XP系统下是可以的),之后的有硬件看门狗,要想读出来程序就得把...

西门子300的PLC跟ABPLC要实现通讯,硬件怎么配置?

通讯方式MPI/DP都可以;这主要是要根据你的自动化系统网络结构、通讯数据量、便利性等多个方面考虑,对于大型的自动化系统,一般在PLC与PLC之间、与HMI之间,采...

AB的PLC主要有什么系列的啊?-懂得

ABPLC主要分为下面几类系列ABPLC,ALLEN-BRADLEYPLCSLC500PLCControlLoigxPLCPLC-5MicrologixPLCCompactLogixPLCFABPL...

mcgs触摸屏怎么与ABPLC连?

需要以下步骤:1.在MCGS软件中打开PLC连接界面,选择PLC类型和连接方式。通常可以选择串口或者以太网连接。2.在连接界面中输入PLC的IP地址或者串口参数等连...

abplc更换cpu怎么配置?

更换ABPLC的CPU后,需要重新配置CPU以确保PLC能够正常工作。以下是一些常见的配置步骤:1.确定新CPU的型号和规格,以及PLC的型号和版本。这将有助于确定所需的...

 sa6  浦阳一小 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部