直播课堂
HOME
直播课堂
正文内容
plc编程fcx S7 300PLC之旅——STEP7的三种基本编程语言:LAD,FBD,STL
发布时间 : 2025-04-08
作者 : 小编
访问数量 : 23
扫码分享至微信

S7 300PLC之旅——STEP7的三种基本编程语言:LAD、FBD、STL

在上一篇文章《复盘“运料小车程序”,聊一聊PLC编程》中,驼子假定了一个运料小车的控制程序,简单的聊了一下一下PLC控制项目的编程步骤。有小伙伴认为程序体理解起来稍微有点难度,为了使有需要的小伙伴能有一个更为清晰的认识,驼子将在本文介绍以下STEP7 的三种基本编程语言:LAD、FBD以及STL。

一、梯形图LAD

梯形图语言是从常用的继电器与接触器逻辑控制基础上简化了符号演变而来的,具有形象、直观、实用等特点,电气技术人员容易接受,是目前运用上最多的一种PLC的编程语言。

在PLC程序图中,左、右母线类似于继电器与接触器控制电源线,输出线圈类似于负载,输入触点类似于按钮。梯形图由若干阶级构成,自上而下排列,每个阶级起于左母线,经过触点与线圈,止于右母线。图1为一段典型的梯形图语言编写的程序。

图1 梯形图语言

上图中,“常开点”I0.3、I1.2、I1.1及“常闭点”I0.2串联后,与“常开点”M0.0并联,然后为“线圈”Q4.2供电。在“继电器与接触器“型电路中,用梯形图编程会显得一目了然,犹如看电气连接图一般。

二、功能块图FBD

FBD用方框图的形式来表示控制逻辑,类似于数字逻辑门电路的编程语言。驼子在大学时,对数字电路情有独钟,因而后来对FBD语言有了天然的好感,工作中倾向于用FBD进行编程。FBD语言对于有数字电路基础的人来说很容易掌握,该编程语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量;信号也是由左向右流向的,各个功能方框之间可以串联,也可以插入中间信号。在每个最后输出的前面组合逻辑操作方框数是有限的,同一组逻辑运算的输出结果的数目也要根据操作系统的不同而不同;经过扩展,不但可以表示各种简单的逻辑操作,并且也可以表示复杂的运算、操作功能。图1的梯形图控制逻辑用FBD编程的话,如图2所示。

图2 FBD语言

图2中,方框”&“为“与”运算,“>="为或运算,其真值表如下:

图3 真值表

FBD语言的编程过程类似于数字电路中用集成模块搭建电路,每个模块都有其自己的功能,根据控制需要,选用合适的模块,用“线”连起来即可。

三、语句表STL

STL是一种与汇编语言类似的助记符编程语言,用一个或几个容易记忆的字符来代表PLC的某种操作功能,每个语句由地址(步序号)、操作码(指令)和操作数(数据)三部分组成。语句表可以实现某些不易用梯形图或功能块图来实现的功能。玩过单片机的小伙伴再学习STL,可能会有些优势。图4为用STL编写的同一控制逻辑的程序。

图4 STL语言

其中,“A”为与运算,“AN”为与非运算,“O”为或运算,“=”为赋值运算。

用STL编程,需要对PLC的微观逻辑结构有相当的了解,比如:需要了解各种存储模式,熟悉各种寻址方式,同时还要能熟练使用各种编程助记符。可以说,能够熟练运用STL编程的小伙伴,siemens的PLC一定玩的相当的溜。驼子我的STL编程仍处在初学者阶段,犹记得去年用STL编写过一段光电测距仪的接口程序,不知死了多少脑细胞,实在是不堪回首。

四、三种语言,该如何抉择?

1、三种语言互相转换

在STEP7中,可以通过菜单选择,在三种语言中相互切换显示。如图5所示。

图5 LAD、FBD、STL切换显示

当然,通常LAD和FBD直接可以互相切换,LAD、FBD也可以转换为STL语言,但STL却不一定可以转换为LAD或FBD语言。

2、三种语言的优劣比较

LAD是最常用的PLC编程语言,其形象、直观,稍懂电气的人就能很快上手,而且目前市面上几乎所有的PLC都支持LAD编程,一通百通。其在“继电器或接触器型”逻辑功能中应用比较好,但随着STEP7中集成的程序功能单元越来越多,LAD语言写出的程序多少有点“不伦不类”。如图6所示,程序单元“CMP>=D”在FBD程序中,以“块”的形式显示,与其他单元一样;但在LAD语言中,仍以“块”的形式显示,与其它“触点单元”放在一起显得有点格格不入,虽然不影响逻辑,但看起来不工整。

图6 FBD、LAD程序对比

FBD语言写出的程序,个人认为逻辑性较强,在编程过程中,可以根据被控对象的控制逻辑,“轻易”的捋清程序逻辑,编程就会轻松许多。同时,STEP7提供了大量的、功能各异的“程序逻辑单元”,仅需要简单的拖动,就能实现编程。

STL接近于汇编语言,起点较高,不容易掌握。但在一些需要对硬件操作的时候,比如:驼子曾经编写过的激光测距仪的接口程序,就不得不用到STL语言了。

西门子、三菱指令大全,集齐了才知道PLC编程这么容易

西门子PLC编程指令

1、位逻辑指令

1.1 -||- 常开接点(地址)1.2 -|/|- 常闭接点(地址)1.3 XOR 位异或1.4 -|NOT|- 信号流反向1.5 -( ) 输出线圈1.6 -(#)- 中间输出1.7 -(R) 线圈复位1.8 -(S) 线圈置位1.9 RS 复位置位(置位复位)触发器1.10 -(N)- RLO下降沿检测1.11 -(P)- PLO上升沿检测1.12 -(SAVE) 将RLO存入BR存储器1.13 MEG 地址下降沿检测1.14 POS 地址上升沿检测

2、比较指令

2.1 CMP?I 整数比较2.2 CMP?D 双整数比较2.3 CMP?R 实数比较

3、转换指令

3.1 BCD_IBCD码转换为整数3.2 I_BCD 整数转换为BCD码3.3 I_DINT 整数转换为双整数3.4 BCD_DIBCD码转换为双整数3.5 DI_BCD 双整数转换为BCD码3.6 DI_REAL 双整数转换为浮点数3.7 INV_I 整数的二进制反码3.8 INV_DI 双整数的二进制反码3.9 NEG_I 整数的二进制补码3.10 NEG_DI 双整数的二进制补码3.11 NEG_R 浮点数求反3.12 ROUND 舍入为双整数3.13 TRUNC 舍去小数取整为双整数3.14 CEIL 上取整3.15 FLOOR 下取整

4、计数器指令

4.1 S_CUD 加减计数4.2 S_CU 加计数器4.3 S_CD 减计数器4.4 -(SC) 计数器置初值4.5 -(CU) 加计数器线圈4.6 -(CD) 减计数器线圈

5、数据块指令

5.1 -(OPN) 打开数据块:DB或DI

6、逻辑控制指令6.1 -(JMP) 无条件跳转6.2 -(JMP) 条件跳转6.3 -(JMPN) 若非则跳转6.4 LABEL 标号

7、整数算术运算指令

7.1 ADD_I 整数加法7.2 SUB_I 整数减法7.3 MUL_I 整数乘法7.4 DIV_I 整数除法7.5 ADD_DI 双整数加法7.6 SUB_DI 双整数减法7.7 MUL_DI 双整数乘法7.8 DIV_DI 双整数除法 7.9 MOD_DI 回送余数的双整数

8、浮点算术运算指令

8.1 基础指令8.1.1 ADD_R 实数加法8.1.2 SUB_R 实数减法8.1.3 MUL_R 实数乘法8.1.4 DIV_R 实数除法8.1.5 ABS 浮点数绝对值运算

8.2 扩展指令

8.2.1 SQR 浮点数平方8.2.2 SQRT 浮点数平方根8.2.3 EXP 浮点数指数运算8.2.4 LN 浮点数自然对数运算8.2.5 SIN 浮点数正弦运算8.4.6 COS 浮点数余弦运算8.2.7 TAN 浮点数正切运算8.2.8 ASIN 浮点数反正弦运算8.2.9 ACOS 浮点数反余弦运算8.2.10ATAN 浮点数反正切运算

9、赋值指令

9.1 MOVE 赋值

10、程序控制指令

10.1 -(Call) 从线圈调用FC/SFC(无参数)10.2 CALL_FB 从方块调用FB10.3 CALL_FC 从方块调用FC10.4 CALL_SFB 从方块调用SFB10.5 CALL_SFC 从方块调用SFC10.6 -(MCR<) 主控继电器接通10.7 -(MCR>) 主控继电器断开10.8 -(MCRA) 主控继电器启动10.9 -(MCRD) 主控继电器停止10.10 -(RET) 返回

11、移位和循环指令

11.1 移位指令11.1.1 SHR_I 整数右移11.1.2 SHR_DI 双整数右移11.1.3 SHL_W 字左移11.1.4 SHR_W 字右移11.1.5 SHL_DW 双字左移11.1.6 SHR_DW 双字右移

11.2 循环指令

11.2.1 ROL_DW 双字左循环11.2.2 ROR_DW 双字右循环

12、状态位指令

12.1 OV -||- 溢出异常位12.2 OS -||- 存储溢出异常位12.3 UO -||- 无序异常位12.4 BR -||- 异常位二进制结果12.5 ==0-||- 结果位等于"0"12.6 <>0-||- 结果位不等于"0"12.7 >0-||- 结果位大于"0"12.8 <0-||- 结果位小于"0"12.9 >=0-||- 结果位大于等于"0"12.10 <=0-||- 结果位小于等于"0"

13、定时器指令

13.1 S_PULSE 脉冲S5定时器13.2 S_PEXT 扩展脉冲S5定时器13.3 S_ODT 接通延时S5定时器13.4 S_ODTS 保持型接通延时S5定时器13.5 S_OFFDT 断电延时S5定时器13.6 -(SP) 脉冲定时器线圈13.7 -(SE) 扩展脉冲定时器线圈13.8 -(SD) 接通延时定时器线圈13.9 -(SS) 保持型接通延时定时器线圈13.10 -(SF) 断开延时定时器线圈

14、字逻辑指令

14.1 WAND_W 字和字相"与"14.2 WOR_W 字和字相"或"14.3 WAND_DW 双字和双字相"与"14.4 WOR_DW 双字和双字相"或"14.5 WXOR_W 字和字相"异或"14.6 WXOR_DW 双字和双字相"异或“

三菱 FX 系列PLC的基本逻辑指令

取指令与输出指令(LD/LDI/LDP/LDF/OUT)

(1)LD(取指令) 一个常开触点与左母线连接的指令,每一个以常开触点开始的逻辑行都用此指令。

(2)LDI(取反指令) 一个常闭触点与左母线连接指令,每一个以常闭触点开始的逻辑行都用此指令。

(3)LDP(取上升沿指令) 与左母线连接的常开触点的上升沿检测指令,仅在指定位元件的上升沿(由OFF→ON)时接通一个扫描周期。

(4)LDF(取下降沿指令) 与左母线连接的常闭触点的下降沿检测指令。

(5)OUT(输出指令) 对线圈进行驱动的指令,也称为输出指令。

取指令与输出指令的使用说明:

1)LD、LDI指令既可用于输入左母线相连的触点,也可与ANB、ORB指令配合实现块逻辑运算;

2)LDP、LDF指令仅在对应元件有效时维持一个扫描周期的接通。

3)LD、LDI、LDP、LDF指令的目标元件为X 、Y 、M 、T、C、S;4)OUT指令可以连续使用若干次(相当于线圈并联),对于定时器和计数器,在OUT指令之后应设置常数K或数据寄存器。

5)OUT指令目标元件为Y、M、T、C和S,但不能用于X。

触点串联指令(AND/ANI/ANDP/ANDF)

(1)AND(与指令) 一个常开触点串联连接指令,完成逻辑“与”运算。

(2)ANI(与反指令) 一个常闭触点串联连接指令,完成逻辑“与非”运算。

(3)ANDP 上升沿检测串联连接指令。

(4)ANDF 下降沿检测串联连接指令。

触点串联指令的使用的使用说明:

1)AND、ANI、ANDP、ANDF都只是单个触点串联连接的指令,串联次数没有限制,可反复使用。

2)AND、ANI、ANDP、ANDF的目标元元件为X、Y、M、T、C和S。

3)OUT M101指令之后通过T1的触点去驱动Y4称为连续输出。

触点并联指令(OR/ORI/ORP/ORF)

(1)OR(或指令) 用于单个常开触点的并联,实现逻辑“或”运算。

(2)ORI(或非指令) 用于单个常闭触点的并联,实现逻辑“或非”运算。

(3)ORP 上升沿检测并联连接指令。

(4)ORF 下降沿检测并联连接指令。

触点并联指令的使用说明:

1)OR、ORI、ORP、ORF指令都是指单个触点的并联,并联触点的左端接到LD、LDI、LDP或LPF处,右端与前一条指令对应触点的右端相连。触点并联指令连续使用的次数不限;

2)OR、ORI、ORP、ORF指令的目标元件为X、Y、M、T、C、S。

块操作指令(ORB / ANB)

(1)ORB(块或指令) 用于两个或两个以上的触点串联连接的电路之间的并联。

ORB指令的使用说明:

1)几个串联电路块并联连接时,每个串联电路块开始时应该用LD或LDI指令;

2)有多个电路块并联回路,如对每个电路块使用ORB指令,则并联的电路块数量没有限制;

3)ORB指令也可以连续使用,但这种程序写法不推荐使用,LD或LDI指令的使用次数不得超过8次,也就是ORB只能连续使用8次以下。

(2)ANB(块与指令) 用于两个或两个以上触点并联连接的电路之间的串联。

ANB指令的使用说明:

1)并联电路块串联连接时,并联电路块的开始均用LD或LDI指令;

2)多个并联回路块连接按顺序和前面的回路串联时,ANB指令的使用次数没有限制。也可连续使用ANB,但与ORB一样,使用次数在8次以下。

置位与复位指令(SET/RST)

(1)SET(置位指令) 它的作用是使被操作的目标元件置位并保持。

(2)RST(复位指令) 使被操作的目标元件复位并保持清零状态。SET、RST指令的使用,当X0常开接通时,Y0变为ON状态并一直保持该状态,即使X0断开Y0的ON状态仍维持不变;只有当X1的常开闭合时,Y0才变为OFF状态并保持,即使X1常开断开,Y0也仍为OFF状态。

SET 、RST指令的使用说明:

1)SET指令的目标元件为Y、M、S,RST指令的目标元件为Y、M、S、T、C、D、V 、Z。RST指令常被用来对D、Z、V的内容清零,还用来复位积算定时器和计数器。

2)对于同一目标元件,SET、RST可多次使用,顺序也可随意,但最后执行者有效。

微分指令(PLS/PLF)

(1)PLS(上升沿微分指令) 在输入信号上升沿产生一个扫描周期的脉冲输出;

(2)PLF(下降沿微分指令) 在输入信号下降沿产生一个扫描周期的脉冲输出。

利用微分指令检测到信号的边沿,通过置位和复位命令控制Y0的状态。

PLS、PLF指令的使用说明:

1)PLS、PLF指令的目标元件为Y和M;

2)使用PLS时,仅在驱动输入为ON后的一个扫描周期内目标元件ON,M0仅在X0的常开触点由断到通时的一个扫描周期内为ON;使用PLF指令时只是利用输入信号的下降沿驱动,其它与PLS相同。

主控指令(MC/MCR)

1)MC(主控指令) 用于公共串联触点的连接。执行MC后,左母线移到MC触点的后面。

2)MCR(主控复位指令) 它是MC指令的复位指令,即利用MCR指令恢复原左母线的位置。

在编程时常会出现这样的情况,多个线圈同时受一个或一组触点控制,如果在每个线圈的控制电路中都串入同样的触点,将占用很多存储单元,使用主控指令就可以解决这一问题。

MC、MCR指令利用MC N0 M100实现左母线右移,使Y0、Y1都在X0的控制之下,其中N0表示嵌套等级,在无嵌套结构中N0的使用次数无限制;利用MCR N0恢复到原左母线状态。如果X0断开则会跳过MC、MCR之间的指令向下执行。

MC、MCR指令的使用说明:

1)MC、MCR指令的目标元件为Y和M,但不能用特殊辅助继电器。MC占3个程序步,MCR占2个程序步;

2)主控触点在梯形图中与一般触点垂直。主控触点是与左母线相连的常开触点,是控制一组电路的总开关。与主控触点相连的触点必须用LD或LDI指令。

3)MC指令的输入触点断开时,在MC和MCR之内的积算定时器、计数器、用复位/置位指令驱动的元件保持其之前的状态不变。非积算定时器和计数器,用OUT指令驱动的元件将复位,22中当X0断开,Y0和Y1即变为OFF。

4)在一个MC指令区内若再使用MC指令称为嵌套。嵌套级数最多为8级,编号按N0→N1→N2→N3→N4→N5→N6→N7顺序增大,每级的返回用对应的MCR指令,从编号大的嵌套级开始复位。

堆栈指令(MPS/MRD/MPP)

堆栈指令是FX系列中新增的基本指令,用于多种输出电路,为编程带来便利。在FX系列PLC中有11个存储单元,它们专门用来存储程序运算的中间结果,被称为栈存储器。

(1)MPS(进栈指令) 将运算结果送入栈存储器的第一段,同时将先前送入的数据依次移到栈的下一段。

(2)MRD(读栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据继续保存在栈存储器的第一段,栈内的数据不发生移动。

(3)MPP(出栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据从栈中消失,同时将栈中其它数据依次上移。

堆栈指令的使用说明:

1)堆栈指令没有目标元件;

2)MPS和MPP必须配对使用;

3)由于栈存储单元只有11个,所以栈的层次最多11层。

逻辑反、空操作与结束指令(INV/NOP/END)

1)INV(反指令) 执行该指令后将原来的运算结果取反。反指令的使用如图10所示,如果X0断开,则Y0为ON,否则Y0为OFF。使用时应注意INV不能象指令表的LD、LDI、LDP、LDF那样与母线连接,也不能象指令表中的OR、ORI、ORP、ORF指令那样单独使用。

2)NOP(空操作指令) 不执行操作,但占一个程序步。执行NOP时并不做任何事,有时可用NOP指令短接某些触点或用NOP指令将不要的指令覆盖。当PLC执行了清除用户存储器操作后,用户存储器的内容全部变为空操作指令。

3)END(结束指令) 表示程序结束。若程序的最后不写END指令,则PLC不管实际用户程序多长,都从用户程序存储器的第一步执行到最后一步;若有END指令,当扫描到END时,则结束执行程序,这样可以缩短扫描周期。在程序调试时,可在程序中插入若干END指令,将程序划分若干段,在确定前面程序段无误后,依次删除END指令,直至调试结束。

FX系列PLC的步进指令

1.步进指令(STL/RET)

步进指令是专为顺序控制而设计的指令。在工业控制领域许多的控制过程都可用顺序控制的方式来实现,使用步进指令实现顺序控制既方便实现又便于阅读修改。

FX2N中有两条步进指令:STL(步进触点指令)和RET(步进返回指令)。

STL和RET指令只有与状态器S配合才能具有步进功能。如STL S200表示状态常开触点,称为STL触点,它在梯形图中的符号为-|| ||- ,它没有常闭触点。我们用每个状态器S记录一个工步,例STL S200有效(为ON),则进入S200表示的一步(类似于本步的总开关),开始执行本阶段该做的工作,并判断进入下一步的条件是否满足。一旦结束本步信号为ON,则关断S200进入下一步,如S201步。RET指令是用来复位STL指令的。执行RET后将重回母线,退出步进状态。

2.状态转移图

一个顺序控制过程可分为若干个阶段,也称为步或状态,每个状态都有不同的动作。当相邻两状态之间的转换条件得到满足时,就将实现转换,即由上一个状态转换到下一个状态执行。我们常用状态转移图(功能表图)描述这种顺序控制过程。用状态器S记录每个状态,X为转换条件。如当X1为ON时,则系统由S20状态转为S21状态。

状态转移图中的每一步包含三个内容:本步驱动的内容,转移条件及指令的转换目标。

步驱动Y0,当X1有效为ON时,则系统由S20状态转为S21状态,X1即为转换条件,转换的目标为S21步。

3.步进指令的使用说明

1)STL触点是与左侧母线相连的常开触点,某STL触点接通,则对应的状态为活动步;

2)与STL触点相连的触点应用LD或LDI指令,只有执行完RET后才返回左侧母线;

3)STL触点可直接驱动或通过别的触点驱动Y、M、S、T等元件的线圈;

4)由于PLC只执行活动步对应的电路块,所以使用STL指令时允许双线圈输出(顺控程序在不同的步可多次驱动同一线圈);

5)STL触点驱动的电路块中不能使用MC和MCR指令,但可以用CJ指令;

6)在中断程序和子程序内,不能使用STL指令。

(来源:网络,版权归原作者)

相关问答

PLC中的X、Y、M、S、T、C各代表什么意思_作业帮

[最佳回答]没人回答那我就献丑啦X是plc中的输入,y是输出,m是辅助继电器,s是状态继电器(不是用在步进指令的时候s和m的用法相同),t是计时器,c是计数器没人回答...

三菱f1splc接线方法?

三菱F1SPLC是一种基于可编程逻辑控制器(PLC)的自动化控制设备,它可以通过编程来实现各种控制逻辑。下面是三菱F1SPLC的一般接线方法:1.电源接线:将交流电...

三菱plc错误代码f1301怎么解决?

解决方法:三菱FX5U系列PLC、Q系列和L系列PLC都是一样,首次上电使用都会产生报警,是属于正常现象。具体解决办法如下所示:此时需要打开三菱PLC编程软件,然...

plc编程必背十大程序西门子?

梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)及结构化文本语言(ST)。不同型号的PLC编程软件对以上五种编程语言的...梯...

西门子plc肿么给旋转编码器编程?-ZOL问答

先确定旋转编码器的输出信号是什么电平的,通常单片机只能直接接受0--Vcc的电平输入,输入电压高的话就很容易烧掉口线。旋转编码器的输出信号电平较高,量一下它...

PLC(可编程序控制器)一共有几种编程方式?

你说的应该是编程语言分几种吧。一般有以下几种:梯形图(LD语言)也有叫LAD语言、顺序功能图(SFC)语言、功能块图(FBD)语言,指令表(IL)语言和结构文本(S...三、F...

西门子s7-300/400系列的plc有哪些编程软件-ZOL问答

8人讨论6689次围观关注问题写回答讨论回答(8)xiaohuohai1314西门子的以前的软件是STEP7,版本很多,,目前的版本已经到了STEP7V5.5SP4了,不过现在西门子...

PLC的FG端口是什么?

一般FG为接地,而FG接地并不是为了为通讯口做隔离之用,而是屏蔽干扰的作用,如果您只是测试并非在大干扰设备旁(如:大功率变频器)使用,那么FG不接地也无妨。...

三菱PLC的I/F是什么意思?

三菱PLC的I/F是interface的缩写,意思是接口,是PLC与外部器件连接和通信的接口。PLC,即可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执...

plc与cnc的工作过程?

cncPLC和一般的PLC不是一样的,一般的西门子,三菱,欧姆龙PLC功能很强大,在自动化控制中占主要位置。但是CNCPLC在cnc中位置一般般,PLC只是cn系统中,为实现...

 女孩坐货拉拉跳车身亡 司机被刑拘  江寓 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

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

热线

188-0000-0000
专属服务热线

微信

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