基于三菱PLC间接寻址的循环结构与排序算法实现
三菱PLC编程及指令详解

三菱PLC编程及指令详解1三菱PLC 编程及指令详解三菱PLC 编程第一部分软元件的功能与代号一、输入继电器(X)输入继电器与输入端相连,它是专门用来接受PLC 外部开关信号的元件。
PLC 通过输入接口将外部输入信号状态(接通时为“1”,断开时为“0”)读入并存储在输入映象寄存器中。
如图3-2 所示为输入继电器X1 的等效电路。
输入继电器必须由外部信号驱动,不能用程序驱动,所以在程序中不可能出现其线圈。
由于输入继电器(X)为输入映象寄存器中的状态,所以其触点的使用次数不限。
FX 系列PLC 的输入继电器以八进制进行编号,FX2N 输入继电器的编号范围为X000~X267(184 点)。
注意,基本单元输入继电器的编号是固定的,扩展单元和扩展模块是按与基本单元最靠近开始,顺序进行编号。
例如:基本单元FX2N-64M的输入继电器编号为X000~X037(32 点),如果接有扩展单元或扩展模块,则扩展的输入继电器从X040 开始编号。
二、输出继电器(Y)输出继电器是用来将PLC 内部信号输出传送给外部负载(用户输出设备)。
输出继电器线圈是由PLC 内部程序的指令驱动,其线圈状态传送给输出单元,2再由输出单元对应的硬触点来驱动外部负载。
如图3-3 所示为输出继电器,,的等效电路。
图3-3 输出继电器的等效电路每个输出继电器在输出单元中都对应有维一一个常开硬触点,但在程序中供编程的输出继电器,不管是常开还是常闭触点,都可以无数次使用。
FX 系列PLC 的输出继电器也是八进制编号其中FX2N 编号范围为Y000~Y267(184点)。
与输入继电器一样,基本单元的输出继电器编号是固定的,扩展单元和扩展模块的编号也是按与基本单元最靠近开始,顺序进行编号。
在实际使用中,输入、输出继电器的数量,要看具体系统的配置情况。
三、通用辅助继电器(M0,M499)FX2N 系列共有500 点通用辅助继电器。
通用辅助继电器在PLC 运行时,如果电源突然断电,则全部线圈均OFF。
三菱PLC顺序控制的编程方法

三菱PLC顺序控制的编程⽅法⼀、单流程状态转移图的编程(⼀)什么是单流程所谓单流程,是指状态转移只可能有⼀种顺序。
例如台车⾃动往返的控制过程只有⼀种顺序:S0→S20→S21→S22→S23→S24→S0,没有其他可能,所以叫单流程。
(⼆)单流程状态转移图的编程⽅法1.状态的三要素状态转移图中的状态三要素是指驱动、状态转移条件和状态转移⽅向三个要素。
其中指定状态转移条件和状态转移⽅向是不可缺少的。
表达本状态的⼯作任务(负载驱动)时可以使⽤OUT指令也可以使⽤SET指令。
OUT指令和SET指令的区别:OUT指令驱动的输出在本状态关闭后⾃动关闭,使⽤SET指令驱动的输出可保持到其他状态执⾏,直到在程序的别的地⽅使⽤RST指令使其复位。
状态三要素2.状态转移图的编程⽅法步进顺控指令的编程原则:先进⾏驱动处理,然后进⾏状态转移处理。
状态转移处理就是根据转移⽅向和转移条件实现向下⼀个状态的转移。
步进顺控指令的编程原则⼆、编程要点和注意事项(1) 对状态进⾏编程处理,必须使⽤步进接点指令STL,它表⽰这些处理(包括驱动、转移)均在该状态接点形成的⼦母线上进⾏。
(2)与STL步进接点相连的触点应使⽤LD或LDI指令,下⼀条STL指令的出现意味着当前STL程序区的结束和新的STL程序区的开始。
RET指令意味着整个STL程序区的结束,LD点返回左侧母线。
每个STL步进接点驱动的电路⼀般放在⼀起,最后⼀个STL电路结束时(即步进程序的最后),⼀定要使⽤RET指令,否则将出现“程序语法错误”信息,plc不能执⾏⽤户程序。
(3)状态编程顺序为:先进⾏驱动处理,再进⾏转移处理,不能颠倒。
驱动处理就是该状态的输出处理,转移处理就是根据转移⽅向和转移条件实现下⼀个状态的转移。
(4)初始状态可由其他状态驱动,但运⾏开始时,必须⽤其他⽅法预先作好驱动,否则状态流程不可能向下进⾏。
⼀般⽤控制系统的初始条件,若⽆初始条件,可⽤M8002或M8000进⾏驱动。
PLC多种编程方法实现顺序控制

、
一
在 各 工 步 的状 态如 表 1 示 。 所
图 3起保停电路 编程方式实现顺序控制 2使用 步进指令的编程方 式 . 步进指令是专 门为顺序控制设计提供 的指令 ,它的步 只能用状态 寄存器 s 来表示 ,状态寄存器有断 电保持功能 ,在编制顺序控制程序 时 ,它与步进指令一起使用 ,而且状态寄存器必须用置位指令 S T置 E 位, 这样才具有控制功 能 , 才能提供 S L触点 , T 否则状态 寄存器 s与一 般的中间继 电器 M相 同。在步进指令梯形 图中不同的步进段允许有双 重输 出, 即允许 有重复 的负载输出 , 步进触点 结束时要用 R T指令 在 E 使后面的程序返 回原母线。这种编程 方法简单 、 方便 、 直观 , 设计效率较 高, 进指令 , L 就 只能 采 用 本 文 介 绍 的 其 他 编 程 方 法 了。 把 图 2中 的 工 步 0 3用 状 态 — 寄存器 ¥ 0 ¥ 3 2 ~ 2 代替 , 代替 以后使用步进指令编 出对应的梯形图程序 ,
渤海船舶 职业 学院电 气工程 系 孙 艳秋
[ 摘 要] 顺序控制在工业控制 中较 为常见。顺序功能图( 叫 S C图) 也 F 法是 P C针 对顺序控制的一种专 门的程序设计 方法。在 S C L F
图的实际编程 中, 以有 多种方式编制 出对应的梯形 图。本文结合三菱 F 系列 P C控制 实例 , 可 X L 对常见的四种编程 方式及 其特 点、
一
图 5 移位寄存器实现顺序控制 从 功能表 图可 以看 出,在 0 3各步 中只有一个步在某时刻接通而 - 其他步都在 断开 , 把各步用 中间继 电器 MI 0 M13代替 , O一 0 就很 容易用 移位寄存器实现控制 。图 5为用移位 寄存器编程时的梯形图 , 采用移位 寄存 器 M10 M17的前 四位 M10 M13代表 4 ( 0一 1 0一 0 下转第 2 8页 ) 0
任务6.4 FX2N系列 PLC循环与移位指令

任务6.4 FX2N系列循环与移位指令
六、移位读出指令
19:04
任务6.4 FX2N系列循环与移位指令
19:04
【例】入库物品FIFO。写入99个物品的产品编号(4位十进制数),依次存放在 D2~D100中,按照先入库的物品先出库的原则,读取出库物品的产品编号,并用 4位数码管显示产品编号。
任务6.4 FX2N系列循环与移位指令
五、移位写入指令
19:04
在X000由OFF变为ON时,指针的值加1后写入数据。第一次写入时,源操作数D0中的数 据写入D2。
如果X000再次由OFF变为ON,D1中的数变为2,D0中的数据写入D3。依此类推,源操作 数D0中的数据依次写入堆栈。
任务6.4 FX2N系列循环与移位指令
X0 入库
BIN K4X0 D0
4位十进制编号0~9999→D0
X1 出库
M8000
SFWRP D0 D1 K100 存放99个产品编号D0→D2~D100
SFRDP D2 D101 K100 把产品编号读到D101中
BCD D101 K4Y0
用4位BCD数码管显示产品编号
案例:生产线质量控制
现代工业生产广泛采用流水作业,对成品或半成品进行分检,排 除残次品是必须的工序。在流水线上,成品或半成品往往要经过若干项 检验,符合要求者得以通过,随着流水线进入下道生产工步。而不合格 者必须在某处集中地予以排除,不得进入下道生产环节。因此,成品或 半成品随传送带递进过程中,对其进行的检验结果也必须同步地向前移 动。这样,当不合格者移动到规定的排除点时,才能正确地加以排除, 从而实现质检与分检。利用 PC 提供的移位寄存器功能,可以很方便地 做到这一点。
三菱PLC循环与移位类指令三菱plc

三菱PLC循环与移位类指令 - 三菱plc 1.循环移位指令右、左循环移位指令(D)ROR(P)和(D)ROL(P)编号分别为FNC30和FNC31。
执行这两条指令时,各位数据向右(或向左)循环移动n位,最终一次移出来的那一位同时存入进位标志M8022中,如图1所示。
图1 右、左循环移位指令的使用2.带进位的循环移位指令带进位的循环右、左移位指令(D) RCR(P)和(D) RCL(P)编号分别为FNC32和FNC33。
执行这两条指令时,各位数据连同进位(M8022)向右(或向左)循环移动n位,如图2所示。
图2 带进位右、左循环移位指令的使用使用ROR/ROL/RCR/RCL指令时应当留意:1)目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,目标元件中指定位元件的组合只有在K4(16位)和K8(32位指令)时有效。
2)16位指令占5个程序步,32位指令占9个程序步。
3)用连续指令执行时,循环移位操作每个周期执行一次。
3.位右移和位左移指令位右、左移指令SFTR(P)和SFTL(P)的编号分别为FNC34和FNC35。
它们使位元件中的状态成组地向右(或向左)移动。
n1指定位元件的长度,n2指定移位位数,n1和n2的关系及范围因机型不同而有差异,一般为n2≤n1≤1024。
位右移指令使用如图3所示。
图3 位右移指令的使用使用位右移和位左移指令时应留意:1)源操作数可取X、Y、M、S,目标操作数可取Y、M、S。
2)只有16位操作,占9个程序步。
4.字右移和字左移指令字右移和字左移指令WSFR(P)和WSFL(P)指令编号分别为FNC36和FNC37。
字右移和字左移指令以字为单位,其工作的过程与位移位相像,是将n1个字右移或左移n2个字。
使用字右移和字左移指令时应留意:1)源操作数可取KnX、KnY、KnM、KnS、T、C和D,目标操作数可取KnY、KnM、KnS、T、C和D。
2)字移位指令只有16位操作,占用9个程序步.3)n1和n2的关系为n2≤n1≤512。
三菱PLC的寻址方式

1、直接寻址
所谓直接寻址,就是直接给出指令的确切操作数。
基本逻辑指令都是直接寻址方式。
例如:LD X0,就是直接寻址。
又比如:MOV D0 D100,也是直接寻址。
2、立即寻址
立即寻址的特点是其操作数就是一个十进制或十六进制的常数。
例如:MOV K100 D0,其操作数K100为立即寻址。
3、变址寻址
变址寻址就是利用变址寄存器V,Z来进行地址修改的寻址方式。
变址操作数是两个编程元件的组合,变址操作数的操作地址为编程元件的编号,其编址号加上变址寄存器的数值为地址的编程元件。
例如:D2V0,它表示从D2开始向后偏移(V0)个单元的寄存器,若V0=K8,则将编址号2加上变址寄存器数值8,即K2+K8=K10,则变址操作后的地址为D10。
但是它有特殊情况,对于位元件X和Y,是以八进制编址的,则有所不同。
例如:X2V0,若V0=K8,则K2+K8=K10,由于X是以八进制编址的,变址操作后的地址不是X10,而是X12。
同样的,组合位元件KnX和KnY也是如此。
艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
如需进一步了解台达PLC、西门子PLC、施耐德plc、欧姆龙PLC的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城/。
三菱plc实现顺序控制的四种编程方法

三菱plc实现顺序控制的四种编程方法plc外部接线简单方便,它的控制主要是程序的设计,编制梯形图是最常用的编程方式,使用中一般有经验设计法,逻辑设计法,继电器控制电路移植法和顺序控制设计法,其中顺序控制设计法也叫功能表图设计法,功能表图是一种用来描述控制系统的控制过程功能、特性的图形,它主要是由步、转换、转换条件、箭头线和动作组成。
这是一种先进的设计方法,对于复杂系统,可以节约60%~90%的设计时间.我国1986年颁布了功能表图的国家标准(gb6988.6-86)。
有了功能表图后,可以用四种方式编制梯形图,它们分别是:起保停编程方式、步进梯形指令编程方式、移位寄存器编程方式和置位复位编程方式。
本文以三菱plc为例,说明实现顺序控制的四种编程方式。
例如:某plc控制的回转工作台控制钻孔的过程是:当回转工作台不转且钻头回转时,若传感器x400检测到工件到位,钻头向下工进y430当钻到一定深度钻头套筒压到下接近开关x401时,计时器t450计时,4s后快退y431到上接近开关x402,就回到了原位。
功能表图见图1:图1 功能表图1 使用起保停电路的编程方式起保停电路仅仅使用与触点和线圈有关的指令,无需编程元件做中间环节,各种型号plc的指令系统都有相关指令,加上该电路利用自保持,从而具有记忆功能,且与传统继电器控制电路基本相类似,因此得到了广泛的应用。
这种编程方法通用性强,编程容易掌握,一般在原继电器控制系统的plc改造过程中应用较多。
如图2为使用起保停电路编程方式编制的与图1顺序功能图所对应的梯形图,图2中只有常开触点、常闭触点及输出线圈组成。
图2 起保停电路实现顺序控制2 使用步进梯形指令的编程方式步进梯形指令是专门为顺序控制设计提供的指令,它的步只能用状态寄存器s来表示,状态寄存器有断电保持功能,在编制顺序控制程序时应与步进指令一起使用,而且状态寄存器必须用置位指令set置位,这样才具有控制功能,状态寄存器s才能提供stl触点,否则状态寄存器s与一般的中间继电器m相同。
问题如何在STEP7中使用间接寻址编写循环程序解答间接寻址

问题:如何在STEP 7中使用间接寻址编写循环程序?解答:间接寻址允许寻址地址在程序运行期间才可以确定的操作数。
这意味着,程序的一部分可以重复执行。
在每个运行周期内,循环编程为所使用的操作数分配不同的地址。
在下载中包含了所附的程序“LoopAddr”的详细信息。
通过循环程序,将输入变量“Input_1”和“Input_2”的数值放入100个连续放置的存储单元中。
该程序包含了一个功能FC10,其IN变量为“Input_1”和“Input_2”( 类型为DWORD),并包含了编号为“DB_No”(类型为WORD)的数据块,以及一个声明为:“Value:ARRAY[1..100] of REAL”的数据块DB10。
在循环程序的每个运行期间内,将数值“Input_2”与来自“Input_1”的初始值相加,或者加到后面的总和上,然后将结果保存到数据块中计算得到的地址内。
例如,如果“Input_1”分配的数值为0.5,而“Input_2”数值为1.5,则第一个0.5保存在地址0.0中,而将计算得到的和(0.5+1.5=2.0)保存在后面的地址(4.0)中,下一个计算和(2.0+1.5=3.5)又保存在随后的地址(8.0)中,以此类推。
表1:在DB10中计算出来地址下保存“Input_1”、“Input_2”和相加结果的两个实例。
在FC10的第一部分中,调用系统功能SFC24“TEST_DB”,然后评估参数“RET_VAL”。
通过SFC24,接收到位于CPU的工作存储区中的数据块的信息。
如果DB是写保护的,则检测并检查所选DB的数据字节数。
如果“RET_VAL”的错误代码不等于零,则通过一个命令跳转来终止程序。
“RET_VAL”可能会返回下列错误编号:∙0000:没有错误发生。
∙80A1:数据块的编号为零,或者大于该CPU所允许的最大编号。
∙80B1:给定的数据块不在CPU中。
∙80B2:使用关键字UNLINKED生成数据块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于三菱PLC间接寻址的循环结构与排序算法实现
作者:刘思远
来源:《无线互联科技》2019年第22期
摘; ;要:三菱PLC中利用变址寄存器与其他的软元件编号组合在一起可以方便地实现对多个数据的寻址操作,也称间接寻址。
在三菱PLC中结合间接寻址和其他指令可以实现类似C 语言中的循环结构和排序算法,这种编程方式更为简便和灵活,通用性强,能帮助PLC编程人员掌握一些高级语言的基础知识。
文章基于三菱PLC间接寻址,对实现循环结构与排序算法进行了分析。
关键词:间接寻址;循环结构;排序算法
在实际的项目应用当中,在对多个数据进行操作时,经常需要间接指定地址。
所谓间接指定地址,就是区别于D0,D100等直接指定地址,而利用一个基准地址和间接指定数来指向一个新的地址的操作。
间接指定地址相比直接指定地址来说,指定的地址是可以变的,所以间接指定地址的操作又称作变址操作[1]。
变址寄存器结合其他的软元件可以很方便地对一串数据进行操作,类似于高级语言中的指针。
在高级语言中循环结构是结构化程序设计的基本结构之一,主要用到GOTO,DO while,FOR 3种语句[2]。
在工控行业的可编程逻辑控制器(Programmable Logic Controller,PLC)控制中,很多问题都要用到循环语句,比如物流系统在一套产品入库时,需要产品按照指定要求实现自动、循环入库。
三菱PLC中有FOR NEXT指令,但是在一些执行机构动作的顺序控制时,FOR NEXT指令不能很好地实现,此条指令更适合做简单的算法。
利用判断指令和变址寄存器可以很方便地嵌套到顺序控制中去,实现对执行机构一些循环动作的控制,这种编程思路借鉴了高级语言中的FOR语句。
排序也是PLC控制中经常遇到的难题,比如智能制造生产管理系统下单后,设备按照订单的编号大小进行生产,或者按照随机的要求生产,都要用到排序算法。
三菱PLC中SORT 指令是专门解决排序问题的,但是也有局限性,只能在程序中使用一次,不可重复使用。
本文以某智能制造生产系统中两种典型的控制要求为模型,结合高级语言的知识,以MES下单、订单生产为例子,利用三菱PLC中的变址寄存器和其他指令实现循环和排序算法。
1; ; MES系统介绍
图1为某智能制造生产系统的结构。
MES系统分配了固定地址的数据寄存器给PLC,用以存放订单和产品的相关信息。
图2中给出了用户下载订单后,3个订单的信息存入到PLC中的数据寄存器,上层为订单的基本信息,下层为该订单的产品信息,每个订单的产品信息存入的是不同的数据寄存器,例如订单10000的产品1编号存入D406,订单10001的产品1编号存入的是D436,以此类推,下层界面会随订单的变化而变化。
2; ; 循环结构的实现
2.1; 循环语句
C语言中有4种循环语句:goto,while,do while,for语句。
For语句最简单的理解形式如下:for(循环变量赋初值,循环条件,循环变量增值),例如:FOR(i=1, i<100, i++)[3]。
利用三菱PLC中的条件判断指令和变址寄存器再结合顺控指令的跳转即可以实现类似C 语言中的for循环。
所用到的指令为[Ld< z0 k100], incp z0,类似于C语言中的循环条件和循环变量增值。
2.2; 按照订单编号循环生产的实现
订单由MES系统下单到用户的客户端,用户下载订单后根据订单编号依次进行生产,但由于产品种类及数量过多,在编写系统的PLC程序时,编程人员要反复大量地使用不同数据寄存器,十分繁琐而导致容易出错。
三菱PLC在处理此类问题时用顺控指令结合变址寄存器能很快地实现条件的判断和循环。
3; ; 排序的实现
3.1; 排序算法
C语言中排序算法大致分为比较算法和非比较算法。
比较算法使用较多,基本上都是通过比较两个数的大小来实现,比如冒泡排序、快速排序和插入排序。
冒泡排序是最经典的排序算法,很适合初学者。
在MES下单系统中,订单除了按照顺序循环生产外,还存在优先级的概念,即先生产哪一个订单。
在编写此类问题的PLC程序时,就要对多个数据进行优先级别的排序,可采用类似于高级语言的冒泡排序。
用变址寄存器结合查询指令SER排序可以很灵活地解决该问题。
3.2; 按照订单优先级进行排序的实现
将3个订单的优先级存入D200~D203中。
利用SER指令查找出3个数据中最小值的位置,以Z1分辨3个订单的状态(在MES系统中,订单状态寄存器为1时代表订单等待生产,2为正在生产,3为取消订单,4为生产完成);以Z2分辨当前最小的是哪个数据并将其存入D211~D213中。
单个数据存入完毕后,将其值改变为K101(MES系统中优先级的最大值默认为K100)并利用MES留有空余的D404,D434,D464判别该数据是否已经被排序,当所有数据被排序完成后停止程序的运作。
该程序只是范例,在完整的程序中,还有更多的条件需要考虑,仅提供了大概的框架。
4; ; 结语
本文详细地介绍了利用三菱PLC的变址寄存器实现某智能制造生产系统中对多个订单的处理方法,包括订单的自动循环生产以及有订单优先级时该如何处理。
本文所提供的梯形圖参考程序借鉴了高级语言的循环结构和排序算法,而目前工控行业对PLC编程人员掌握高级语言知识的能力要求越来越高,西门子TIA PROTAL中的SCL编程语言是根据C语言封装的,在数据处理算法方面有很大优势。
将三菱PLC间接寻址的编程思路灵活运用,可以优化程序,解决数据处理逻辑和算法时的一些难点。
[参考文献]
[1]霍海波,范江波.基于三菱FX2N系列PLC软元件数据实时改变与显示设计[J].烟台师范学院学报(自然科学版),2006(1):31-36.
[2]马学敏.计算机C语言循环语句的应用研究[J].中国新通信,2016(17):87-88.
[3]王韬睿.三种简单排序算法及实现[J].通讯世界,2019(1):284-285.。