粉丝3.6万获赞13.2万

大家好啊,今天呢,我们就讲一下怎么用这个 f c 块和 fb 块来做这个七宝亭, 那么前几节呢,我问过一个问题啊,就说你觉得齐宝婷是用 f c 块做还是 f b 块做啊?那么今天呢,我们再实现一下,首先呢,我们建立一个 f c 块啊, f c 块语言呢,什么都行啊, s l 也好, l d 也好啊,那么这个就叫 f c 杠一啊,随便随便名字啊,那这个块呢,我们建立好之后呢,在他的输入输出中要添加启动 停止啊,启动停止,然后输出呢?加个输出啊,然后呢,我们就可以写程序了啊,输出等于 启动 out 输出 and not and not not 停止啊, and not 停止 就一行程序啊,一行程序输出等于启动哦,输出 and note 停止。如果用提醒图表示呢?怎么表示呢?我们用提醒图再表示一下,那么启动停止 输出啊,其实就是这个啊,输出等于启动或者停止,按着 note 停止啊, 比如这是启动啊,这是启动,当然我没见变量啊,他会报警的啊,停止停止啊,然后呢,这个输出啊,就是这个这个啊, t 型图和它是同理的,那输出, 那么如果说我用这种方式来做这个起跑停,能不能实现呢?大家说能不能实现呢啊? m 二点零, m 二点一, m 二点二啊,大家来分一下,那么 f c 块的特点是什么呢?它的特点呢,就是不能进行保存数据,那不能进行保存数据,当我们每个扫描周期开始的时候,那么它的数据都 会变成零,都会变成零。而然而这个 f c 块的输出输入啊,输出输入还有个特点就是输入呢,只读不写,输出是只写不读啊,只写不读 就是输出,可以我们对他进行读,但是呃进行写入,但是读是读不过来的啊,读不过来的啊,有的时候这输出啊,这样写会报错,所以这样写啊,实际上他是不能达到起跑停的效果的啊,我们不相信呢,可以呃试一下啊, 通过这个小例子啊,我们了解,正好能了解一下输入输出的特性啊,到底是什么关系。 比如说我这里呢,按启动,这输出是 on 了,但是当我们把启动关掉的时候,输出要 off 了啊, you force force 又关闭了,所以这他就达不到输出的目的了啊。那同理,我建个 f b 块儿,比如说我建个 f b 块儿,不改名了啊。 呃,还是用 i c 而言嘛,为了统一,我建个 f b 块,大家看一下啊,如果用 f b 块来表示呢,那么它就能达到起跑亭的目的啊。 f b 块同样是启动 停止,然后 alt 是输出啊,输出,比如说我同样的语法,同样的这个程序,那么我 f b 块也是七宝亭,然后呢,我调用 f b 块,再调用一个 f b 啊, f b, 因为 f b 有背景数据,所以呢,我们启动 m 三点零, m 三点一, m 三点二啊,同样的啊,同样的 写法,那么我们看看,对比一下,看看 f b 块这个能不能进行起跑起跑停,然后修改为处,那么它就会昂啊,然后修改为 force, 大家看,现在这个 前面输入呢,都是 force, 都是 off, 但是输出已经变成昂了啊,变成有输出了,然后我们再把这个停止在 操作一下,那么他就会断开了啊,这里我们就看到了啊,我们 f b 块 f c 块程序是一样的,但是呢,他的, 呃, f b 块呢能保持输出, f c 块不能保持输出,为什么呢?就是因为 f b 块有个背景数据,他会把输出这个值啊, 一旦他保持昂了啊这个输出,那么每个回合呢,这个输出呢,都会读取上一个扫描周期的状态啊,然后呢进行呃比较, 因为上一个是输出是 on 的,那么这个回合呢,因为 on 和 off, on 和启动呢,是一个凹的关系,然后再加上没有按停止,所以呢,我还是输出,而 f c 块不同, f c 块呢,每个回合呢, 他都会清零啊,因为他不能保存输出的值,当我们周怎么周期开始的时候,输入输出停止都会清零,所以呢,他就实现不了起保停的 这个效果啊,实现不了这个七宝亭的目的,我们想要做七宝亭啊,七宝亭,那么怎么让他能实现七宝亭呢?怎么让他实现七宝亭呢?大家可以思考一下啊,怎么实现七宝亭,我们把这个输出啊改一下, 改到音 alt 中啊,音 alt 中,我们只要把输出改到音 alt 中,我们就可以实现七宝亭了,为什么呢?因为这个音 alt 呀,是可读可写的啊,可读可写的,我们就用外部变量来存储它的输 输入输出状态啊,输入输出状态,那么我们再回到这个块中啊,因为我改了,变亮了啊,更新块调用, 然后这时候呢,我会发现输出在左边,然后很多同学在潜意识里就觉得,哎,这个在左边,他怎么能叫输出呢?我们的输出不是都在右边吗?啊,不是的啊,就是不管在左在右,这个变量定义的是输入输出,还是说输音 out, 那么他就具备音 out 的属性,不管他在哪里啊,不管他在哪里。所以呢,我们下载到我们的 prc 中,我现在是仿真啊,然后我们再看一下这个七宝亭启动 啊,这个 m 二点二是不是变成 on 了处啊?然后呢,关掉,启动,他还是 m 二点二,还是在 昂的位置?然后呢,我们停止啊,停止,他就 m 二点二就 false 了啊, false 了,停止。所以呢,我们通过把这个输出变量啊放到音 alt 中啊,放到音 alt 中, 就可以用 fc 块实现起跑停。那他实现的什么?为什么能实现呢?因为这个输出啊,现在是音 out, 他既可以当输入变量,又可以当输出变量,就说他可读可写,当每个扫描周期开始的时候,他是 呃读取外部音 alt 状态的状态,变亮的状态。然后呢,呃进行程序,执行程序,执行程序完毕,再把这个输出结果呢,执行给这个音 alt 的变亮。所以呢,我们可以理解成什么呢?程序开始它是读的 啊,读的程序开始是读的,读输出状态,读输出状态,他是多少等于一还是等于零啊?程序开始发现他等于一了,那么我成这里呢,就会变成一, 启动是零, note 停止是一,所以呢,它的结果就是一,那么就会保持输出状态 啊,如果程序开始呢,他读的是零啊,那全是零,那自然他就是零了啊。所以呢,如果想用 f c 块实现这个 习宝婷的效果呢,要把这个输出点呢放到音 out 这个变量中,而不是 out 变量,那因,因为他没有背景数据,不会保存他的内部变量状态啊,所以呢,他必须要读取外 部的变量状态才能让他进行保持啊,这就是 f c 块、 fb 块的一个区别。如果用 fb 块,因为他有背景数据,每个回合呢,这个输出啊, 都会保存起来啊,保存起来到下一个扫描周期的时候,我还是上一个上一个扫描周期的状态,所以呢,他就会 能实现保持的功能,而 f c 块实现不了保持的功能,它依靠的是外部变量进行保持啊,这就是它俩的一个小的区别啊。通过这个案例,我们理解了 in alt 这个变量 到底怎么用啊?怎么用,大家可以自己试一下。如果你像 f b 块这样写,他肯定是不可达不到起跑亭的目的了, 那如果把这个输出放到音 alt 位置,那它就可以达到七宝亭的目的啊,这样我们就实现了我们要的啊。

下面我们看一下在博图里边是如何使用 fc 的,那么 fc 呢,它是一个程序块,也叫做函数,以前的版本呢叫做功能。首先呢我们点添加新块,然后选择 fc, 这样起个名字点确定,这样我们就建好了一个 fc 块。那么这个 fc 块呢,里边是可以编写程序的,但是这个程序如果编写出来之后,把它下到 plc 里去之后,他是不会被执行的,需要在你的组织块 ob 一里边对 fc 进行调用,这样程序才能被扫描到。 那这个 fc 呢,在使用的时候也分单次调用和多次调用啊,比较简单点呢,就是用 fc 来做一个子程序来用,就是在 fc 里边编程,编完程序之后呢,在 ob 里边只调一遍啊,这样呢对你的 腾讯一个结构化管理是比较有好处的,比如说实现一个功能啊,可以变到一个 fc 里边只电用一遍,那么如果需要电用多次的时候呢,那这个 fc 的里边的参数呢,就需要改变,那怎么改变呢?需要在 fc 里边 他的接口数建立输入和输出接口,在调用的时候把你的参数从外边传到里边来,然后直行我演示一下啊,首先呢我们建一个按钮和指示灯,这么一个输入和输出接口 好,当你建立好结果之后呢,我们看这个 fc 在调用的时候 好,它外边就有接口了,外边可以填我们的实际的 io 的地址 在里边呢,我编程的时候呢,可以简单的编个小程序,编的时候呢,要用到这个接口,把接口拖拽到你的指令上面 啊,这样的话呢,这个 fc 块就可以进行多次调用,每次调用的时候呢,都可以选择不同的地址来添加,比如说第一次调用的时候啊,我选择按钮一和指示灯一, 第二次调用的时候呢,选择按钮二和指示灯二。 好,那这样的话呢, fc 一雕两回啊,两回的地址都不一样, 这两个 fc 块也不会产生冲突。那么如果在 fc 里边需要用到定时器,那这个问题就比较复杂了, 我们知道一个定时器是不允许重复使用的,比如说我做一个接通延时啊,这个时候如果新建个 db 块,我选择叫 db 一,叫定时器 三秒钟啊,这样的话呢,这个 fc 一掉用了两回,也就是说两个按钮 同时处发一个定时器,也就是说刚才建好的一个 db 一定时器啊,这样的话呢,这定时器是冲突的啊,是用不了的,那怎么解决呢?那么这个定时器呢,我们也需要从外边去调用,它 通过接口把定时器这个地币块从外边调用进来,我们在这个银奥特里边建立一个 定时器的一个接口,把 db 块从外边引入到这个 fc 里边来。定时器 啊,这个类型呢,是定时器的一个类型,是 ic timer 这个类型啊,这样的话他接口就建成了,把接口拖拽到定时器上面来 啊,这样的话呢,这个定制器用到的地币块没有指定,只是指定的接口,需要调用的时候在外边进行添加。好,我们看在外边 这个因为他借口改变了,所以他现在块报一个错误,红了,我们选择这个更新啊,更新一下这个块啊,这样的话就多了一个借口啊,注意,因为这个借口呢不是开关量的,所以他是黄色的,如果 是布尔型的一个接口就是黑色的。啊,这样的话,我们我们第一次调用的时候使用 db 一啊,如果第二次还使用 db 一的话。啊,这又错了,这和刚才我们在里边都使用 db 一是一个道理,那这时候怎么办呢?我在第二次调用的时候, 我新建了滴滴块 定时器二,然后选择类型的时候呢,要选择 iz timer 的类型,也就是定制器需要的一个地标类型。 好,现在我两个 db 块了啊,在第二次调用的时候呢,把定时器二这个 db 块从那关键引入到里边电视器当中 啊,这样虽然是一个 fc 块掉了两回,但是两回使用的 db 块不是一个,所以说定时器是不会冲突的 啊,这就是 fc 块的两种用法,一种是只掉一次当子程序用,这样呢,不需要剪接口, 像这种呢,掉有两次或者三次以上的里边的定制器啊,计数器啊,还有边缘处罚的中间变量都需要从外边的关角引入,要不然就会产生冲突。

薄土中 f c 的接口如何理解?前几天有个私信问我,他的 f c 块仿真可以正常运行,但为什么语法报错? 先来看一下 fc 的接口类型,包括四种,分别是 input 输入型、 output 输出型、 in alt 输入输出型、 temp 临时变量和 constant 常亮。其中前面三个是在封装 fc 后会出现在块儿上的可以连接外部变量的接口。输入型和输入输出型会出现在 fc 块儿的左边,输出型会出现在 fc 块儿的右边。 以图示 fc 为例,做一个测试,把输入一的值至为一,可以看到输出一和二、输入输出一和二以及临时变量一和二都被至为一, 一了把输入一的值复位为零,上述所有变量的值也都为零了。可以得出如下结论,在 fc 内部音谱的变量只能读不能写。写指令中变量会变成橙黄色警告,且无法写入。 alt pro 的变量只能解不能读。使用读指令时,虽然实际可以读取,但该变量会变成橙黄色警告提示,因 out 变量在 fc 内既能读又能写。 temper 变量既能读又能写,但它的值不能保存到下一个扫描周期,读取之前必须在本扫描周期内先对其进行复制。不懂这个知识点的请点一下,关注下个视频详解。最后来看粉丝私信 这个程序变量水机式测点故障定义的是 output 类型,却要执行被读取的功能,所以显示橙黄色警告。 解决这个问题有两种方法,第一是把该变量定义成 in alt 类型,第二是使用 temp 变量与该变量同步,并在读取回路中进行转界。 最后留个问题,多次调用的 f c 如何实现边沿触发和线圈保持?下个视频解答。

如何把你在博图里编制好的 fb 或者 fc 分享给其他人,或者说在其他的项目里进行直接使用呢?给大家啊提供一种方法。而这里我新建了一个 fb, 写了一个简单的 sl 程序,就是联动,是不是来把它关掉, 这个就是我们要对外移植的一个 fb, 是不是?那么我选个右键,这里有个从快生成源啊,仅我们所选的这个快进行啊向外的移植,是不是啊?点击一下,他就提示我们,你要把这个快 啊移动到哪里去啊,给他起个名字啊,都没问题,然后保存啊,我这里因为有个同名的文件啊,就选覆盖好了,那么在我们的桌面上啊,就有这个一个文件, 那么这个就是我们导出的快啊,里边就是程序,是不是啊?好,我把它关掉,然后你在新的项目里如何进行导入呢?对吧?好,我先把这个本来的 fb 给它删掉啊, 这个地方有一个外部原文件啊,选择新的外部文件,把这个刚才导出,速度快,给他打开啊,打开之后右键就有一个从圆生成,快啊,确定 大家看啊,他就倒成 fb 了,双击这个 fb 啊,就是我们刚才啊倒出去那个程序,对不对?哎,这样其实就是完成了你这个 fb 或者 fc 的移植。好了,先给大家介绍到这里,喜欢的点赞收藏加关注哦!

如何才能使 plc 程序更严谨?一定要耐心看完这个视频,最后一条非常重要,想要这个程序的请私信我。前几天发了个气缸开关控制 fc 的视频,有个留言说气缸的控制不就是一个开一个关吗?来考虑几个问题。 第一,需不需要手自动切换一个完整的程序应该包含手动和自动模式,这样才能适应调试和联动模式下的分别。调用程序就是做个并联分支,手自动分别用一个变量,如图所示。 第二,自动模式切换为手动的瞬间,是否要保持气缸位置不变?自动运行的设备切换至调试或手动模式的瞬间,为了保证安全,气缸的位置应该要保持不变。程序 就是切换至手动模式的瞬间,判断气缸的状态,如果已经开启,则至未手动开的命令,否则复位。第三,开或关命令发出后,如果位置开关没有反馈,是否要发出报警 这个功能尤其在自动模式下,需要。假设自动运行时,某个电机需要在气缸打开以后运行, 但是由于没有气缸开到位反馈,导致电机不自动运行,工人很难判断是什么原因。但如果此时气缸发出报警,故障原因就很明确了。 程序就是在开后关的命令输出后开始计时,如果限定时间内位置开关没有反馈,则至未报警。变量。 最后留一个问题,这里为什么不直接用开输出的变量来做常开或常闭触点,而要加一个中间变量呢?下一期视频来解答。

薄涂 f c 中边沿触发和线圈自锁的功能如何实现?临时变量的值不能保持到下一个扫描周期又该如何理解?这是个系列视频课题,包括 f b、 f c 的区别及选用 fc 的接口。如何理解 fc 中如何实现边沿触发和线圈自锁?辛苦大家点点关注。以图式上升颜值令为例,并测试他是比较变量技术的当前值与上一次扫描的值。 上一次扫描值存储在变量边沿中,如果当前值是一,上一次扫描值是零,则获得了一个上升延。后面的 idd 指令会执行一次触发次数加一,再次是计时 数,变量由零到一,则触发次数再次加一。如果把这个边沿变量换成临时变量,测试一下效果,发现触发次数并非只增加一次,证明是无法捕捉到上升沿呢? 这就是因为临时变量的值不能传递到下一个扫描周期。在本周期内,他记录了变量技术的状态,但是到下个扫描周期时,他的值已经不是之前记录的状态了。 必须注意,这个用来记录状态的变量边沿最多只能使用一次,不可重复使用。再来看一下线圈自锁的功能如何实现,做了三种测试,第一是用 alt 类型的变量做自锁,上一期视频讲 过, out 类型的变量是不允许读的,所以显示成黄色警告。第二种是用临时变量做自锁,但临时变量的值不能保持到下一扫描周期,因此也无法实现自锁。 第三种是用英奥特类型的变量做自锁,测试后发现是可以实现该功能的。这是因为英奥特变量可读又可写,且通过 fc 的接口连接了外部全局变量,因此可以跨周期保持。 总结一下, f c 中需要边沿触发或线圈自锁时,定义应 alt 类型的接口连接外部变量即可。

今天我们讲一下博图软件中的定时器操作指令,我们常用的定时器操作一共有四种,分别为声控外充 tp、 接通延时 t o n、 关断延时 t o f 以及时间累积器 t o r。 如果我们学过继电器线路设计,那么我们对接通延时以及关断延时可能并不陌生,因为它就是我们常用的通电延时时间继电器以及断电延时时间继电器。这里我们就先讲 t o n 通电延时时间继电器, 通电延时时间继电器,它的动作什么呢?延时动作顺时断开, 那么我们使用的时候可以将它拖拽到任意我们想要添加的地方,松手后会有一个弹窗,这就是我们的电源选项,就在这里可以更改它的名称, 那这里就不更改了,这里我们添加过了,所以把它删掉。然后呢,添加完之后,它一共有四个引脚, 左边两个是输入,右边两个是输出。前面我们也可以添加条件,比如 m 五点零,那么其中 i n 称之为它的势能,也就是我们时间继电器的线圈。 当五点零得电以后, i n 引脚得电,那么这个时间继电器就会开始延时,其中 pt 为我们的预设时间,我们可以以毫秒为单位直接进行一个输入,比如说五百就是五百毫秒, 当然也可以直接输五 s 就是 五秒钟,也可以按照它现在显示的格式, t 警 三 m 三分钟、三 h 三小时、三 d 三天都是可以的。假设我们这里出了一个十秒钟的 一个时间,那么目前它所描述的意思就是当五点零闭合以后,按得电通电延时时间节点开始延时, 当它的通电时间大于等于我们的预测时间 p t 的 时候, q 就 会输出 e t 就是 我们这个 t o n 这个块的通电时间,就是我们的通电时间。 然后呢,我们当前时间大于等于我们的设定时间之后, q 就 会动作,那么它怎么使用呢?两种方法,第一种直接使用 d b e 的 q 是可以直接选择的,但是一般来说我们不会直接调用,因为时间继电器它是不遵循扫描日期的,所以说很多情况下它是会出现故障的,那么我们怎么用呢?大多情况下,我们在后面加了会加一个中间量,加一个中间继电器, 这样的话就约等于使用了这个时间继电器的辅助触点长开长闭都是可以的,都是可以的。 那么这意思就是当五点零的线圈得电以后,它常开闭合, i n 得电时间继电器开始延时,时间到达我们的设定时间十秒钟之后, m 六点零线圈得电常开,闭合常闭断开。这样的。 嗯,这第一种,也就是我们的通电延时时间继电器动作为延时动作顺时针断开。第二种关断延时,也就是断电延时,断电延时时间继电器 顺时动作延时断开。一样的,这里我们用,比如 m 五点一吧, m 五点一, 那么六点一这里我们也设一个十秒钟,那么它的动作是什么呢?就是当五点一常开闭合以后, q 会直接开始输出,开始动作,也就是六点一线圈会直接的电。 当五点一断开以后, p t 呃,不,当五点一断开以后,这个断开延时,断电延时时间计算器才会开始延时,也就 e t 才会开始增加,并且 q 会仍然保持动作。 当我们断电时间大于或等于我们的预测时间 p t 的 时候, q 才会停止输出, 也就是说,我们会额外再输出十秒钟,而上面这个是我们会少动作十秒钟。比如说,我一呃第一个通电延时,我的 i n 得电了三十秒钟,那么我 q 只会输出二十秒钟。 同样的,我 t o f i n 得电了三十秒钟,那么 q 会动作四十秒钟。这样的, 接下来另外一个生成脉冲 i n 使能一样的 m 五点二动作 m 六点二 十秒钟。那么这个是什么意思呢?当 i n 得电以后, 六点二会直接进行输出,并且 e t 会直接进行计时计时,倒计时十秒钟就倒计时我们的预测时间,当时间到达以后, 当时间到达以后, q 就 会直接停止动作,无论 i n 是 否还在得电, q 都会停止动作。也就是说,当 i n 只是它的一个启动信号,只要 i n 得一次电,那么 q 就 会输出我们的预设时间。且在 q 输出过程中, i n。 无论如何变化, q 只会以 首次得电的那一个信号为基准去进行动作,直到 q 停止动作。也就是说,当 q 为零的时候, i n 再次 由零变为一,也就是再次得电,那么我们的 q 才会再次重新开始计时。还有最后一个时间累积 实验的变压器 t o r 看到它与我们的通电延时 t o n 非常相似,不过它多了一个功能,就是复位功能 r r 引脚一样的 i n 齿能 m 五点三 输出, m 六点三, m 五点四,十秒钟 一样的。当五点三的电以后, t o i n 的 电,然后呢, t o r 开始延时,延时时间到达延时间大于等于 p t 的 时候,六点三动作,那么它 是否与我们的 t o n 一 样呢?其实不一样的地方就在于这个 r 就是 当 i n 断电以后,它的时间并不会清零,并不会清零, 也就是 q 会仍然动作累积型的。比如说我们当前计时为零秒,那么如果我让五点三通电,三秒的时候, 三秒之后断开,那么它的时间就会保持在三秒,我们再次让 i n 得电,它就会以三秒为基础继续往上加。假如说我们让它的时间就会保留在七秒, 我们再次得电,它会以我们刚刚结束的时间为基础继续累加,直到它的累加时间大于等于我们预示时间 p t 的 时候, q 会一直输出,此时我们断开 i n q 仍然会继续保持,因为它的动作只看 e t 以及我们的累积接通时间是否大于等于 p t, 那它怎么复位呢?只有让 r 引脚得电,也就是让五点四由零变为一,那么我们的 e t 才会清零,而且是反复清,一直清。也就是当五点四为一的时候,我们让五点三得电,它的时间也不会进行增加, 也不会进增加,这是一个累加型的。这就是四种定时器的操作,通电延时时间继电器,也就是以延时动作顺时针断开。第二种,断电延时时间继电器,也就是 顺时动作延时断开。第第三种,生成脉冲,也就是当 i n 由零变为一的时候, q 会输出我们预示好的时间,直到呃 q 停止输出以后,我们再次让 i n 由零变为一,我们这个时间继电器才会再次动作, 还有时间累积,当我们的 i n 累积得电大于等于我们的预测时间 p t 的 时候,我们的 q 才会进行动作,当我们的引脚而得电的时候,我们的累积时间就会清除。 然后呢,这里如果你们想练习的话,可以做一个呃数码管的显示,比如按下启动钮,左侧数码管会在零 数字零一二三四五零之间来回循环任意时刻按下停按钮,数码管直接熄灭,直接熄灭,大家可以做一做。

今天给大家分享薄图中 f c 的两种形式以及用法。第一种是带接口的 f c, 一般用于多个同类设备的控制,比如这个设备上有七十个控制逻辑相同的气缸, 要实现手自动开关等功能,区别只是用于开关的变量不同。最原始的方法是直接将这个程序写七十遍,但这样会使程序看起来很凌乱,而且需要更改。控制逻辑时也需要更改七十次。 这种情况就可以将这个程序封装成一个带接口的 fc, 并多次调用,给大家演示一下实现过程。 通过接口连接不同气缸的变量,这样程序看起来更加整洁。如果需要修改逻 机,只要一次性修改,就可以更新所有气缸的功能了。第二种是不带接口的 fc, 一般用于组成完整程序的分项功能。比如一个设备的程序应该有初始化、手动模式、自动模式、暂停模式等功能, 可以将每个功能写成一个独立的不带接口的 f c 在主程序中进行依次调用,这样会使程序框架更有条理,遇到问题的时候也更容易快速定位故障点。最后我们再来总结一下。
