罗克韦尔(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 Parameter ‘DA1 ’…’。
15. 完成‘Parameter/Local Tag Prosperities ’对话框如下:
16. 单击OK 完成。
‘InOut ’是为指令指定该数据‘按参考方式’进行传递。这就等同于将‘数据的指针’传到指令,代替传递‘数据的数值’。这是使用数组、预定义结构体或UDT作为Add-On指令输入的合适方式。‘InOut ’参数将在‘使用新的指令’部分进一步讨论。
17.打开DEDT的属性,选择‘Parameters’选项卡显示DEDT功能块的‘Dead Time’输入参数和‘DeadtimeInv’ 输出参数并‘点选’那些参数的可见性。
18. 单击Apply 和OK 完成修改。
19.打开LDLG功能块的属性,显示‘Lag’参数,然后‘点选’参数的可见性。
20. 单击Apply 和OK 完成更改。
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.单击Apply 和OK 完成更改
功能块实例
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.单击Apply 和OK 完成更改。
结构化文本实例
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. 单击Apply 和OK 完成更改。
正如上三部分所示,在Add-On指令设计阶段,参数的Visible 和Required 修改符的使用必须要考虑在其中。语言类型应该总在考虑范围之内。
罗克韦尔(AB)PLC讲解,4、RS5000、Studio5000编写梯形图完整版
创建了任务、程序、例程以及所需标签后,我们需要编写工作站(冲压、卷边和焊接)、 传送带和站调度梯形图逻辑程序。RSLogix5000 编程软件支持梯形图、功能块、顺序功能图、结构文本等编程语言,用户可以根据自己的需求灵活选择编程语言。对于本例,我们 选择梯形图编程语言。
本实验主题:
1. 输入梯级和指令
2. 使用快捷键输入指令和梯级元素
3. 输入分支
4. 掌握常用指令,如输入、输出、定时器、跳转子程序等。
5. 在多个项目间复制梯级
6. 校验梯形图逻辑
实验步骤:
1. 双击桌面上图标,打开 RSLogix5000 软件。
2. 单击 File->Open,选择上一实验所创建项目 P1 并打开。
3. 输入梯形图逻辑。右键单击 Assembly->Program_1_Press->Routine_Dispatch,从弹出菜单中选择 Open(打开),如图 2-21 所示。
4.在弹出的编程窗口中编写调度例程,如图 2-22 所示。
注意出现在右边窗口的梯级,此梯级处于编辑(Edit)模式,在梯级的左边标着“e”。现在可以添加指令和梯级了。
5. Routine_Dispatch 主例程的作用是初始化子例程、调度子例程。初始化子程序将
Station_1_Press 例程中 StationTimer 的计时累加值清零。如果标签 Call_Program_Value(调用程序号)由 Station_Dispatcher 例程设定为 1,则跳转到子例程 Station_1_Press 中。
首先,输入一个相等(EQU)指令(属于 Compare 类),单击 EQU,它就出现在梯级
的相应位置,如图 2-23 所示。
注意:您也可以将其拖到梯级上,或者双击“e”标记,然后在弹出的窗口中输入 EQU, 或者按下Insert 键,输入 EQU。
无论您采用哪种方法,现在都能够获得EQU 指令,出现如图2-24 所示画面:
6. 现在您需要在 EQU 指令的 SourceA 和 SourceB 处输入正确的标签地址。所有需要用到的标签我们在上一实验中都已经创建好了,这时,我们仅需双击问号,然后单击向下 箭头,如图 2-25 所示。
您可以在 Controller Scoped Tags 和 Program Scoped Tags 之间切换画面。回顾上次实验
内容,因为 Call_Program_Value 会在多个程序中使用,故作用域为 Controller Scoped Tags。
需要注意的是,如果一个标签被定义为 Program Scoped Tags,那么,只有属于这个Program 的 Routine 才可以对此变量进行读/写操作。
7. 双击 SourceB,直接输入立即数 1。如果不采用立即数方式,而采用标签的方式,
那么您可以右键单击 Source B 的问号,如图 2-26 所示。
8.弹出如图 2-27 所示画面。为了与本实验保持一致,请采用下例中的名称,并配置成相应属性。或者,直接使用立即数 1。
9. 按照上述方法,为 Assembly->Program_1_Press->Routine_Dispatch 例程创建如图2-28 所示梯形图逻辑,添加清除定时累加值所需指令 ONS 和RES。按下Insert 键,直接输入指令名称。由于本次实验中用到了的指令较多,不能一一介绍,对于不清楚的指令,您可以直接与指导老师沟通,或单击 Help->Instruction Help(指令帮助),查阅相关指令的帮助。
10. 创建梯形图分支。在 Routine_Dispatch 例程中,对 Station_1_Press 例程中定时器累加值清零后,梯级需要跳转到 Station_1_Press,开始执行压缩机部件的冲压工序。由于计时器累加值清零程序的输入条件与跳转指令相同,故我们需要将两个输出并联,但一定 要注意,输出并联梯级的顺序不能交换。
单击EQU 梯级指令,然后在工具条中选择 Branch,如图 2-29 所示
单击Branch,然后将其一端拖拽到所需位置,释放鼠标左键,如图 2-30 所示:
然后,添加跳转到子例程指令 JSR。按下 Insert 键,直接输入指令名称。对于不清楚
的指令,请单击 Help->Instruction Help(指令帮助),查阅相关指令的帮助,如图 2-31 所示。
11. 最终,创建完成的 Assembly->Program_1_Press->Routine_Dispatch 例程如图 2-32
所示。
12. 将 Assembly->Program_1_Press->Routine_Dispatch 中 的 梯形图 逻辑 复 制到
Assembly->Program_2_Stake->Routine_Dispatch。
13. 将该梯形图逻辑粘贴到 Assembly->Program_2_Stake->Routine_Dispatch 例程后, 修改以下参数,如图 2-33 所示。
- 将 EQU 指令中 SourceB 参数改为 2。
- 将 JSR 指令中Routine Name 参数改为 Station_2_Stake。
14. 将 Assembly->Program_1_Press->Routine_Dispatch 例程中梯形图逻辑复制到
Assembly->Program_3_Weld->Routine_Dispatch 中,修改以下参数,如图 2-34 所示。
- 将 EQU 指令中 SourceB 参数改为 3。
- 将 JSR 指令中Routine Name 参数改为 Station_3_Weld。
注意: 由于程序功能类似,我们通过简单的 Copy+Paste 就完成了程序的编写,无须重
修改标签,那么,我们可以想象,如果有多个冲压工作站,我们只需编写一个冲压工作站
的程序,其余的只需 Copy+Paste 就可以完成!
1. 单击工具条上
校验每个例程,出现错误提示后,纠正错误。然后,单击工具 条上
按钮校验整个项目并纠正出现的错误。
16. 在 Assembly->Program_1_Press->Station_1_Press 中,输入如图 2-35 所示梯形图逻辑。
17. 用户可以直接将 Assembly->Program_1_Press->Station_1_Press 例程的梯形图逻
辑直接复制到 Assembly->Program_2_Stake->Station_2_Stake 例程后,修改如下参数:
-将StationTimer 的 Preset(预设值)改为 2000;
注意 :选择多行梯级可以按下 Shift(上档)键,依次单击想要选择的梯级即可。
修改后的结果如图 2-36 所示:
18. 用户可以直接将 Assembly->Program_1_Press->Station_1_Press 例程的梯形图逻
辑直接复制到 Assembly->Program_3_Weld-> Station_3_Weld 例程后,修改如下参数:
-将StationTimer 的 Preset(预设值)改为 3000;
-StationTimer 定时结束后,添加 Complete 输出,表示三道工序都已经完成,用于控制 Conveyor 输出。
修改后的结果如图 2-37 所示:
19. 单击工具条上
校验每个例程,出现错误提示后,纠正错误。然后,单击工具 条上
按钮校验整个项目并纠正出现的错误。
20. 保存该项目。
21. 至此,三个工作站的程序已经完成了,我们发现在创建过程中,实际上,仅仅程 序 Program_1_Press 是自己创建的,其它两个程序都是对第一个程序的 Copy+Paste 以及一些简单的修改。那么,用户可以先将程序 Program_1_Press 的标签、例程创建完成后,再复制、粘贴、修改以及校验。注意:标签名称为什么不会冲突?
22. 接下来我们编写 Conveyor ( 传送带)例程的梯形图逻辑, 双击任务
Conveyor->Conveyor->Conveyor 例程,编写如图 2-38 所示梯形图逻辑。
第 0 行梯级用于对光眼故障(接线故障)的报警。第 1、2 行梯级用于控制传送带输出。
23. 继续编写工作站调度例程。双击 Periodic_Dispatcher->Station_Dispatcher->Station
_Dispatcher 例程,编写如图 2-39 所示梯形图逻辑。
其中,梯级 0 用于生成压缩机产品编号。梯级 1 用于判断三道工序是否正在工作。梯
级 3、4 用于调度工作站。
24.
单击工具条上 校验每个例程,出现错误提示后,纠正错误。然后,单击工具
条上 按钮校验整个项目并纠正出现的错误。
我们使用例程和项目校验工具时只能查出程序中出现的语法错误;不能查出程序中的 逻辑错误。但是现场条件往往不允许直接连接 I/O 模块调试。通过趋势图,我们可以观察时序,进而分析程序逻辑关系是否正确。
25. 单击菜单 File-> Save 选项,保存该项目,如图 2-40 所示。
26.单击选择资源管理器中 Trends(趋势图)文件夹,右键单击并从弹出菜单中选择New Trend(创建新趋势图),如图 2-41 所示。
27. 从弹出的对话框中命名新趋势图 Compressor,单击 OK,如图 2-42 所示。
28. 弹出 Add/Configure Tags(添加/组态标签)对话框,从 Scope(作用域)中选择Controller(控制器)或其它程序,然后从 Available Tags(可用标签)中选择标签,单击Add(添加)键,您可以在 Tags to Trend(建立趋势图的标签组)看到所添标签。若要从Tags to Trend 中移除所添标签,单击 Remove(移除)键。按图 2-43 所示添加所需监视的标签。
29. 弹出趋势图画面,在画面单击鼠标右键,从弹出菜单中选择 Chart Properties(图表属性),如图 2-44 所示。先选择Display(显示)选项卡,将 Background color(背景色)改为白色。
30. 选择 X-Axis(X 轴)时间轴选项卡,设置相应参数如图 2-45 所示:
31. 选择 Y-Axis(Y 轴)选项卡,设置相应参数如图 2-46 所示。设置完成后,单击
OK 键。
32.设定完Trends(趋势图)参数后,创建的趋势图如图 2-47 所示:
33. 接下来,我们要将该程序下载到控制器中运行,通过趋势图观察其运行结果是否 正确。下载前确认您所使用的 Logix5555 控制器的钥匙处于 Remote 位置,且程序处于离线状态。单击菜单 Communications->Who Active,弹出如图 2-48 所示对话框。
34. 单击 Download(下载)按钮,将该程序下载到控制器中。如果您的控制器正处于Remote Run(远程运行)状态,将弹出如图 2-49 所示警告。
35.单击 Download(下载)按钮,出现下载进程,如图 2-50 所示。
36. 程序下载后,将控制器打到运行状态,用户通过扭动控制器上的钥匙实现,也可以鼠标左键单击如下图所示的 Online(在线工具栏),从弹出菜单中选择 Run Mode(运行模式),如图 2-51 所示。
37. 改变控制器运行模式后,用户首先双击已创建的 Compressor 趋势图,弹出趋势图画面,并单击 Run(运行),开始实时绘制曲线。
38.. 接下来通过手动触发 PartSensor 标签, 使模拟的生产线运行起来。双击Station_Dispatcher(站调度)例程,弹出程序窗口,触发梯级 2 中标签 PartSensor。如图 2-52 所示:
39.双击 Trends->Compress,切换到趋势图,并观察到时序图如图 2-53 所示:
至此,您已完成梯形图程序编写的相关实验!
相关问答
ABPLC怎么将程序上载到计算机?
根据PLC种类,用logix500或logix5000等编程软件,设置rslinx联接路径,然后选择上载,建议多看书。根据PLC种类,用logix500或logix5000等编程软件,设置rslin...
ABplc初始化程序如何写?
要编写ABplc的初始化程序,首先需要定义输入输出模块和变量。然后,设置通信参数,如IP地址和端口号。接下来,配置输入输出模块的引脚和功能。然后,编写逻辑...
abplc如何控制步进?
第一步,将步进电机的转速传感器与plc的模拟量输出模块采连接,同时将转向传感器与plc的开关量输出模块连接。第二步,在plc程序中定义两个变量,分别储存转速传...
ABplc是怎么编址的,远程又是如何编址的?
ab的controllogix系列plc没有地址的概念,而是采用符号名编程某一个模块的通道只要标记一个变量名,以后就能直接访问了,无需关心什么地址远程io也是一样ab...
ab的plc怎样用需要在电脑上安装那些软件?
这个属于plc与上位机通信和应用的问题,也就是所谓的数据采集与监控SCADA。不同的品牌或者型号的plc所使用的软件也是不同的,例如AB的5000系列要在计算机里面安...
ab更新程序plc会重启吗?
一般情况下,如果您更新的是ABPLC程序,PLC可能会重新启动以加载新程序。这取决于您使用的PLC型号以及更新程序的方式。在某些情况下,PLC可能需要手动重启才能...
abplc上的加电处理器是什么意思?
1.加电处理器是指在ABPLC(Allen-Bradley可编程逻辑控制器)上用于处理电源供电的模块或电路。2.加电处理器的作用是在PLC系统中对电源进行管理和控制,包括电...
ab5000plc怎么上载程序?
要上载ab5000plc的程序,首先需要将PLC与电脑连接。然后使用程序上传工具(如RSLogix5000软件),通过连接电缆或以太网通信,将程序从PLC传输到电脑上。要上载ab...
AB的PLC编程软件Logix5000中,怎么实现计时器功能?-ZOL问答
此类定时器的线圈被驱动时定时器以增计数方式对PLC内的时钟脉冲进行累计计时,若当前寄存器内的累计值和设置值寄存器中设置的值相等,则定时器触点动作;定定时器...
AB的PLC主要有什么系列的啊?-vivianX的回答-懂得
ABPLC主要分为下面几类系列ABPLC,ALLEN-BRADLEYPLCSLC500PLCControlLoigxPLCPLC-5MicrologixPLCCompactLogixPLCFlexLo...