研选课堂
HOME
研选课堂
正文内容
plc编程goto语句 PLC编程通用规范,附实用技巧!
发布时间 : 2026-01-02
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC编程通用规范,附实用技巧!

【导读】一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释、精良的架构、良好的可扩展性、完备的报警保护系统和运行前的系统模拟等。

(一)PLC编程的设计要求

一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释、精良的架构、良好的可扩展性、完备的报警保护系统、运行前的模拟系统。

1、简单性

使PLC程序尽可能简单。简单的含义就是尽可能的使用标准化的程序框架,尽可能使用简单的指令。

要想程序简单,从大的方面讲,要优化程序结构,用流程控制指令简化程序,从小的方面讲还要用功能强的指令取代功能单一的指令,以及注意指令的安排顺序等。

2、可读性

要求所设计的程序可读性要好。这不仅便于程序设计者加深对程序的理解,便于调试,而且,还要便于别人读懂你的程序,便于使用者维护。必要时,也可使程序推广。

要使程序可读性好,所设计的程序就要尽可能清晰。要注意层次,实现模块化,以至于用面向对象的方法进行设计。要多用一些标准的设计。

如遇特殊情况下采用语言编程,多数情况下请使用梯形图编程,方便阅读。

再就是I/O分配要有规律性,便于记忆与理解。必要时,还要做一些注释工作。内部器件的使用也要讲规律性,不要随便地拿来就用。

可读性在程序设计开始时就要注意。这不易完全做到。因为在程序调试的过程中,指令的增减,内部器件的使用变化,可能使原较清晰的程序,变的有些乱。所以在设计时就对调试增减留有一定的余地,然后调试完毕后再做一下整理,这样所设计的程序具有更高的质量。

程序的注释,起码应该有以下几个方面:

A、系统注释:整套程序的版权公司和此套程序用途

B、程序块注释:此程序块的主要用途和作者

C、段注释:此段代码的用途

D、变量注释:重要性无需多言,包含I/O注释、中间变量注释

而至于保密性的考虑,我觉得应该在程序的加密算法或者块的加密上考虑,而不应该用减少注释这种小聪明来实现。

3、正确性

PLC的程序一定要正确,并要经过实际工作验证,证明其能够正确工作。这是对PLC程序的最根本的要求,若这一点做不到,其它的再好也没有用。

要使程序正确,一定要准确的使用指令,正确的使用内部器件。准确的使用指令与准确理解指令相联系,为此对指令含义和使用条件一定要弄清楚。必要时,可编些小程序对一些不清楚的指令作些测试。

同一指令,由于PLC的出厂批次不同或是PLC的系列型号的不同,一些指令细节有可能不一样,应仔细查阅编程手册。

内部器件正确使用也是重要的。如有的PLC有掉电保护,有的PLC没有。一定要做到该掉电保护的一定要用掉电保护的器件,反之则不能用。

总之,要准确的使用指令,正确使用内部器件,使所编的程序能正确要作,这是对PLC程序最根本的要求。

举个简单的例子,西门子的上升沿和下降沿需要使用带存储功能的变量作为中间变量,比如M点或者DB点,如果使用FC的temp变量就会出问题的。

4、可靠性

程序不仅要正确,还要可靠。可靠反映着PLC程序的稳定性,这也是对PLC程序的基本要求。

有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮)后,程序就不能正常工作了。这种程序,就不大可靠,或说不稳定,就是不好的程序。

好的PLC程序对非正常工作条件出现,能予以识别,并能使其与正常条件衔接,可使程序适应于多种情况。好的PLC程序对非法操作能予以拒绝,且不留下“痕迹”。只接受合法操作。

联锁是拒绝非法操作常用的手段,继电电路常用这个方法,PLC也可继承这个方法。

5、易改性

要使程序易改,也就是要便于修改。PLC的特点之一就是方便,可灵活地适用于各种情况。其办法就是靠修改或重新设计程序。

重新设计程序用于改变PLC工艺的用途要求的情况,不仅程序重编,而且I/O也要重新分配。多数情况下不需要重编程序,作一些修改就可以了。这就要求程序具有易性,便于修改。

易改也就是弹性,要求只要作很少的改动,即可达到改变参数或理改动作的目的。

6、扩展性

许多程序可能在进现场之前都已经编好,但是到了现场,可能还需要添加另外的程序,为了避免打乱整套系统的结构,需要在每个功能区预留一定的空间作为备用。

硬件上留出足够的余量,软件在编写的时候把手动,自动,半自动考虑好,位置留出来。

7、完备报警系统

PLC系统往往用于工业环境中,每一次的事故都会造成或大或小的损失,为了做到事故预处理或者在事故中将损失降到最小,必须重视PLC的报警和保护,在此将其摘出来作为系统的一个重要组成部分。

8、程序模拟

为了保证现场的调试进度或者给客户展示,往往在进现场之前,要对自己的程序进行全自动的模拟。为此需要在程序中加入模拟程序部分,模拟程序部分在正常现场运行之后断开。为了使程序具备模拟功能,需要做以下工作:

(1)将实际的PLC的I/O点转换为PLC的中间变量或者数据块变量;

(2)根据工艺要求编写各个设备的模拟程序。在设计PLC程序的过程中,能够满足以上几个方面的要求的就能称的上是一个好程序了。

(二)PLC编程的小技巧

(1)选择合适的PLC型号及I/O点数,有特殊功能需求时选择特殊功能模块。

(2)熟悉所选择的PLC编程指令及编译软件。

(3)进行软元件规划,包括内部继电器、保持继电器、数据寄存器、定时器、计数器等。

(4)进行程序规划,一般以故障提取、故障处理、手动处理、自动处理、输出处理这样的顺序进行编程。比较大型的工程或设备按功能单元分段、分块进行处理,如一条自动化生产线中有提升机、移行、顶起旋转装置等,则应按上述单元分段分块编程。

(5)在分段分块编写的程序前应加上简短的段注释,说明此段程序的功能,如有必要可以注明相应的工艺流程。分块或分段的程序再总体程序的位置顺序应基本上按工艺流程顺序排列,便于程序的可读性。

(6)在程序设计之前,应对设备进行抽象,对如停止、急停、过载、超限、超时、安全光幕、碰停、门开关等共用因子进行提取,放在启动回路或启动主控、连锁回路,作为整个程序结构的大前提,在此基础下,再将程序分为自动、手动两大功能区。

(7)将程序结构手动功能区共用因子,如手动、危及设备人身安全等因数因子进行提取,放在手动主控、连锁回路,对手动控制进行保护、屏蔽、报警。

(8)将程序结构自动功能区共用因子,如自动、超限、超时等因数因子进行提取,放在自动主控、连锁回路,对自动控制下设备进行保护、屏蔽、报警。一个总的原则就是,在确保安全的前提下,严格限制设备的进,宽松限制设备的出。

(9)程序设计时应设计程序总复位功能,便于使用者在设备出现故障情况下,可以方便尽快恢复设备正常工作。总复位应充分考虑在复位过程中设备和人员的安全。

(10)自动模式切换到手动模式时,程序应清除自动模式下的输出和中间状态。特别是在自动模式使用SET指令时,必须在手动模式用RESET指令予以清除。

(11)严禁在编制程序中使用双输出,即同一条输出语句或同一个输出线圈在程序中出现2次及以上。在不同模式条件下的对同一输出点的输出使用中间继电器进行中转,最后集中到一起并列到输出点。

(12)使用触摸屏时,对触摸屏和PLC公用的控制区和状态区,不得做其他功能方面的编程使用。

(13)对PLC的特殊模块,在使用之前,应先查明其控制区和状态区是否占用工作字,若占用,不得将这些工作字做其他方面的编程。

(14)PLC的输入、输出、中间继电器、定时器、计数器、数据寄存器等都要加中文注释。输入、输出还要有元器件名称位号。对应的输入点,一般情况下默认为外围开关连接的是NO触点,对于需要接NC触点的须在注释中标明。所有注释应当清晰明了,不易产生误解,尽量少使用泛指。

(15)工程调试完成后,系统必须保留最终软件程序,保存的文件名应包含项目编号/作者/日期信息/版本号等。

(16)关于程序加密:对于加密程序的密码必须有专门的文件予以保存,并注明相应的用户名+密码+权限,分发给至少两个人以上了解密码,防止密码丢失带来无法打开程序的情况。

(17)PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有“手动”、“自动”等控制模式(一般都是多个只能一个时)。在程序里面可以用“MOV”指令。如:当选择“手动”就将常数1 MOV到一个寄存器VB10里面,当选择“自动”就将2 MOV到同一寄存器VB10。只要判断寄存器的数据是多少,就知道系统是那种控制方式。这样的思路好处是容易理解,不需要互锁之类的麻烦程序。

(18)程序有模拟量控制时,如果读取的模拟量基本上没误差,可以采取时间滤波的方式,延时一段时间。如果读取的数据误差很大,就需要采取其它的滤波方式,如算平均值等。可以查阅相关的资料。

(19)在程序调试过程中(特别是设备改造时,你的程序是加入到原来设备的程序中时),当程序语句中出现条件满足,而输出线圈不接通时,可以检查你的这段程序是否是在这样的语句之间,如JUMP\go to\等语句。还有一种可能就是在中断程序之后,条件满足而没输出不接通,一般都是这段的程序不被扫描。

(20)在顺序控制程序时,即一个动作完成后,进入到下一个动作,等类似的顺序控制,采用+10+10控制模式,本人觉得很方便。其思路是:预置一个寄存器,在初始化时值为0,当系统启动后,对它+10,此时寄存器为10,寄存器等于10时可以做第一个动作;第一个动作完成后,再对寄存器+10,此时寄存器等于20,可以做第二个动作,第二个动作完成后又+10,此时寄存器等于30,这样只要判断寄存器里面数据为多少,就知道要完成那个动作。当需要跳跃动作时,可以不再+10,可以加+20\+30....,看实际的需要而定。为什么加10而不是加1,因为加10之后,如果插入一段,只要在这10个空余的地方随便选择一个位置就可以了。

(21)在设计程序的时候,当出现工艺上的故障(非控制系统控制),最好将故障现象保持,并有灯光声音报警。直到操作工复位,以让其知道系统出现了故障。不然停机了,别人还认为你的程序问题。一般都是在设计一个新系统时,要注意到这些。

(22)对于经常调用的子程序,可以做成子模块,频繁调用。

(23)由于生产机械在工作循环中的各工步运动在执行时需要一定的时间,且这些时间都有一定的限度,因此可以以这些时间为参考,在要检测的工步动作开始的同时,起动一个定时器,定时器的时间设定值比正常情况下该动作要持续的时间长20%~30%,而定时器的输出信号可以用于报警或自动停机装置。当生产机械某工步动作的时间超过规定时间,达到对应的定时器预置时间,还未转入下一工步动作时定时器发出故障信号,该信号停止正常工作循环程序,起动报警或停机程序,这就是我们常说的超节拍保护。

(24)一些安全用检测开关(如急停按钮、安全光幕、极限开关等)实用常闭(NC)输入。

(25)为安全、节能考虑,尽量将输出设计成需要动作时才动作,一旦到位就停止输出,而不要设计成平时一直输出,需要停止时才让输出断开。

(26)执行元件的动作原则应当是宁可不动,也不要乱动!

(27)单台设备控制:单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。

(28)单台设备(泵、风机及其它大型设备)运行满24小时。

免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系删除,谢谢!

如何获取 电气热门资料?

操作指引如下!

实例 SCL编程,这9种程序控制指令必须掌握

SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这些不同的。

SCL特殊的指令有以下几种,如图1-3红框中的指令:

图1 读写存储器

图2 转换操作

图3 程序控制指令

在这三部分中,读写存储器的PEEK POKE指令可以参考链接,转换操作可以参考链接,这里只介绍图3的程序控制指令。

【文末免费领取学习资料】

【文末免费领取学习资料】

【文末免费领取学习资料】

程序控制指令

程序控制指令是SCL编程的基础,接近高级语言的指令,虽然这些功能通过LAD/FBD也可以实现,但使用SCL编写会更加方便,逻辑条理也更加清晰。

程序控制语句说明选择IF-THEN语句用于将程序执行转移到两个备选分支之一(取决于条件为 True 还是 False);CASE语句用于选择执行 n 个备选分支之一(取决于变量值)循环;FOR语句只要控制变量在指定值范围内,就重复执行某一语句序列;WHILE-DO语句只要仍满足执行条件,就重复执行某一语句序列;REPEAT-UNTIL语句重复执行某一语句序列,直到满足终止条件为止;程序跳转CONTINUE语句停止执行当前循环迭代;EXIT语句无论是否满足终止条件,都会随时退出循环;GOTO语句使程序立即跳转到指定标签;RETURN语句使程序立刻退出正在执行的块,返回到调用块。下面详细介绍各条指令的用法。

(1)IF:条件执行

说明:使用"条件执行"指令,可以根据条件控制程序流的分支。该条件是结果为布尔值(True 或 False)的表达式。可以将Bool变量、逻辑表达式或比较表达式作为条件。

执行该条件执行指令时,将对指定的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。

参数 根据分支的类型,可以对以下形式的指令进行编程:

IF...THEN... 分支: IF <条件>THEN <语句1>END_IF;

图4 IF...THEN... 分支

如果满足该条件,则将执行 THEN 后编写的指令。如果不满足该条件,则程序将从 END_IF 后的下一条指令开始继续执行。

IF...THEN... ELSE...分支: IF <条件>THEN <语句1>ELSE <语句2>END_IF;

图5 IF...THEN... ELSE...分支

如果满足该条件,则将执行 THEN 后编写的语句。如果不满足该条件,则将执行 ELSE 后编写的语句。不论执行哪一个语句,之后都将从 END_IF 后的下一条指令开始继续执行。

IF...THEN... ELSIF...分支: IF <条件1>THEN <语句1>ELSIF <条件2>THEN <语句2>END_IF;

图6 IF...THEN... ELSIF...分支

如果满足条件1,则将执行 THEN 后的语句1,执行这些语句后,程序将从 END_IF 后继续执行。

如果不满足条件1,则将检查条件2。如果满足条件2,则将执行 THEN 后的语句2。执行这些语句后,程序将从 END_IF 后继续执行。

如果不满足任何条件,则直接执行 END_IF 后的程序部分。

在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。可以选择对 ELSE 分支进行编程。

参数

下表列出了该指令的参数:

参数

数据类型

存储区

说明

<条件>

BOOL

I、Q、M、D、L

待求值的表达式。

<语句>

-

在满足条件时,要执行THEN后的语句。如果不满足条件,则执行 ELSE 后编写的语句。

示例

图7 IF示例

下表展示了不同的操作数数值对目标变量的影响:

操作数值"Tag_1"TrueFalseFalseFalse"Tag_2"FalseTrueFalseFalse"Tag_3"FalseFalseTrueFalse"Tag_Value"1020300

(2)CASE:创建多路分支

说明:使用"创建多路分支"指令,可以根据数字表达式的值执行多个指令序列中的一个。

按如下方式声明此指令:

CASE <变量> OF

<常数1>: <语句1>;

<常数2>: <语句2>;

......

<常数n>: <语句n>;

ELSE <语句>;

END_CASE;

图8 CASE语句

参数

下表列出了该指令的参数:

参数

数据类型

存储区

说明

<变量>

整数、位序列*

I、Q、M、D、L

与设定的常数值进行比较的值。

<常数>

位序列

若为位序列,则常数可以为以下值:

二进制数(例如,2#10) 八进制数(例如,8#77) 十六进制数(例如,16#AD) 未定型的常数(例如,1000)

整数

作为指令序列执行条件的常数值。常数可以为以下值:

整数(例如,5) 整数范围(例如,15 到 20) 由整数和范围组成的枚举(例如,10、11、15 到 20)

<语句>

-

-

当表达式的值等于某个常数值时,将执行该常数后的各种指令。如果不满足条件,则执行 ELSE 后编写的指令。如果两个值不相等,则执行这些指令。

* TIA PORTAL V16开始支持位序列数据类型的变量

示例

图9 CASE示例

下表展示了不同的操作数数值对目标变量的影响:

操作数值"Tag_Value"01,3,56,7,8,9,1016,17,20,21,22,23,24,25其他"Tag_1"1----"Tag_2"-1---"Tag_3"--1--"Tag_4"---1-"Tag_5"----1

【文末免费领取学习资料】

【文末免费领取学习资料】

【文末免费领取学习资料】

(3)FOR:在计数循环中执行

说明:使用"在计数循环中执行"指令,重复执行程序循环,直至运行变量不在指定的取值范围内。

也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。

通过指令"复查循环条件"(Continue),可以终止当前正在运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。

注意:

有关运行次数和运行变量的信息:

程序运行时无法更改运行次数。出于性能原因,应在块接口的"Temp"部分中声明运行变量。在循环中,该运行变量无法更改。

按如下方式声明此指令:

FOR <运行变量> := <起始值> TO <结束值> BY <增量> DO

<语句>;

END_FOR;

如果增量为1,可以简写为:

FOR <运行变量> := <起始值> TO <结束值> DO

<语句>;

END_FOR;

图10 FOR语句

下表列出了该指令的参数:

参数

数据类型

存储区

说明

<运行变量>

有符号整数、无符号整数*

I、Q、M、D、L

执行循环时会计算其值的操作数。执行变量的数据类型将确定其它参数的数据类型。

<起始值>

I、Q、M、D、L

表达式,在运行变量首次执行循环时,将为运行变量分配该表达式的值。

<结束值>

I、Q、M、D、L

表达式,在运行程序最后一次循环时会为运行变量分配该表达式的值。在每个循环后都会检查运行变量的值:

未达到结束值:执行符合 DO 的语句 达到结束值:最后执行一次 FOR 语句 超出结束值:完成 FOR 循环

执行该指令期间,不允许更改结束值。

<增量>

I、Q、M、D、L

表达式,根据增量表达式的值,执行变量在每次循环后都会递增(正增量)或递减(负增量)自身变量值。

如果未指定增量,则在每次循环后执行变量的值加 1。

执行该指令期间,不允许更改增量。

<语句>

-

只要运行变量的值在取值范围内,每次循环都就会执行的语句。取值范围由起始值和结束值定义。

*TIA PORTAL V16开始支持无符号整数类型的变量

示例

图11 FOR示例

Tag_Value 操作数乘以b_array 数组变量的元素 (2, 4, 6, 8)。并将计算结果读入到a_array 数组变量的元素 (2, 4, 6, 8) 中。

下表展示了给定 Tag_Value 与 b_array[i] 的值得到 a_array[i] 的结果:

设定Tag_Value值5设定b_array[2]b_array[4]b_array[6]b_array[8]值3579结果a_array[2]a_array[4]a_array[6]a_array[8]值15253545

(4)WHILE:满足条件时执行

说明:使用"满足条件时执行"指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。

执行该指令时,将对指定的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。

也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。

通过指令"复查循环条件"(Continue),可以终止当前连续运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。

可按如下方式声明此指令:

WHILE <条件>

DO <语句>;

END_WHILE;

图12 WHILE语句

参数

下表列出了该指令的参数:

参数

数据类型

存储区

说明

<条件>

BOOL

I、Q、M、D、L

表达式,每次执行循环之前都需要进行求值。

<语句>

-

在满足条件时,要执行的语句。如果不满足条件,则程序将从 END_WHILE 后继续执行。

示例

图13 WHILE示例

下表展示了循环初始和循环结束时变量值的变化

初始循环结束Tag_25Tag_105

【文末免费领取学习资料】

【文末免费领取学习资料】

【文末免费领取学习资料】

(5)REPEAT:不满足条件时执行

说明:使用"不满足条件时执行"指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。

执行该指令时,将对指定的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。

即使满足终止条件,至少也会执行一次循环内的语句。

也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。

通过指令"复查循环条件"(Continue),可以终止当前连续运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。

可按如下方式声明此指令:

REPEAT <语句>;

UNTIL <条件>

END_REPEAT;

图14 REPEAT语句

参数

下表列出了该指令的参数:

参数

数据类型

存储区

说明

<语句>

-

在设定条件的值为 False 时执行的指令。即使满足终止条件,此指令也执行一次。

<条件>

BOOL

I、Q、M、D、L

表达式,每次执行循环之后都需要进行求值。如果表达式的值为 False,则将再次执行程序循环。如果表达式的值为 True,则程序循环将从 END_REPEAT 后继续执行。

示例

图15 REPEAT示例

下表展示了循环初始和循环结束时变量值的变化

初始循环结束Tag_25Tag_106

(6)CONTINUE:复查循环条件

说明:使用"复查循环条件"指令,可以结束 FOR、WHILE 或 REPEAT 循环的当前程序运行。

执行该指令后,将再次计算继续执行程序循环的条件。该指令将影响其所在的程序循环。

图16 CONTINUE用在FOR循环

图17 CONTINUE用在WHILE循环

图18 CONTINUE用在REPEAT循环

示例

图19 CONTINUE示例

下表展示了计算结果:

变量计算结果"DB10".Test[0]-"DB10".Test[1]-"DB10".Test[2]-"DB10".Test[3]-"DB10".Test[4]-"DB10".Test[5]1"DB10".Test[6]1"DB10".Test[7]1

如果满足条件 i < 5,则不执行后续值分配 ("DB10".Test[i] := 1)。运行变量 (i) 以增量"1"递增,然后检查其当前值是否在设定的循环取值范围内。如果执行变量在循环取值范围内,则将再次计算 IF 的条件。

如果不满足条件 i < 5,则将执行后续值分配 ("DB10".Test[i] := 1) 并开始一个新循环。在这种情况下,执行变量也会以增量"1"进行递增并接受检查。

(7)EXIT:立即退出循环

说明:使用"立即退出循环"指令,可以随时取消 FOR、WHILE 或 REPEAT 循环的执行,而无需考虑是否满足条件,并在循环结束(END_FOR、END_WHILE 或 END_REPEAT)后继续执行程序。

该指令将影响其所在的程序循环。

图20 EXIT语句

示例

图21 EXIT示例

下表展示了计算结果:

变量计算结果"DB10".Test[0]1"DB10".Test[1]1"DB10".Test[2]1"DB10".Test[3]1"DB10".Test[4]1"DB10".Test[5]1"DB10".Test[6]-"DB10".Test[7]-

如果满足条件 i > 5,则将取消循环执行。程序将从 END_FOR 后继续执行。

如果不满足条件 i <= 5,则将执行后续值分配 ("DB10".Test[i] :=1) 并开始一个新循环。将运行变量 (i) 以 1 进行递增,并进行检查该变量的当前值是否在程序中设定的循环取值范围之内。如果执行变量 (i) 在循环取值范围内,则将再次计算 IF 的条件。

【文末免费领取学习资料】

【文末免费领取学习资料】

【文末免费领取学习资料】

(8)GOTO:跳转

说明:使用"跳转"指令,可以从标注为跳转标签的指定点开始继续执行程序。

跳转标签和"跳转"指令必须在同一个块中。在一个块中,跳转标签的名称只能指定一次。每个跳转标签可以是多个跳转指令的目标。不允许从"外部"跳转到程序循环内,但允许从循环内跳转到"外部"。

注意:

LAD/FBD语言内的SCL段,不能使用GOTO指令。

跳转标签遵循以下语法规则:

字母(a 至 z,A 至 Z) 字母和数字组合;请必须字母为开始

可按如下方式声明此指令:

GOTO <跳转标签>;

...

<跳转标签>: <语句>

示例

图22 GOTO示例

下表展示了每个操作数数值对目标变量的变化影响:

操作数值Tag_Value123其他

初始值结束值初始值结束值初始值结束值初始值结束值Tag_101000000Tag_201010000Tag_301010100Tag_401010101

根据"Tag_Value"操作数的值,程序将从对应的跳转标签标识点开始继续执行。例如,如果"Tag_Value"操作数的值为 2,则程序将从跳转标签"MyLABEL2"开始继续执行。在这种情况下,将跳过"MyLABEL1"跳转标签所标识的程序行。

(9)RETURN:退出块

说明:使用"退出块"指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。

如果该指令出现在块结尾处,则可以跳过。

图23 RETURN语句

示例

图24 RETURN示例

如果"Tag_Error"操作数的信号状态不为 0,则将终止当前处理块中的程序执行。

(来源:网络,版权归原作者所有,侵删)

相关问答

【对下列句中画线的部分内容提问1,They画线:wenttoplckapple...

[回答]WhatdiddoWhenmyWhatHowmanyarethereHowfarHowdogoWhichcolorWhereareWhat'sdoingWhoseWhi...

西门子1200plc怎么跳转子程序?

西门子1200plc跳转子程序的方法1,在执行程序过程中跳步:如果机床有跳转的功能的话,按住进给关闭按键不放再按一下DTG按键就可以了2程序编制:GOTOB和GOTOF西...

西门子1200模拟量输入编程实例?

以下是使用西门子S7-1200PLC进行模拟量输入编程的示例代码:1.配置模拟量输入模块在S7-1200PLC的硬件配置中,添加模拟量输入模块,并配置其参数。例如,如...

BarclaysBankPlc收件人:undisclosed-recipientsBARCLAYSBA...

[回答]参考:-指示,信用你的银行账户发件人:巴克莱银行可编程序控制器(Plc)undisclosed-recipients收件人:巴克莱银行可编程序控制器(PLC).伦敦CLAPHAM交界...

用西门子s7-300PLC控制步进电机,肿么发脉冲,肿么编写程序-Z...

用POSx_GOTO子程序,记得先执行回零操作,可以参考EM253手册,下面是官网下载地址...如果是31XC系列的PLC,是调用SFB49,如果是功能模块,则是用该功能模块的功能指令...

本人有的不是很懂,1.privateco.--attemptstoearnasatisfac...

[回答]1私营公司2publiclimitedcompany(plc)n.股票上市公司3私有公司由一定数量的个人控股的公司,不能通过证券交易所交易.Privately-ownedCorpor....

“上市公司”的英文翻译是什么?-lgvnKZi1Z的回答-懂得

listedcompany或者publiccompany正解:PLC,PublicLimitedCompany,股票上市公司ListedCompanieslistedcompanypublicc...

knd数控加工件数怎么设置不清零?

要想在KND数控加工中不清零件数,可以通过在程序中设置循环加工指令,即在加工完一批零件后不清零计数器,而是继续加工下一批零件。同时,还可以使用GOTO指令将...

西门子plc编程s7-200smart通信资源需要注意的问题是什么有人...

[回答]西门子plc编程smart以太网通信资源:CPU与STEP7-Micro/WINSMART软件之间的数据交换。CPU与HMI之间的数据交换。CPU与其它S7-200SMARTCPU之间的GET/PU....

FT中文网-速影TV影院-FT中文网

Therewillthenbejudgmentsastowhethercertainhearingsandevenofficialvisitstomeetwithla...

 卡斯柏个人资料  模拟人生之美好生活 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2026  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

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

热线

188-0000-0000
专属服务热线

微信

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