课程中心
HOME
课程中心
正文内容
plc编程软件顺序 PLC编程学会顺序功能图,编程一点就通!
发布时间 : 2025-04-05
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC编程学会顺序功能图,编程一点就通!

功能表图又称做状态转移图,它是描述控制系统的控制过程、功能和特性的一种图形,也是设计plc的顺序控制程序的有力工具。功能表图并不涉及所描述的控制功能的具体技术,它是—种通用的技术语言,可以用于进一步设计和不同专业的人员之间进行技术交流。

各个PLC厂家都开发了相应的功能表图,各国家也都制定了功能表图的国家标准。我国于1986年颁布了功能表图的国家标准(GB6988.6-86)。

如图1所示为功能表图的一般形式,它主要由步、有向连线、转换、转换条件和动作(命令)组成。

图1 功能表图的一般形式

PART1.步与动作

(1)步

在功能表图中用矩形框表示步,方框内是该步的编号。如图1所示各步的编号为n-1、n、n+1。编程时一般用PLC内部编程元件来代表各步,因此经常直接用代表该步的编程元件的元件号作为步的编号,如M300等,这样在根据功能表图设计梯形图时较为方便。

(2)初始步

与系统的初始状态相对应的步称为初始步。初始状态一般是系统等待启动命令的相对静止的状态。初始步用双线方框表示,每一个功能表图至少应该有一个初始步。

(3)动作

一个控制系统可以划分为被控系统和施控系统,例如在数控车床系统中,数控装置是施控系统,而车床是被控系统。对于被控系统,在某一步中要完成某些“动作”,对于施控系统,在某一步中则要向被控系统发出某些“命令”,将动作或命令简称为动作,并用矩形框中的文字或符号表示,该矩形框应与相应的步的符号相连。如果某一步有几个动作,可以用如图2所示的两种画法来表示,但是图中并不隐含这些动作之间的任何顺序。

图2 多个动作的表示

(4)活动步

当系统正处于某一步时,该步处于活动状态,称该步为“活动步”。步处于活动状态时,相应的动作被执行。若为保持型动作则该步不活动时继续执行该动作,若为非保持型动作则指该步不活动时,动作也停止执行。一般在功能表图中保持型的动作应该用文字或助记符标注,而非保持型动作不要标注。

PART2.有向连线、转换与转换条件

(1)有向连线

在功能表图中,随着时间的推移和转换条件的实现,将会发生步的活动状态的顺序进展,这种进展按有向连线规定的路线和方向进行。在画功能表图时,将代表各步的方框按它们成为活动步的先后次序顺序排列,并用有向连线将它们连接起来。活动状态的进展方向习惯上是从上到下或从左至右,在这两个方向有向连线上的箭头可以省略。如果不是上述的方向,应在有向连线上用箭头注明进展方向。

(2)转换

转换是用有向连线上与有向连线垂直的短划线来表示,转换将相邻两步分隔开。步的活动状态的进展是由转换的实现来完成的,并与控制过程的发展相对应。

(3)转换条件

转换条件是与转换相关的逻辑条件,转换条件可以用文字语言、布尔代数表达式或图形符号标注在表示转换的短线的旁边。转换条件X和x分别表示在逻辑信号X为“1”状态和“0”状态时转换实现。符号X↑和X↓分别表示当X从状态0到1和1到0状态时转换实现。使用最多的转换条件表示方法是布尔代数表达式。

PART3.功能表图的基本结构

(1)单序列

单序列由一系列相继激活的步组成,每一步的后面仅接有一个转换,每一个转换的后面只有一个步,如图3a所示。

图3 单序列与选择序列 a)单序列 b)选择序列开始 c)选择序列结束

(2)选择序列

选择序列的开始称为分支,如图3b所示,转换符号只能标在水平连线之下。如果步2是活动的,并且转换条件e=1,则发生由步5步6的进展;如果步5是活动的,并且f=1,则发生由步5步9的进展。在某一时刻一般只允许选择一个序列。

选择序列的结束称为合并,如图5-22c所示。如果步5是活动步,并且转换条件m=1,则发生由步5步12的进展;如果步8是活动步,并且n=1,则发生由步8步12的进展。

(3)并行序列

并行序列的开始称为分支,如图4a所示,当转换条件的实现导致几个序列同时激活时,这些序列称为并行序列。当步4是活动步,并且转换条件a=1、3、7、9这三步同时变为活动步,同时步4变为不活动步。为了强调转换的同步实现,水平连线用双线表示。步3、7、9被同时激活后,每个序列中活动步的进展将是独立的。在表示同步的水平双线之上,只允许有一个转换符号。

图4 并行序列 a)并行序列开始 b)并行序列结束

并行序列的结束称为合并,如图4b所示,在表示同步的水平双线之下,只允许有一个转换符号。当直接连在双线上的所有前级步都处于活动状态,并且转换条件b=1时,才会发生步3、6、9到步10的进展,即步3、6、9同时变为不活动步,而步10变为活动步。并行序列表示系统的几个同时工作的独立部分的工作情况。

(4)子步

如见图5所示,某一步可以包含一系列子步和转换,通常这些序列表示整个系统的一个完整的子功能。子步的使用使系统的设计者在总体设计时容易抓住系统的主要矛盾,用更加简洁的方式表示系统的整体功能和概貌,而不是一开始就陷入某些细节之中。设计者可以从最简单的对整个系统的全面描述开始,然后画出更详细的功能表图,子步中还可以包含更详细的子步,这使设计方法的逻辑性很强,可以减少设计中的错误,缩短总体设计和查错所需要的时间。

图5 子步

PART4.转换实现的基本规则

(1)转换实现的条件

在功能表图中,步的活动状态的进展是由转换的实现来完成的。转换实现必须同时满足两个条件:

1)该转换所有的前级步都是活动步;

2)相应的转换条件得到满足。

如果转换的前级步或后续步不止一个,转换的实现称为同步实现,如图6所示。

图6 转换的同步实现

(2)转换实现应完成的操作

转换的实现应完成两个操作:

1)使所有由有向连线与相应转换符号相连的后续步都变为活动步;

2)使所有由有向连线与相应转换符号相连的前级步都变为不活动步。

PART5.绘制功能表图应注意的问题

(1)两个步绝对不能直接相连,必须用一个转换将它们隔开。

(2)两个转换也不能直接相连,必须用一个步将它们隔开。

(3)功能表图中初始步是必不可少的,它一般对应于系统等待起动的初始状态,这一步可能没有什么动作执行,因此很容易遗漏这一步。如果没有该步,无法表示初始状态,系统也无法返回停止状态。

(4)只有当某一步所有的前级步都是活动步时,该步才有可能变成活动步。如果用无断电保持功能的编程元件代表各步,则PLC开始进入RUN方式时各步均处于“0”状态,因此必须要有初始化信号,将初始步预置为活动步,否则功能表图中永远不会出现活动步,系统将无法工作。

PART6.绘制功能表图举例

某组合机床液压滑台进给运动示意图如图7所示,其工作过程分成原位、快进、工进、快退四步,相应的转换条件为SB、SQ1、SQ2、SQ3。液压滑台系统各液压元件动作情况如表1所示。根据上述功能表图的绘制方法,液压滑台系统的功能表图如图7a所示。

表1 液压元件动作表

元件

工步

YV1

YV2

YV3

原位

快进

工进

快退

图7 液压滑台系统的功能表图

如果PLC已经确定,可直接用编程元件M300~M303(FX系列)来代表这四步,设输入/输出设备与PLC的I/O点对应关系如表2所示,则可直接画出如图7b所示的功能表图接线图,图中M8002为FX系列PLC的产生初始化脉冲的特殊辅助继电器。

表2 输入/输出设备与PLC I/O对应关系

PLC I/O

X0

X1

X2

X3

Y0

Y1

Y2

输入/输出设备

SB

SQ1

SQ2

SQ3

YV1

YV2

YV3

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

无论啥品牌的PLC,用这种编程方法来进行逻辑控制顺序控制都太棒

不管什么品牌的PLC,使用下面的方式来进行逻辑控制顺序控制,都是非常好的一种编程方法。既方便监控又可以随意跳转到哪一步。请改变一下我们的编程思维好么?我看那些人的所谓步进指令,还有大量的置位复位指令,非常不好阅读,也不好检查和更改。下面贴出利用三菱软件的编程图,其它品牌都一样可以采用(西门子更是如此)。

其实这就是ST编程里的ST语言的CASE语句的梯形图转换。

所以很多人说什么ST语言只适用于计算,不适用于逻辑控制什么的,我就呵呵了。ST语言也一样适用于逻辑控制,只是看各位编程人员擅长于使用哪种编程语言了。下面再贴出上述编程方式的ST语言下的控制:

下面是监视的过程:

这和梯形图下的顺序控制方式是一样的。

这种控制方式比那些所谓的置位复位要方便很多。建议从日系编程学习入门的朋友转变一下思维,摒弃那种编程方式!

看看网友的讨论:

莫头脑 said:

我看那些人的所谓步进指令,还有大量的置位复位指令,非常不好阅读也不好检查和更改 那他们的程序是否正常运行……

965528555 said:

正常运行是一回事,是否更具有阅读性或者说,是否愿意接受更好的表达方式那是另一回事。

1530694073 said:

我表示欧美系都是不步进顺序逻辑,可读性很强

cvlsam said:

真正的日系编程思维是这样的,当然译码编码指令其他PLC厂牌中也有。

D500就是显示运行到哪一步,M寄存器还可以在人机界面上做个跑马灯演示。

Good Luck~

gk_0 said:

我觉得置位复位挺好用的呀,也很直观呢。

楼主例子中大量使用比较、运算指令,如果几千步以上,那么扫描时间是否会比位指令长很多呢?

965528555 said:

这里首先我们明白一个问题,即不管你的程序是多少步,PLC的扫描永远是从程序的首端扫描到END,这个过程是一样的。

而PLC在扫描某一行时,通过你所说的比较运算指令即可判断该行是否成立从而是否继续扫描该行后面,反而可以节省时间,即该条件不满足就可以跳到下一个。而置位复位则不一样了,每行都得扫描完才能下一个。

其实是更节省PLC的扫描时间,比如CASE语句,第一行就会判断Step等于几,然后就直接跳到等于几的那行去扫描了。假如是一万步十万步,这中间就节省了非常多的扫描时间,但是置位复位就没这优势了。必须逐行扫描以免错过任何一个。

bnnyygy said:

一直都是这样写顺序控制的。

欧姆龙ST语音写的,E文不好,变量都是中文。

965528555 said:

非常好,也感谢分享。但是建议最好是使用CASE语句来写你这个程序部分,而不是大量的IF语句。

273708367 said:

感觉越复杂可读性越差,扫描周期也越长,每个人习惯不同改变也不是一朝一夕了。

chi1225 said:

每一步前面都要搞一个比较指令,感觉不好看,指令占的空间又大,发现还是用DECO(解码指令)比较好。。

965528555 said:

那是因为三菱的软件一显示注释就显得大,而且一个比较指令占用的空间长,将近三四列,西门子根本不存在这个问题,人家的一个比较指令就占用一列。

MIC小赖 said:

这个模式从06年的台湾东捷的机台上就已经看到了,目前我们这动作部分管控基本都是这样写的。

965528555 said:

有一种论调很不好,即“我们都习惯那么久了,改变不是容易的事,要么就是你说的也不好用,虽然我没用过但肯定不好用”。

这样想法不太好,之前我也是从日系入门学习的。后来我一学习西门子的时候我也是内心抵制它,一点也不好学,思想转不过弯来,不好用。后来我想我还是去熟悉它我才好判断它到底是不是好用,如果我熟悉它了它确实不好用我就舍弃它,用我认为好用的。

结果经过我的比较,发现西门子的PLC确实好用,那么我就接受它。

就文中所说的编程方法来说,我之前也是采用什么置位复位的方式,后来我看到国外的人是这样写,包括西门子博途软件的官方库写法,我觉得我可以先接受它然后运用一下,来写个实例,看是不是更方便,如果是,我接受,如果不是,我就舍弃。

有一次有朋友说西门子的触摸屏或WINCC的画面编辑用面板技术在某些场合非常方便。于是我就去了解它,当我学习并用面板技术做了一个HMI面面(比如现场十套控制几乎相同的过程画面),我觉得确实不错,那么我就去接受它。

所以如果在工作中有一种别人推荐你而你没有使用过的方式方法,请不要先拒绝,拿你那些老习惯来安慰自己来躲避。应该先尝试一下,然后对比一下,也许你会有所收获呢?或者说你可以试完了再骂人家这SB,不行啊,还是没我之前的习惯用法好。

yinguiyao said:

有步进指令的用步进指令,没有的就用你这个方法,如西门子200 200smart就没有步进指令。

用步进指令好处是不用考虑时序的问题,同一时间段只有指定步被扫描,而你这个方法要注意同一扫描周期相邻两步不被同时执行,例如在每步都加时间延时或者其它的办法。

我发过一个贴子,参考:

http://bbs.gkong.com/archive.aspx?id=463847

cvlsam said:

200中有步进指令,只是中文翻译成顺序继电器指令了。

同一个扫描周期相邻两步并不会同时执行,因为PLC扫描机制决定了顺序执行。

西门子中的Graph并不是步进指令,而是顺序功能,也就是其他厂牌中的SFC,之所以使用Graph,是因为在西门子的PCS7系统中,还存在SFC编程方式,为了区别,就如同西门子的ST语言翻译成SCL,因为和其语句表STL容易冲突。

Good Luck~

zhujilucj said:

我大部分用的还是置位复位指令,有少数几个程序也在用这种方法。这个方法特别适合跳跃分支多的程序。

微信网友也加入讨论:

Electric epoch said:

本人很赞同作者的编程方法,如果是结构化用这种方式会更好

启海 said:

不管作者的方式是否适合,但是有讨论有比较肯定能进步。

代奇伟said:

我一般写时序是通过移位指令写

William said:

我也是用这种方式写的.CASE语句里面写定时器需要注意一些。

耿彪 said:

使用DECO指令完美解决顺序控制

优态 said:

st局部运算用还可以,全用阅读性不好自己都会忘更别说其他人,这东西和高级语言还是有太大差距,好的程序不是有多花里胡哨,稳定,可阅读性才是王道。高级语言也是如此。

上虞宁 said:

其实St挺好使,之前不习惯现在戒不掉

吕·D·Will said:

case写流程很好,但是在日系个别plc里资源消耗非常大

如果你也想加入讨论, 链接在此 http://bbs.gkong.com/archive.aspx?id=470284

温馨提示:本文来源于中华工控网工控论坛(本号)网友和讨论,转载请注明出处。

相关问答

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

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

PLC学习的顺序?-盖德问答-化工人互助问答社区

只要顺控编程基本思路,plc不难掌握,何况你是学计算机的。plc学习不仅要学编程,更重要的是学处理过程的思路方法,同样处理一个过程有人编4句实现了,...

plc模板安装顺序?

关于这个问题,PLC模板的安装顺序可以分为以下几个步骤:1.安装PLC编程软件:在安装PLC模板之前,需要先安装PLC编程软件,如SiemensTIAPortal、RockwellStu.....

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

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

plc先入先出怎么控制机械?

PLC(可编程逻辑控制器)可以通过先入先出(FIFO)逻辑来控制机械。FIFO是一种常用的队列数据结构,用于按照先进先出的原则处理数据。下面是一个简单的示例,展...

plc顺序控制编程思路?

PLC顺序控制编程思路通常分为以下几个步骤:1.分析控制需求:了解需要控制的设备或系统的工艺流程和操作顺序,明确控制对象和控制要求。2.设计控制流程:根据...

三菱PLC的编程软件有哪些?

GX系列:1.GXDeveloper程序开发、维护·编程·参数设定·项目数据管理·在线监控、诊断功能·各种网络设定、诊断功能,可编程控制器综合开发平台2.GXSimulat...

plc电动机顺序控制电路分析?

本电路起动顺序是先M1电动机,后M2电动机;停止顺序则相反。2、plc(三菱FX0N、FX1N),编程器连接及通电操作。3、清零操作;程序写入操作;根据梯形图写出...、...

plc常用编程语言哪4种?

PLC编程语言五种:梯形图、指令表、功能模块图、顺序功能流程图及结构化文本。目前编程语言的价值在于用经验的方式来管理软件系统复杂度。而SQL算是一个数...

plc常见的语言编程方法?

PLC的编程方法大体上有5种:经验法、解析法、图解法、技巧法及计算机辅助设计法。(1)经验法:运用已掌握的成功设计经验,结合实际的情况,选择与实际情...

 马克麦克莫里斯  小说龙翔都市 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

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

热线

188-0000-0000
专属服务热线

微信

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