线下实训
HOME
线下实训
正文内容
plc编程add PLC的指令是什么?
发布时间 : 2024-11-26
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC的指令是什么?

指令语句表编程语言是所有PLC都具有的最基本的编程语言。而指令语句表程序是由一条一条的指令堆砌而成的。因此,我们有必要对指令进行进一步的说明和解读。

1、指令格式

PLC的指令语句表程序和微机汇编语言程序非常的相似,我们也是以汇编语言的指令和指令系统方式来进行介绍。

所谓指令是指对PLC的一种操作命令,告诉PLC怎么做,做什么?人们设计了一系列的操作命令,并对他进行二进制编码。但是对于人们设计和交流沟通来说,二进制十分不便于记忆、阅读和书写。进一步又设计出了助记符形式的表示,这就是汇编语言的助记符指令格式。助记符指令十分好记,方便阅读和书写。更好的是它可以直接用键盘输入,然后通过PLC内部的编译程序把它变成一系列的二进制操作编码,由PLC的CPU来执行。

那么一条操作指令是由哪些内容组成的呢?一般来说,一条指令是由操作码和操作数组成的,例:

操作码又叫助记符。表示这条指令的性质和功能,就是要求PLC怎么做,一条指令,器操作码是必不可少的。

操作数又叫地址码,操作数地址,表示参与操作数据或数据的地址,在PLC中,也可以把它叫做编程元件。操作数告诉PLC做什么。上面这条指令表示和一个常开触点X0相串联,并完成逻辑“与”运算。

在PLC指令系统中,操作数可有可无,没有操作数的指令只表示完成一种功能,例如下面指令:

END

它就没有操作数,仅表示程序就此结束。

在功能指令中,操作数可以有1-4个,例如下面指令:

ADD D0 D1 D2

这条指令中操作数有三个D0 、D1、 D2。这时候把操作数分为源数(源址)和目的操作数(终址)。源址表示操作数的来源,而终址表示指令操作结果存放地址。上面这条指令表示做加法,把D0和D1相加,相加结果放在D2里。显然D0和D1为源址,D2为终址。

往期优秀文章回顾:

18张电气自动化控制动态图,各种实操原理一眼就能看明白

罗克韦尔(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 修改符的使用必须要考虑在其中。语言类型应该总在考虑范围之内。

相关问答

三菱plc编程中ADD是什么意思?

举个例子你就明白了ADDD40D128D130就是把数据寄存器D40的值,和数据寄存器D128的值做加法,送到D130存起来。举个例子你就明白了ADDD40D128D130就是....

西门子PLC中ADD指令在电脑怎么查找?

在西门子PLC编程软件中,可以通过多种方式查找ADD指令。一种方法是使用软件的全局搜索功能,在菜单栏中点击“编辑”或“查找”选项,然后在弹出的对话框中输入...

addne指令怎么使用?

三菱PLC中的加减法指令使用方法如下:1、加法指令ADD是将指定源地址中的二进制数相加,其结果送到指定目标地址中。当X0=ON时,源地址[S1]、[S2]的两个数据寄...

三菱plc中add和addp指令的区别?

三菱PLC(可编程逻辑控制器)的add指令和addp指令都是用于进行加法运算的指令,但是它们的使用方式和功能略有不同。1.add指令:-功能:将两个操作数相加,并将...

谁知道三菱PLC中addd20k2d20是什么意思?

三菱PLC中ADD是加法指令。[ADDD20K2D20]表示将寄存器D20内的数据加上2,运算结果仍旧存入寄存器D20中。三菱PLC中ADD是加法指令。[ADDD20K2D20]表示...

三菱pLc编程字母代表什么?

三菱PLC的字母是一些指令与助记符。比如,X是输入继电器,Y是输出继电器,T是定时器,C是计数器等等。而助记符指的是MOV、ADD、OUT、LD、LDI等。MOV是传送指令...

请教大家三菱PLC中的加减法指令怎么使用,谢谢?

三菱PLC中的ADD加法指令使用方法如下:下面举一个实例。加法指令执行前:加法指令执行后:三菱PLC中的ADD加法指令使用方法如下:下面举一个实例。加法指令执行...

三菱PLC怎么完成小数加减运算-懂得

首先需要明确,三菱PLC默认情况下只能进行整数运算,如果需要进行小数运算,需要购买带有模拟量输入输出模块的PLC。假设使用了模拟量输入输出模块,以...

西门子1500plc编程指令?

西门子1500PLC编程指令包括但不限于以下几种:LD指令用于加载数据,AND指令用于逻辑与运算,OR指令用于逻辑或运算,XOR指令用于逻辑异或运算,MOV指令用于数据...

三菱plc高速计数器定位编程实例?

回答如下:以下是一个三菱PLC高速计数器定位编程实例:假设要对一个物体进行定位控制,其位置信息由一个编码器提供,编码器每转一圈会输出1000个脉冲信号。控制...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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