顺序功能图的学习

SFC顺序功能图,英文Squence Function Chart,是IEC 61131-3标准PLC语言中的一种,主要应用于流程性很强的复杂逻辑控制,用标准中的话说就是针对顺序控制过程的控制条件和过程提出的一套表示逻辑控制功能的方法。比如一连串加工步组成的加工、组装、线体等工艺逻辑序列。最早是法国的国家自动化促进会提出。这种方法既可以使用文字进行描述,也可以用图形化语言描述,不过,标准中一般将该语言划分到图形语言中。

 

该语言有简单的几个要素:步,转换,有向箭头。

步:该语言将过程循环分解开的清晰并且连续的阶段。

转换:步与步之间迁移的条件,由有向连线将步与转换进行连接。

步分为初始步,活动步,非活动步。在图形语言中,初始步与其他步区别明显。活动步与非活动步之间的区别一般在编译器中被以颜色进行区分。在文本语言描述中,初始步的描述为:

  INITIAL_STEP XXX:

    (Body)

  END_STEP

普通步则为:

  STEP XXX:

    (Body)

  END_STEP

步有两个参数,一个是步状态,另一个是步消逝时间。步状态可以使用***.X来访问,类型为布尔类型,消逝时间是Time类型的变量,可以用***.T来访问。

每个SFC网络中必须有至少一个初始步。对于某些过程,可能存在多个不同的进入序列的位置,此时就需要设置多个初始步。

与步相连,位于步右侧的图块是动作,动作时一个或一组执行逻辑的组合,这里或是置位,或是赋值,或是调用函数或功能块。使用语言也不定,ST,FBD,LD都可以。但是西门子的默认设置为SCL语言,三菱则默认梯形图。

动作分为存储型动作和非存储型动作。存储型动作就是将输出位置位,待到下一个某步动作再将输出位复位。动作类型的选择依据限定符的选择而定,有空限定符,N非存储型动作,S存储型动作,R复位动作,L时限动作,D延时动作以及这些限定符的组合例如:LS,DS,DR等等。如果使用N和空限定符以外的限定符,那动作程序中就不能使用某些指令,比如,如果使用存储型S限定符,在西门子中,就只能用SCL语言输入置位位,不能有其他输入。如果有多个置位,那就得新建多个动作分别存储执行。奇怪的是,西门子的编辑界面中有各类限定符可选,而三菱的GWORKS3中只能选择N:非存储型动作限定符。不过与此对应的在三菱的动作中,可以输入若干条梯形图指令,类似于子程序。

动作与步直接相连,步转变为活动步时,动作就根据自己的限定符做响应执行。没有动作或空动作的步是空步,运行时,直接跳到下一个转换做判断。

在动作中,可以执行输入输出操作,也可以执行程序块和函数的调用。输入输出操作使用简单的梯形图或ST语言描述,如果使用文本型语言描述程序块的调用,则使用CALL语句来调用。动作和转换以及步都有对应的名称,动作默认名为Action_*,步默认名为STEP*,转换名默认为Transition_*。这些名称可以自定义,但是不能重复。对于转换,还有一个优先级的属性,是整数数值。选择分支时,优先执行高优先级的转换判断,如果没有设优先级或优先级相同,则在SFC网络视图中按从左到右的顺序执行转换判断。

 

转换

转换是一个步与步交接令牌的条件,是一个布尔量。针对不同的状态,转换又分为两种,一种是【使能转换】一种是【非使能转换】。使能转换是指,当通过有向连线连接的所有前级步都处于活动步状态时,该转换就称为使能转换。而与之对应的则称为非使能转换。如果一个使能转换自身的条件判断结果为真,就是说转换条件达成,则称为实现转换或触发。实现转换后与该转换连接的后级步将立刻转变为活动步,这一操作称为【转换的清除】,前级步均变为非活动步,这称为【转换的进展】。

转换的核心是一个布尔条件,在网络中以处于前后级步中间的有向连线画横表示。横线右侧显示转换名和优先级。左侧一般显示转换条件,这里即可以直接使用视图结构将梯形图逻辑引到转换做为输出(西门子),也可以将转换作为子程序,并在子程序中将转换名作为线圈输出,还可以使用专有线圈比如三菱中的虚拟线圈【TRAN】。标准中,使用ST语言可以用2种句式来表述:

第一种,不适用转换名,直接写到步与步之间

STEP STEP1:  END_STEP

  TRANSITION  FROM STEP1 TO STEP2

  (*/*)

  END_TRANSITION

STEP STEP2:  END_STEP

第二种,使用转换名,同时需要在转换附近定义转换名

TRANSITION TRAN**

  (*/*)这个布尔值的求解,将赋值到由转换名标记的位置。

END_TRANSITION

在转换处,可以将网络拓展为分支或并行结构,也可以将分支合并。SFC网络按照步与步的顺序结构分为5种:

1、单序列

2、选择序列-开始...分支

3、选择序列-结束...合并

4、并行序列-开始...分支

5、并行序列-结束...合并

这里选择序列和并行序列看起来相似,但因为转换的位置不同而区分,具体如下(截标准图):

 

 

 

 注意上图所示的转换D/E/F/G和H/M的位置区别。

单序列结构是自上而下的走向,单一路径。选择序列中,开始分支结构的转换变为使能转换时,所有使能转换按优先级或从左到右的顺序依次判定,哪个先为真就执行向哪一个分支进展。同时,此处的转换应当是互斥的,或有优先级的。在结束合并结构中,后级步的前级转换任意一个从使能转换变为实现转换后,后级步就进展变为活动步,序列开始向下。并行序列中,开始分支结构的转换的后级步有若干个,只要实现转换达成,则后级步同步激活并使序列向下执行。而结束合并结构相反,必须是该转换的所有前级步都成为活动步,才使能并去判断实现转换,序列才向下进展。

除了分支结构,实际编程时还有跳转,标准中是一个有向连线去指向某一转换下方来表示。比如西门子博图和三菱GWORK3中的编写。跳转是包含转换的。类似于选择序列的结束合并分支。

通过以上几种序列的组合可以实现多种控制逻辑,但是实际编写时,需要注意防止出现不可达序列或不安全序列。不可达步就是存在某种状态,序列停止无法继续向下进展,这容易发生在并行序列的结束合并分支中。不安全序列则是出现了序列无限循环。序列的进展在程序内部不断循环不能正常进行。

 

推荐这些技术文章:

强化学习基础知识

之前杂七杂八的看了很多关于强化学习的知识,脑子里比较混乱,经过这次的梳理感觉清晰条理了很多。
一、Terminologies
  Agent、State、Action、Environment、Reward
  Policy:Π( a | s ),策略函数,以状态 s 作为输入,输出所有动作 a 的概率。
  State transition:状态转移,根据当前 s 与选择的 a ,状态会变为 s...

python学习4

pass语句

range()函数的使用

   * range()函数
    1.用于生成一个整数序列
    2.创建range对象的三种方式

     3.返回值是一个迭代器对象
     4.range类型的优点:不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要储存start.stop和step,只有当用到range对象时,才...

Locust 0.X 学习(三)

Locust 运行
1、指定文件、web界面填写Host
locust -f filepath 
2、指定文件、指定Host
locust -f filepath -H http://ip:port

 
 
3、指定文件,在脚本中指定host

 
 
3、负载测试
--step-load 

 

每步增加多少用户
每步持...

tensorflow学习

with tf.train.MonitoredTrainingSession(
master=master,
is_chief=is_chief,
checkpoint_dir=ckpt_dir,
save_checkpoint_secs=None,
log_step_cou...

单片机学习-1

四组8位并行I/O端口:        P0端口:PC门,集电极开路输出,必须接上拉电阻才能输出高电平。        P1端口:无特殊之处。        P2端口:访问外部存储器时,作高8位地址用。  ...

强化学习-策略迭代

参考:
(1)https://zhuanlan.zhihu.com/p/39279611(策略迭代收敛性证明)
(2)https://blog.csdn.net/weixin_42863507/article/details/107684293
一、策略迭代算法
1、策略评估
$v_{\pi}\left( s \right)=\sum_{a}{\pi \left( a|s \right)}\su...

强化学习-广义策略迭代

一、广义策略迭代算法
将策略迭代和价值迭代结合起来(策略迭代和价值迭代都是广义策略迭代的特例)
比如:执行若干轮价值迭代后,转去执行策略迭代或执行若干轮策略迭代后再去执行价值迭代(可以根据需要去设计)
在执行策略迭代时,也可以适当减小策略评估的迭代轮数,不必等到状态价值函数收敛,这样可以提高算法的计算速度
二、广义策略迭代实例

import numpy as np
import gym
fro...

Java多线程学习1

一、多线程
1.1 程序、进程、线程

程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。
进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期。

程序是静态的,进程是动态的
进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域

线程(threa...

西门子SCL编程学习_伪随机数_线性同余法LCG

文章参考1:PLC产生随机数
文档参考2:西门子S7 -300线性同余法产生随机数
编写日期:2022年3月27日 11:27 周日
递归公式:RandSeed = (A * RandSeed + B) % M
A:乘数
B:增量
M:模数
LCG的周期最大为M,但大部分情况下都会少与M
要另LCG达到最大周期,应符合以下条件:
B,M互质;
M的所有质因数都能整除A-1;
若M是4的倍数,A-...

git-pro学习总结之git分支

1、新建分支
新建分支 iss53 并切换到该分支
$ git checkout -b iss53
等价下面2条命令
$ git branch iss53$ git checkout iss53
2、合并分支
首先,检出到想合并入的分支
git checkout master
其次,使用 merge 命令合并分支
git merge iss53
iss53...

文章标题:顺序功能图的学习
文章链接:https://www.dianjilingqu.com/1507.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>