粉丝11.5万获赞26.4万

西门子的 obfbfcdb 分别是什么意思呢?他们是怎么使用的?新手都会遇到这个困惑,不会就点赞收藏吧!西门子幺二零零 prc, 他的程序分为三个类别, ob 组织块呢,相当于主程序,是每个周期都要循环扫描的。 fc 是函数, fb 是函数块,他们相当于此程序有 ob 主程序来调用。如果有些程序需要反复被调用,就可以写成一个 fb 或者 fc。 d b 是数据块,分为全局数据块和背景数据块两种。 f b 和 f c 的区别是, f b 有自己的背景数据块,而 f c 没有自己的存储群。 f b 等于 f c 加 d b。 你还有什么疑问,留言给我!

金分子的 plc f c 和 f b 到底有啥区别?相信困扰了很多人,在实际的应用中到底该选谁呢?其实你记住一个准则就可以了,我在片尾给你总结,欢迎你的收藏点赞。 很多人说 f c 没有 d b, l b 是有 d b 的,以及 f c 和 f b 的内部接口不一样等等,那我们来抬抬杠,你说能用 l b 实现的,用 f c 加 d b 的吗?欢迎你到评论区来聊一聊,显然抬杠的意义不大,在这里呢,并不说谁能不能实现的问题, 而是用谁效率更高的问题。个人觉得最大的区别就是面向对象编程理念。哎,对,即使没有对象, fb 也可以让你面向这项编程。如果你做过 pc 系统,或者用过博图中官方提供的功能库,你会非常容易理解以上的概念,像阀门、电机、 pid 等等都是 fb, 也超 工作块类型,当你调用 fb 自动生成 db 的时候,其实就是块类型实力化的过程,为电机或者控制功能分配一个专属的存储空间,让你的上位啊,或者其他地方想来读可以直接去访问, 而 fc 就不是这样了,想要实现以上功能呢,你必须手动的去分配存储空间。那如何理解呢? fc 更像是一个公用的水杯,那每个人都用一个水杯喝水,每个人喝了多少你是通过水杯是没法知道的, lb 呢,更像是给每个人发一个水杯,每个人的状态都是透明的。所以总结来一下啊, lb 又称作块类型,做工艺控制功能的首选,而且能让你的编程更好的实现标准化。 那什么情况下用 f c 呢?常见啊,经验来看有两种,第一种比如说基础的功能实现加减乘注与会飞等等。第二 二种是实现你的功能划分,比如说用 fc 去调用 fb 或调用其他 fc, 让整个程序更具备调理化。你赞同我的观点吗?你怎么想的?评论区聊一聊,关注我。

好,那我们接下来就讲一个地皮块,地皮块很牛批的啊,先左边有个,先添加新块,我们把每个块都给你们介绍一下啊。 第一个是有一个 ob 组织块,他有特定的功能,那我们的主程序 ob 一也是属于我的 ob 组织块。 至于后面我们常用的那几个,比如说 ob 三十中断程序我们会使用。还有一个是呃, ob 版,那就是在 启动 ob 块,在 plc 从 stop 执行状的时候执行一次,其实它类似于就是我们的上电初始化,就是上, 不是上电出手啊,上电执行一次就是我们系统和时间的储存器里面的那个东西,所以我们一般这个很少用,因为我们可以用它系统自带的那个储存区就已经能完成了,但是用这个也可以啊。 好,那这个我们到后面讲中断的时候会介绍,那我们 fb 块是什么呢? fb 块就是个函数块,那像我刚刚创的那个计算,其实我们也可以拉到一个 dp, 就是 fb 块里面去将我所有的值打包成一个块, 对吧?就跟这种一样的,就比如说啊,对,就比如说我们计算, 但是他里面不只是用于计算,他可以还用用程序啊,就类似于这种,我导出一个输入管教,一个输入管教,最后里面的计算过程是不是都在这里面?那我 sb 快 也是这种,但是我的功能不仅仅是算于计算里面去,比如说我现在写了个新三角程序, 我现在用了十台新三角,或者说一百台新三角,那我不可能一个一个程序去写吧? 我希望写一个前三角视频,写完把我的启动按钮停止按钮导出来,还有我的三个电机控制导出来,剩下的我都不想要了,是吧?里面写的程序还是逻辑啊?或者说里里面都使用了定时器, 计时器这些东西我也不想要了,我只想需要这个管角,我就创建出这个函数块,我每一次可以调用这个函数,也是说调用我这个写过的程序,只是把里面的管角每次换一下, 他可以无限的调用,所以说他就也类似于一个函数,你只要输入一个 x 和 y, 他就能执行你的要求。 这个说的时候再演示啊,就是我们先先一个一个来。对对对,就是一个酷文件。 对对对,自己写个裤吊用。对对,就类似于这种的啊,因为我们的重点现在不在这,我们就先不介绍好 fc 块, fc 块就是类似于一个子程序啊,现在也一起说了吧,子程序什么呢?就是我们写程序的时候是不是有的很多,有,看着很乱,尤其你还写在主程序里面, 主程序里面程序越多的话,你看起来其实很复杂,那我们就需要一个子程序,把程序写到子程序里面,由于 p l t 扫描只扫描主程序,扫描进行主程序,所以它的子程序必须要调用到我主程序里面才可以使用。 好,那我们比如说下面那个设备的时候,你们到时候写的时候,首先第一个,我那个设备是不是有手动模式跟自动模式两种模式?那我先把 手动模式里面的程序放到手动模式里面去,那我自动的程序写到我自动程序里面去。对,那比如说我现在点开这块,我这边可以选择叫手动模式。 对,那我现在是不是创建了一个绿色的一个 fc 的一个手动模式,那我到主程序里面直接拖拽吊用, 他是不是就叼用了一个框?那比如说我这边又建了一个自动, 我们还是到主程序里面钓友。对, 尤其像我们那种有个电工柜里面是不是有那种旋钮,我旋到这边就是自动,我打到这边就是手动,那我这两个可能就是,比如说二零点零,那我的旋钮的左边,那我这个可以是二 零点一,就是我旋钮的右边,那我通过旋钮是不是能控制我手动跟自动的一个模式切换?甚至说我 就是吊用你的程序。对,我的主程序就不需要写程序了。 你们煮程序以后都不许写程序啊,除非说有什么上电充实话。那我也可以打包一个快啊。其实都可以打包,比如说艾欧映射可以放进去, 说你的那个上面出石化程序也可以放进去,都可以打包到这里面去。所以我们的主程序叫看起来就很简单。比如说你现在手动有问题,我直接就可以进入手动程序里面去看我里面到底哪个有问题,查故障也方便,对吧? 那好,那个手动程序基本上就这么使用啊。手动的这个 su 换,那我们今天的重点是第一笔,反正讲过了 fc 换,你们就注意一下以后写程序不允许在我主程序里面见到程序 能做到吧?不是,就是我主程序里面不允许出现你的编程。对,我只允许你调用手动或者自动,就这种的一个 fc 块 可以吧?这个要求不高吧?你说不管你写啥东西,要养成一种习惯,现在就是培养你一种习惯,这个习惯真的是个好习惯,你以后要写的时候, 你到时候自己主自己找故障的时候都很好找。比如说他现在就手动模式有问题,自动程序没问题,我就直接到手动里面去找,我就不需要去乱找了。你相当于一个程序里面写了好多行,十几二十行,上百行,你去找吧,怎么找 你甚至让人家调试员也不好找。所以啊,你们写程序都在那个手动程序里面写。好,我们再看一下我们最后一个 db 块啊, db 块是一个我们的数据款,那我们在之前使用的时候,或者说定时器、计数器的时候,我们拖 播的时候是不是也掉一个地皮块了,对吧?他就是放一个地方储存,那我们西门子给你方便,哎,也创了个地皮块。那比如说我这个这个程序名字是可以随便起的,比如说 手动模式储存, 因为这个名字是不不能跟你这个这个这个原名字是一模一样的,所以我习惯性在后面,比如说我这个是手动的,我习惯性会在后面加个 db 两个字, 因为不允许跟你这个 fc 块这个名字一样的。而且注意一下这个滴滴编号是可以进行 手动去修改了,这个滴滴块不是说固定死的,对吧?我们看最大五万九千多,哦,不是对五万九千多 好,一般我们就直接是默认他自动给你分配一个低逼跨,我们也可以手动去改好就自动了,自动分配一个好,然后看到我们这边是不是一个手动低逼,就是一个低逼跨了? 好,那我们刚刚是不是你们用了一个计算好,比如说你们就这计数起数学计算, 你们刚刚写的那个公式还在吧?好,你们现在比如说 我们这边先给他命名,比如说第一个广角热门呢?写个名字给他,比如说我的输入值,对吧?输入值 可以吧?那我后面就叫啊计算一,然后后面我可以点一下,然后拖转。你们有除去 x 应该有几个环境,你们就拖几个, 对吧?那将我们这个数据类型也改成 real, 因为他默认一般都是 都是布啊。如果说你改了一个之后啊,数字上面还有一个 好,全部改成药,对吧?那我就直接可以将我的这个块, 比如说我这个输入值,点这个蓝色的啊,不要点这个字字啊,点这个蓝色的按住不放拖拽进来啊。我这个不行,这只能一个拖拽,已经很方便了好不好? 比如说你要计算值,一按住不放拖拽到这里面管脚 来吧,有几个拖几个, 那我还有一个叫输出纸,等,给他给个名字,是吧?对,这个这个地方随便给他一个吧,要不然他会报错。 好,那看我们现在是不是就这样就可以了,没问题吧?啊?还有输入值,哪个输入值?我还没写给他呢,对吧? 你们那个后面那个管角注意点啊。哦,还有一个 这个地方你们有的人可能会发生这种啊,上面写个这个东西要调用环境后期发生变化,有的话就注意一下,没有的话你们知道怎么处理就行,这个可以把它关掉,这个 sk 要关,关闭重开就行了。 还有种我习惯性用这种方法点击这边测试,有一个调用环境,点击更改,然后啥都不要改,点就确认就可以了。

f c 和 f b 的区别是什么?该如何选择?首先,无论何种逻辑要求, f c 或 f b 均可实现,二者核心区别在于有无背景数据块儿分别创建一个 f c 和 f b。 f b 的接口多一个 static 静态变量 封装调用后,这个组装的变量不会出现在银角中,但是会出现在背景数据块中。因为 tamp 变量不能用于自锁线圈和边沿触发,因此当需要这两个功能时,如果用 fc, 只能通过接口连接外部时餐替代 tamp 临时变量 f c f b 如何选择?举两个例子,就要实现气动阀的开关控制,包含手动自动启停急停复位三个功能,无需进 大量的数据处理,可以优先选择用 fc 搭配自定义数据类型。而对于这个灭菌数据的记录功能,需要记录几百个数据,还要用到几十个边缘指令。如果用 fc 的话,要将这些保存的数据全部通过接口连接外部实餐, 会使外部接口变得异常反多,这种情况可以优先选择用 fb。 总结一下, 对于简单的逻辑,不需要用到大量数据计算的,优先选择 f c, 因为 f c 比较小巧,用起来方便。而对于需要大量数据计算或多个边沿指令的程序,则优先选择用 f b。

学习西门子 prc, 你到现在还不知道什么是 ob, 什么是 fb, 什么是 fc, 什么是 db 的朋友一定要看一下这个视频,我只花几分钟的时间把这个问题讲的明明白白啊。如果有想学习 prc 的朋友,可以关注老王,点赞收藏啊,我每天分享不一样的 prc 学习干货, 废话不多说,直接看时差。大家好,我是老王,今天我们来讲一讲西门子幺二零零模块化的框架,我们要知道哪些东西,然后这些东西在我们后面做模块化的时候呢,要经常用到的一些东西, 比如说什么是主程序啊,什么是主程序,什么是 o b, 什么是 f b, 什么是 f c, 什么是 d b, 对不对?好,这是我们一些框架的一个主要的一个模块儿啊。 什么是 obob? 在西门子里边叫组织块啊, ob 里边有 ob 一、 ob 百, ob 三零、 ob 四零,当然还有其他 ob 一、 ob 二或三, ob 四都可以啊,但是他有一些特殊的块,比如说 ob, 他是启动组织块,也就说将来是初始化,也就说第一个脉冲啊,第一个扫描周期啊,要执行了一个块啊,你如果说在第一个扫描周期要执行了,你就把它放到 ob 一百里边。好, ob 三零间断扫描,比如说我们在做中断程序啊,时间中断程序,隔五秒执行一次,隔五秒执行一次,或者是隔一天执行一次,可以放到这里来。 o b e 是怎么了?注意了啊, o b e 就是它的一个主程序啊,它是循环扫描啊,不管你的 啊,比如这些 f b 块, f c f 呃, f c o 和那个 o d 三零,它是到了一定的之后它才会执行,但是 o b e 它是主程序,它是循环扫描啊,一直有啊,将来也是我们之前的普通的 t 图,我们在山里片,这新的片是其他片,谁它都是一普通的 t 图啊, 然后这里的一个 o b 一百呢,是一个初始化啊,在三年里边我们要制建一个初始化啊,程序啊,或者是指程序好,这个功能块啊 啊,我们功能块三列里边也有这个词啊,叫功能块 f b b s black 啊,功能块,这个 o b 是什么呢?组织 o 是什么啊?就是组织啊,那个词我还不会念啊,叫呃,叫组织 for b 就是 black 啊, 然后这个在三年里边也叫 f b 啊,也叫是功能,这个是 function 啊,这个是功能 f 功能的意思 b black 啊,功能块,这个是 f c 啊, f c 叫功能程序啊,这个西门子叫 a 功能函数啊,是一样的道理, f b f c 是一样的道理啊, 但是 f b 和 f c 在这里边有区别啊,三年里边它只有个 f b 啊, f b d 啊,它叫 f b d, 我们这里也叫 f b d 啊,叫 f b d 叫功能块表啊 啊,我们这个如果说 f b d 的话啊,我们这个语言有 f f b d, f b d 的语言啊,语言叫叫功能块表啊,功能块表, disd like, 对吧?表的意思 啊,好,数据块,它是一个数据啊,这个不是一个块啊,它是数据块啊,它是专指数据啊,数据块啊,它不是程序块,数据块啊,不是不是,不是程序块啊,啊,这个注意一下啊,程序块 好,这个 d b 是数据 d 是什么啊? d 是数字的意思, car 是啊,对不对? d d l dialock 啊,数据应该是这个词儿啊,我都忘了啊,这是数据的意思啊。好,我们来看一下我们的这个,这个好,好,我们来看一下这个 啊,这个是上一次我们讲的这个字啊。好,我们来看一下啊,这个好, f b 啊,它是有 f b, 是一个。呃,功能块,它可以代餐也可以不代餐啊,但是它必须 要跟一个背景 bd 块啊,背景 bd 块,比如说我们只要调用 fb, 他就必须要有一个背景的一个 bd 块,这个 b 块是一个数据块,要来存储 bd 的一些数据。由此可见,我们 fb 基本上就是来处理一些什么子程序啊。 fb 他相当于子程序啊, fc 都相当于子程序, 他就是处理一些带有很多参数,很多数据的一些功能块啊,一些程序。然后你看他是函数块啊,这里知道函数块我们叫功能块也可以啊,都是一样的, 功能块在自身的值永远存储在背景数据块当中啊,然后在执行后这些数据仍然保持。也说你在 调用这个函数,调用这个工程序的时候要做一些。呃,做一些那个运算的时候要保存,要随时,要调用这些数据值的时候要用 f b 块啊来做,然后他就可以分配一个数据给他啊。啊,两百,两百里边叫功能块啊,这里叫函数块是一样的道理,所以说 啊,在三零三零里边也是叫功能块啊。呃,他现在的一个接口变量对不对? f b 的作用,我们来看一下他有一个 state static, static 啊,这个是尽量变态的一个用法啊,尽量变态,静,静态变量啊,静态变量 啊,这个在三元的函数里边或者微的元的里边都会有这些数字啊,都会有这些类型,这是一个数据类型啊,啊,很多的一个数据类型,所以说这个静态变量在后面,我们都一会,我们在做这个项目时候都会讲掉,讲到啊,你现在不懂没关系啊,关键是要有知道有这个东西,我们后面再讲的时候会会来讲这些,遇到这个问题我们会讲啊, 现在只是给你提一下,你要知道有什么东西啊,这个静态变量呢,它只有功能块 f b 有啊,也说它在这个静态变量里边,就相当于是在那个 f b 块里边啊, d b 块里边啊,它存储在这个 d b 块里边啊,它这个呢也是 f b 和 f c 的一个最最大的区别,比如说 f c 它可以不要有,可以没有这个 b d 块 啊, f c 里边可以不用静态变量,在其他 f b 块在执行完之后的数据可以保存,而临时变量 temp 在对应的 f b 块里头完全清楚啊,这个我们在做项目时候会一一都来讲,会讲的啊, 好比如我们现在一加一,一加二,等于一加二加三啊,如果说我们在做提醒图的时候,首先是一挨的挨的啊,比如我们做,比如这个 x m 零啊, m 零, m 零触发之后 add 加上什么呢啊?加上 k 一 d 啊,然后呢? k 二,然后复制给 d 零啊,然后 m d 零啊,我们这里西门子叫 m d 零啊啊,那个三点叫 d 零。好, 这首先把它一加二等于 m d 零,然后呢?再来一个什么呢啊?这个是上线元啊,它只计算一次,然后再来个 a d d 再加一次啊,然后 m d 零加上 k 三,对不对?然后复制给 m m 多少 m d m d 多少 m d 二对不对? d 他是占了两个至啊,啊,这个 m 大啊, m 这个是 m 四了啊,这个 d m 四了啊,因为 d 占用三十二个字体啊,别忘了啊, m w m w 是占用两个字节啊,两个字节,对不对?所以说我们,所以说我们这里的话,他就要计算两步啊,如果说我们想要调用一加二等于多少的话,那我们这里就要用 fb 块里边,那么然后把这个数据呢保存下来 啊,把这数据保存下来,如果我们做基础的话是这样写,如果说我们做 f b 块的话,他就把这些这个来做一个变量,比如这个变量为 a, 这个变量为 b, 然后我们要返回 a 的话, 如果说你要访问,你就要做一个 f b f b 块来来调用这个工本块啊,调用这个子成学啊,调用这个计算的一个子成学啊,所以说它 f b, 它侧重于数学方程数学计算啊,所有有 参数啊,有很多数据的可以用 f b 啊,当然你没有的也可以用 f c。 呃,好,这个是你看一下组织框啊, o b 是组织框, o b 又作为主程序循环啊,然后呢,功能框 f b 相当于子程序啊, f c 也相当于子程序 d b 呢?它是一个背景 d b 背景 d b 为 f b 进行服务啊,比如说 f b 后面一定要跟一个背景 d b 啊,这个 d b 为那个 f b 进行服务啊,只要 f b 调整,它就有这个背景 d b 啊,是不是 好,我们那个再看下一个好西门子的那个两百十码呢,他就是一个主程序啊,然后要调用一些子程序啊,我们这里是调用一些块啊,他有这样一个区别啊, 然后呃, s 七采用了块的概念啊,两百他是没有块的概念,他是主程序子程序啊,然后所以说我们这个一千两他还是结构化表现的更 更加明显,模块化更加明显啊。所以说我为什么要单独拿一节来讲这个啊?这一节课呢?和上一节课讲字节的这一课呢比较枯燥啊,但是你们可以希望做一下笔记啊。所以说我为什么一直在推荐买一本书,或者你要下载一个什么电子档的啊啊?官网下个这个片下的电子档啊,然后 去随时在旁边做一下笔记。书有什么好处呢?书就是在你旁边可以自己手写一些笔记,在手写的过程中可以加上你的印象。然后呢你下次翻到这一页的时候你突然想起来你之前在这里理解有误的地方,或者是理解非常通畅的地方,或者是有一些感想的一些地方,他的关键语在这里对不对? 你不记的话你下次还得忘啊,因为你是新手啊,你如果是老手啊,这些不用记啊,你做的项目多了自然就记住了,对不对?好,你看一下我们 o b o b 他的一个程序主循环是默认的是一号啊,他有优先级别啊,他程序循环一, 然后启动是一百号啊,然后有延时,有循环,有圆上升圆啊,上升圆事件啊,这些我们是在手上就可以查出来啊,其实我们呃不是用的特别特殊的情况下一般都可以用其他的出啊,听图可以做出来, 比如我们用的多一点的程序循环 obe 必须要有一个啊,这是主程序,必须要有,没有的话执行不了的,然后启动可以用,然后还有个中段啊,你看下这个功能块 fbfb, 它的背景啊,背景功能块 bd 啊、 db 啊,他就一定在跟着他有,只要有这个东西他就有这个啊,要分配,我们到时候会讲啊,但是你不需要去记住你这些东西啊,你可以去截图啊,这个视频可以截图,到时候你做一下备份啊,但你不用截图啊,这个我这个课件我会给你的啊 啊,你看一下 o b 一,所以说你看一下 o b 一,他为什么有这样一个好处? o b 一,我们组成也可以用 f b 来调用棒一,然后呢?还是用 f b 一来调用棒二, 所以说我们这,所以说我们这一个项目我们要着重强调的一个是什么的,一个结构化了啊,把一个全新的一个结构化。 你说我用同一道程序,同一段程序去执行不同的动作啊,去执行相同的动作,但是他的结构,他的控制点位点数是不一样的,比如说我棒有两个棒,有两个电机,好,我用这个 fb 程序一去控制他,然后呢?下一次我要再用调用这个程序去控制棒二,但是我给他传递的参数是不一样 啊,在这里它的问题点在这里啊,这是它的优势,你看 o b 一,可以访问 f c 十, f c 二零 f b d 啊, f b 一啊,可以对它进行 调用啊,对它进行操作。如果说我们 o b 里边不调用这个程序,比如 f c f b 啊,不调用它,这个程序就相当于是不会执行的啊,这个就跟这指程序是一样一样的啊,必须调用之后它才执行,不调用的时候不执行好,对吧?然后在 ifc 里边, fc 里边呢,我们可以做一些全局 db 来,如果说 fc 里边有一些少量的一些数据的话,我们可以做一些全局 db 来进行保存数据啊。如果用 fb 的话,他就必须要分配个 db 了啊,这个背景 db 他也是属于全局 db 啊,那他也是属于他是一个背景,他是对 fb 的一个专供啊,叫黄苗对不对? f c 里边儿它也有代餐和不代餐的一个指程序啊,可以代餐啊,可变量的参数啊,它也是可以代餐和不代餐的, 对吧?你看他到这个函数就没有专用的存储去代码了啊,代码块对不对?他都没有滴滴了,他没有专用的,对不对?然后 fc 的结果参数介绍啊,我们 fc 里边有输入参数啊,输入参数啊,音谱的啊,音谱的这个单词记住吗?音谱的参数啊, output 参数,还有个 输入输出参数啊,这什么意思?音 pro 的参数,比如说我们这个是 f c 一个功能块啊, f c 一个功能块, 我们这里左侧都认为是 i 啊, i n in, 对吧?这里都是 o alt 输出,对不对啊?不管你是西门子的啊,不管你是西门子的 还是三零的啊,还是其他的啊,他现在基本上都是这样一个 fb d, 一个功能 fbd, 他就是一个功能块,都是这样一个标准,左边是输入,右边是输出,对不对啊?啊?比如左边输入有使人啊,一摇啊这些,这个右边是有呃,有输出的一些其他预算,你需要输入的参数都在这里,一个一个输入进去, 好,进入输出啊,你就是输出参数,这里是 input, input 在左边, output 在右边,还有个 in out, 又有又输入又输出啊,也在这里啊,所以说 输入他只能输进去,输出他只能输出来,但是我输进去又能把它反应回来了,返回来输出的,就可以用这个参数,对不对? 好,我们再看下一个啊,这个是临时啊,临时局部数据啊,这个我们讲的少啊,就不讲了啊。我们比如你看一下一加二等于名字,比如我们现在你不要调用,你不要算一加二等于多少的时候,你就用啊,你就用临时数据去做啊,这是常数啊,常量就是个常数,对吧? 好,这些呢?这些呢?我们后面,呃,后面再跟坚持这项目的来讲啊,讲啊,然后我们讲的一个流程图也是这个,所以说我们这里要讲的一个是什么呢?这里这里是第一个流程啊,第一个流程,这个是第二个流程啊,这样是第二个流程。 好,这里是第三个流程。好,本来这三个流程是副项不干涉的,但副项不干涉的话,我们就要写三个流程啊,但是我如果用 fb 啊,一个代餐的一个一个代参数的块去做的话啊,或者用 fc 代餐的块数去做的话啊,我就 可以只写一段程序,我就写第一段程序,然后第二段和第三段,我因为他的动作都是一样的啊,只是参数不一样,对不对?这个参数报告输入参数,输出参数,我就可以用 fbfb 或者 fc 啊,因为这个数据量不是太大,我就可以用 fc 啊 去进行做一个块,把它做一个块之后呢,直接掉这个块啊,掉了三次,然后就实现这个这个功能,对不对?那是不是我节省了这个第二个疗程和第三个疗程的时间?我就那个程序我就不用做了,是不是? 说到这个,我们在信捷 p l c 跟三零的 p l c 都没讲这个问题啊,就是在西门子这一块儿,我就讲一个全新的一个模式啊,就用这个 app 这块儿带参数这样去做,然后呢? 呃,然后我们还会用到一另外一个,呃,另外一个流程控制方法,也是我们第呃第六个流程法啊,主要用第六个流程方法去控制啊, 比如说这个啊,用自卫复位法啊,这个来做一个主要流程。因为,呃,西门子里边他没有像三菱的 sfc 啊,他没有三菱的 sfc 啊,但是有是有,但是可能要另外的一些软件去做啊, 然后我们就不要去研究那个 fsfc 了,我们就用这个来去做这个呢,实际上呢跟那个 t 型图是一样的道理啊,我们之前有个,我们在那个编程分享里边也讲了,专门讲了这个方法, 它跟 s t l 是一样的道理啊,它跟 s t l 是一样的道理啊,第一步,第二啊,第一步的动作,然后转移条件,转移下一步,然后复位上这一步啊,就是这样一个公式去做它的一个顺序流程啊。 好,这几个我们就讲到这里,讲到西门子的模块化的这些名词,我们要用到什么东西?


大家好,今天我们讲一下 st 幺二零零幺五零零编程当中的 db 数据块的用法。当我们在学了 st 二百 smart 编程以后,我们再看 st 幺二零零幺五零零,我们就会发现里边有一个 db 块, 它有什么用呢?一下给整不会了,不要着急,我们一块来捋一捋,我们的 s t 二百 smart 编程当中呢,它有 it 模区, q 存出去, m 存出去, v 存出去等等等等。但是当你 b s t 幺二零零幺五零零,甚至以前老三买四百的时候,你会惊奇的发现 它们里边没有 v 存储区,那么这个 v 存储区它的意义是什么呢?就是在编程当中,我们用于存一些中介编量用的。 好了,这个 d b 块是否有同样的用法和用意呢?我们一块来看一下。大家看,这是一个 st 三百的一个程序,看,这里有一个 d b 一,这个是个数据块,这是当时编程的时候建的啊,还有很多它是 这里边呢,全是占用了两个字,也就是四个字节,所以看老是加四加四,加四加四 啊,它是用来做这个模拟量处理的,我们看这个第三十六个,这写着 p t 零零幺,这是第一个压力变速器啊,我们看一下这模拟量信号处理 看见没?第三十六个 p t 零零幺,就是 这个模拟量信号转变成一个 p o c 认识的实数的工程值,最后存储到 d b 一当中的 d b d 三六当中,然后呢,这个程序再被 o b e 教用 啊,模拟量信号处理 f t 二,这么一看呢,这个 d b 块儿还真有微存储区的意义。好了,我们今天内容就到这里,如果你喜欢的话就加个关注点点赞,有什么问题或建议请在评论区留言。

f c 和 f b 有什么区别?我猜你一定会说, f c 没有背景 d b, f b 有背景 d b, 对,没错,这是面儿上的区别,那么底层的区别是什么呢?这节课我来给兄弟们讲, 那首先我们要想搞清楚 f c 和 f b, 我们必须得清楚 p l c 的程序结构, 那首先呢,我们打开消息的编程软件国图 v 十八,在程序块里面呢,默认会生成一个 main 的循循环组织块,这叫程序循环组织块。 那么我们的程序呢,需要直接或者间接的在这个魅里面调用,或者直接写到魅里面,比如说我们写个点动控制,比如实在电梯,我们写十个点动控制啊,直接这样写下去可以 没有问题,但是如果我们想程序看你有结构,有结构,有条理,那么我们就要用到子程序。子程序呢,大致啊可以分为两大类,第一类,功能性的,比如说我这个项目上有很多工类, 有个叫退火工位、铸造工位、磨员工位、小车工位或者液压战, 那么我们呢就可以做一些功能类的,比如说我创建一个 f c, 或者创建一个 f b 啊,一般我们做功能类的,我们习惯创建一个 f c, 比如说 f c 一杠什么呢?液压站, 那么这个程序里面呢,这个子程序里面就全部是跟 ai 战相关的程序。那 如果说我们还有小车要控制,我们可以再创建一个 f c 二啊, f c 二杠小车啊,那这个里面呢,就会涉及到小车的启动,停止、正转、反转、自动手动。 那么这两个程序咱们写好之后呢,并不会被执行,要想被执行怎么办呢?我们必须得在主程序里面进行调用,这就叫调用,这样之后呢,这两个程序就会生效了 啊,咱们举个例子,比如说在小车里面呢,我们随便写一个点动控制 i 零点零,输出的 q 零点零,那么假设呢,我们不调用,不在主程序里面调用,只是把程序写到小车里面,那现在我们把 把程启动仿真,把程序呢下载到仿真里面去,我们看这个点动程序是否生效,答案是不生效,因为没有被调用,要想生效必须得调用之后才会生效啊,我们启动一下仿真啊, 我们单击一下这个开机,把仿真开机,开机之后呢,我们这呢点击开始搜索,就可以搜索到我们的仿真 p l c, 然后点击下载 啊,点击连接好,点击装载完成。 现在我们来监控 f c 二的程序,程序危险,并没有执行 这个叫功能性的子程序,有的同学说,老师是不是没有启动啊,我们启启动一下 cpu 再来看啊,是不是没有被执行啊? 要想被执行怎么办呢?必须得在内里面调用该子程序才可以。现在我们点击下载,把这个小车的程序呢装载到 prc 程序里面去,大家看现在是不是就可以执行了 啊,这叫功能型的,就是我这个紫盛玉就干一件事,一般这种情况我们选择 fc, 那什么情况我们选择 fb 呢?比如说我们在现场啊,有十台电机要做点动控制,或者做星三角 加启动控制,那么此时啊,我们就要做一个库,比如说做一个点动的库啊,点动库,那么库呢,我们需要多次调用, 那此时我们的都不能像这个成语写的是 i 零点零, q 零点零,因为一号电机可能是 i 零点零。 q 零点二,二号电机可能是 i 零点一。 q 零点一,三号电机是 i 零点二。 q 零点二 啊,那点就不一定了,那么我们想做一个通用的怎么办呢?我们可以利用上面的接口参数传递参数,这叫行参形式参数, 我们在这输入啊, i 点,我们起名称叫 i 点啊,或者叫点动啊,点动,那这个凹的铺子这呢,我们定一个运行 好,那编程的时候我们就可以这样来编啊,这样编这个上面写点动,把点动拖下来啊,把点动这个变量拖到这来,把运行这个变量拖到这来。好, 那这样呢,就可以了,我们现在再在那里面调用这个点动库啊,大家看,他是有引脚,哎,和刚才的子程序不同,他是有引脚,而引脚就是我们刚刚新建的两个引脚,对不对?哎,我们在这呢 输上啊, i 零点一啊,因为我们用过 i 零点零了,对吧? q 零点一,那如果我们有两台电机呢,我就再调一次,对不对?哎,那我在这输上 i 零点二, q 零点二,对吧? q 零点二,那这样我们下个程序里面我们两这两个都是可以 啊,你十台二,十台也都是这么做的,但是同学老师,这个太简单了吧,对吧?这个太简单,好,我们打开强制表啊, 打开江之宝,输入 i 零点一啊, i 零点 i 零点一。 i 二,好,我们点击监控, 然后呢,先强制为一啊,强制为一,大家看 q 零点零输出了啊,但是呢, q 零点一没有输出。 q 零点二没有输出,我们现在强制 i 零点二, q 零点二就会输出,对吧?我们做了一个库, 哎,那如果,那这个库可以用 fc, 也可以用 fb 啊,因为它很简单,很简单。逻辑太简单了,我们可以用 fc, 也可以用 fb。 但是假如说,同学们,现在呢?我换了要求了,我换成什么要求了? 你点我一下啊,你只要点我那么一下,我就要干什么啊?我就要启动十秒钟, 对吧?你不管点我多久,我反正要启动十秒钟,我让运行运行十秒钟。那这样写行吗?来,咱们看一看啊。好,那现在呢?我们再次的打开 me 啊,打开 me, 我们点击下载程序,点击装载,点击监控, 打开强制秒 分屏。现在我强制 i 零点二为一 啊,你会发现诶,怎么 q 零点儿? q 零点二, q 零点儿一都为一了,好像 国际执行不正常了。我没有让 q 零点一为一啊,咱们取消全部强制看看啊。取消全部强制,然后我们再次指强制挨零点一, 是不是逻辑极其不正常啊?是不是逻辑不正常?哎,为什么会出现这种情况呢?在这种场景下,同学们为什么会出现这个情况?原因就在于我们点同库出现了问题。 什么问题呢?你会发现这个 tp 是一个扩展脉冲流,他的 db 块的背景 db 居然是有具体数值的 d b 一,那么你说我这个 t p a d b 一被两次使用,被 i 零点二 q 零点二用了一次,被 i 零点三 q 呢?被多次 使用过,不能用绝对地址。那此时我们删掉它,我们重新插入一个 t p 指令 啊, tp 指,我们要选择什么呢?我们要选择参数实力,点击确定,但选择参数实力之后,这会伸出一个银角来 让我们添,比如说我们添十秒钟。好,现在我们这样写了之后,朋友们,我们再次打开魅影,发现呢,他爆红了,哎,从刚才没爆红,现在爆红了,因为我们需要啊,更新块调用,因为他更改接口了,点击确定 多了一个什么?多了一个 in iec timer 零 instance, 这个也是啊,为什么?这是我们刚才用的参数实例,那么 这两个的参数实力不能一致,那咋办?我们双击添加新块,添加一个全局 db, 点击确定 在全集 d b 里面呢?我们添加一个 t e 啊, t e 的数据类型呢?我们定义为 t i m e cam 数据类型,咱们看看行不行好不好?咱们先建一个啊,先建立一个 tam 数据类型,我把 t e 拖到这, 行不行?不行?报错数据类型不匹配。那咱们看看在接口里边他需要什么数据?哦,他需要一个 tp time 数据类型。好,我们把它复制到这 tp time, 现在你总该不报错了吧?现在不报错了,好,不报错。那我们紧接着捡了一个 t 二, t 二还是 t b time, 那这个 t 二数到哪呢? t 二数 到这来啊,输到这。好,现在好了,现在好了之后呢?不报错了是不是?好,我们双击版不是双击密,咱们把程序下载去, 现在应该就是正常执行了。好,我们再次呢,打开我们的强制表啊,打开我们的强制表,我们现在大家看,我们强制 i 零点一, q 零点一是一,对吧?那 q 零点二呢?还是保持啊?然后我们现在,哎,强制 i 零点二 q 零点二就会变为一, 是不是像我们取消所有强制,大家看是不是都变成 force 了,对吧?都变成 force, 现在是不是又可控了?那这样呢,有一个坏处是什么呢?就是我建一个啊,我我我用多次,我得啊,在这个数据块里边,我去建 多个啊,这个对应的,呃,参数实力,那此时啊,我们不妨来试一试 fb 选择函数块 fb, 那这个呢,我们一样定义为点动库啊,点动库 fb, 好,那此时我们双击打开点动库 f b, 同样的在这我们输入点动啊,点动 点动,然后呢,我们在下一个 alt 引脚里面呢, 把把拉大一点啊,拉大一点,在二的引角里面呢,我们输入一个运行啊,运行好接口建立好了,建立好了之后呢,我们一个常开一个 t p 指令啊,一个 t p 指令,大家看 t p 指令呢? 接好之后啊,他会让我选择,我直接选,我不选参数实力,我直接选择多重实力,点击确定,然后在这我选择一个线圈,这我同样输入点动 啊,点动,这呢我选择运行啊,这呢我选择运行,这呢我输入十秒钟啊,输入十秒。好,现在我们这个点动程序就写好了,我们在魅里面来调用一下啊,看看他和刚才那个长得有什么不一样好不好, 看到没有,同学们,他是长这个样子啊,咱们剪切掉啊,把这删掉,把它放到这来啊,重新重新来一个,重新来一个,掉一个电动扣,它会自动生成个背景 db, 看到没有? fc 和 fb 的区别,你看 fb 上面有个背景 db, fc 上面没有啊,这就是我的专用 db 啊,转影 db。 好,那么我们再调一个呢啊,再调一个呢,他又会生成一个背景 db, 背景 db 是唯一的啊,唯一的好,而且你会看啊, mc 这块呢,我不写变量他会爆红,他会有问号,你看我这不写变量他是不爆红的啊,他是不爆错,你看,我不写变量我就直接可以下载程序的 啊,我不写变量,我是直接可以下载程序的,而且不报错,对不对?我们监控程序 是吧?我们现在啊,你可以在这直接修改唯一吗?不可以的啊,不可以的,我们要想修改可以在这树上变量,也可以去做背景 db 里边操作啊,但是为了方便你们学习啊,我就不去。 呃,玩那个比较高端的啊,怕你们看不懂。零点四啊,咱们在这输入零点四,在这呢,输出到 q 零点四,在这输入 i 零点五,输出到 q 零点 点五。好,咱们点击下载, 现在是正常状态是吧?我们打开强制表啊,打开强制表,你看这个是不是就比刚才那个 f c 要省事了一点了,我就不用去那啊,再去 d b 里面去新建,他已经已经好了,对吧?好,我们在这输入 i 零点四, i 零点五。好,强制 i 零点四为一, 二零年 q 零 q 零点四为一了吧,然后呢,咱们的 q 零点五没有变,对吧? q 零点五是不是没有变啊?好,现在呢,我再抢这个二零点五 是不是 qpi 五遍了,对吧?然后呢,我现在取消强制啊,取消强制之后他们会,对吧?继续进行十秒钟,看到没有,十秒钟之后他就自己就停了啊,因为我用了一个扩展脉冲指令啊,叫延长,延长,延时十秒钟。好,那这节课呢?就给大家讲到这里,再见。

我发现很多人说自己能够很熟练的进行 step 编程,但是当我问他们,你知道什么是用 lb 块,什么是用 fc 块吗?大部分回答不上来。举个例子,当你想控制一台电机,你是使用 fc 块还是 lb 块呢?通常得到回答可能是使用 lb 块吧, f b 块应该是可以的。如果你再问一下,使用 f c 块是否可以实现相同的功能呢?啊?他们回答可能是,可能是有点近,好像也可以。 那么到底应该怎么选择呢?简单的说, l b 块呢,相当于高级语言,例如 c shop 的类。如果是一个控制对象,例如电机控制, 使用 lb 块比较方便。每次调用 lb 块则会生成一个背景数据块。实际上这个背景数据块呢,应该翻译为实力化的数据块,与高级元相匹配。实力化后生成一个对象,在 prc 中,对象的属性存储在这个实力化数据块中。 f c 块则相当一个函数或者一个方法,例如数值转换,量成变换等等等等。 f c 块编完了以后呢,嵌入到 f b 块中。除此之外呢, f c 块也可以作为一个子程序的调用,或者作为对象的预处理或者后期处理等等。 使用 lv 块,实力化的对象在 h 麦上都会有显示和控制的需求的,例如一路 pid 控制,在 h 麦上都有相应的控制面板,通过这个控制面板, 我们可以修改 tit 的参数,修改设定值,得到反馈值等等等等。通过上面简单的分析,估计大家已经知道什么时候使用 lv 块,什么时候使用 fc 块了吧。像这样非常有用的知识点在我们工业支持中心网站幺八四七平台上都可以找到,大家一定要来看, 有问题也可以直接在评论区给我留言,我会一一给大家回答的。接下来我会给大家分享更多的关于 ti 博图新的知识点,希望了解这方面内容的网友别忘了给我点一个关注哦!