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

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

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

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

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

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

时间常数(浮点型,秒)

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(1)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(2)

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

3. 单击OK完成。

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(3)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(4)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(5)

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

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

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(6)

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

每个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. 在定义参数表中输入这些参数和规范。

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(7)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(8)

10. 单击Apply完成修改。

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(9)

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

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(10)

结果如下:

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(11)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(12)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(13)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(14)

16. 单击OK完成。

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(15)

18. 单击ApplyOK完成修改。

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(16)

20. 单击ApplyOK完成更改。

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(17)

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

22. 连接如下:

• DEDT.In

• DEDT.Deadtime

• LDLG..Lag

显示如下:

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(18)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(19)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(20)

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(21)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(22)

28. 将它连到LDLG..Out上

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(23)

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(24)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(25)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(26)

34.单击OK完成。

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(27)

35. 关闭‘Logic’例程。

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(28)

38.单击Local Tags选项卡:

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(29)

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

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

使用内部的指令帮助文件

1. 单击Help选项卡:

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(30)

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(31)

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

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

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

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(32)

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

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

使用新的指令

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

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

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

梯形图逻辑实例

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(33)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(34)

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

• Simulation_DT_1st

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

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

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(35)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(36)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(37)

6. 单击【OK】完成。

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

SimInput

• Name: RealValue1

• Type:Base

• Data Type: 实型

• Scope:MainProgram

DA1

• Name:deadarray1

• Type:Base

• Data Type:实型[100]

• Scope: MainProgram

8.校验RLL例程:

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(38)

RLL例程如下:

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(39)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(40)

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

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(41)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(42)

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(43)

在这里

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(44)

12.单击ApplyOK完成更改

功能块实例

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(45)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(46)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(47)

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

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(48)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(49)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(50)

7. 单击OK完成。

8.此时校验例程。

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(51)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(52)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(53)

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(54)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(55)

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(56)

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

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

15.单击ApplyOK完成更改。

结构化文本实例

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(57)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(58)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(59)

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(60)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(61)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(62)

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

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(63)

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

8.校验ST例程。

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(64)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(65)

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

罗克韦尔plc输入输出地址怎么表示(罗克韦尔ABPLC讲解)(66)

11. 单击ApplyOK完成更改。

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

,