万泉河
WX:ZHO6371995,欢迎+
级别: 略有小成
精华主题: 0
发帖数量: 130 个
工控威望: 246 点
下载积分: 831 分
在线时间: 11(小时)
注册时间: 2021-06-11
最后登录: 2024-11-07
查看万泉河的 主题 / 回贴
楼主  发表于: 2022-01-23 11:00
【万泉河】征集FB的编程题:获取SID

我在推广宣传PLC编程烟台方法的时候,总有人疑惑是在做了什么。

讲解是用计算机编程中的面向对象的方法来进行PLC编程。

那么在PLC中是用什么手段实现的面向对象呢?

回答是用FB做成库函数应用。

然后对方瞬间就恍然大悟了, FB啊,不是什么新玩意,我们20年前就会用了。你这把FB换个高大上的名字,也太能忽悠人了。

原来做标准化就是开发FB, 那我们正在做,或者早就在自己做了。你这做的没啥稀奇的。

好吧。

如果对方既没有感知到自身的痛点,又没有机会见过真正的应用实例,那说破了嘴皮子对方也想象不出是啥样子。毕竟,PLC编程烟台方法的实现是古今中外开天辟地以来都没有过的,大部分的PLC工程师包括我自己入行开始,都是从模仿入门的,没有完全创新的经验,在没有见过猪跑之前让他们想象出猪肉的味道,确实有些难度。  

我当然知道,PLC系统中早就有FB功能块的功能,也早已经用了二十多年。但我自己能用面向对象的方法来做PLC程序,也不过近2-3年的事。

然而,我同样也知道,我们许多同行,尽管可能不懂得计算机高级语言编程,但对FB的各种理论技巧还是很熟练的。我也见过一些比较复杂的PLC程序,看到里面非常丰富的FB的用法,但从中很明显地可以看出来,设计者对FB原理是非常懂,然而却没有面向对象的理念。

也有过比较熟识的西门子网站的驱动板块的版主,在了解到我的标准化编程理论之后就非常高傲地表示,即便不算驱动方面的技能,仅仅拿PLC编程的经验和水平PK,对我也照样是不服的,完全可以一比高下。

我也只能摊手认怂,不跟你比。

现在抛开面向对象,抛开标准化编程,有一道比较有意思的题目,抛出来给大家练练手,可以算是检验下自己对FB的理解深度,同时对自己也算做个知识技能的储备。

临近春节假期,大家项目工作应该已经不太忙碌,可以有空闲时间为自己充充电了。这里算是给大家提供一个学习方向。

题目的原委是这样的,在PLC项目中FB功能块的调用,通常被称为实例,而一个FB有可能被调用多次,那就是产生多个实例。
现在需要对每一个实例做出ID的标识,即为SID

比方说一个FB在整个OB1环境中被调用了10次,那么我希望它们分别得到从110连续且不相等的ID号。

这个功能的实现,应该是一个完全封装好的独立完成功能的函数块,FB或者FC。当然,因为它的实现还是比较复杂,我认为FB实现会比FC实现能方便些,名字定义为GetSID


有了这个FB ,那么在需要区分SID的项目设备FB中,只需要调用一次函数,就可以得到了SID

最好的结果是按照OB1执行的顺序,第一个调用的ID=1,第二个为ID=2, 最后一个ID=MAX

然后如果PLC调试过程中实例有增加或减少,不管是中间增减还是尾部的增补,都应该能刷新更新。

有人会疑问得到这个SID有啥用?

我顺手就可以举例出好多个应用场景。比如。。。。。再比如。。。。,以及。。。。

然而,我非常了解咱们许多同行的调性,如果我把应用举例描述详细了,很多人会跑题去探究我所举例具体的应用,去用他自己的方式千方百计绕过SID,找方法实现。然后回过来再跟我证明获取SID无意义。

所以具体举例就不提了。标准化学习营的学员,可以积极参与实现这个应用,将来你们在具体的项目中会遇到这种需求的时候,我会适时与你们讲解。
(这里也透漏出个信息,以往的标准化应用分享项目中并未用到SID

为了鼓励同行朋友积极参与,对成功实现功能并投稿的朋友,给出一点彩头。奖励方式三种,获奖者三种之中任选一种:

1, PLC标准化编程例程优惠1000元,所有品牌任选。
2, 《万泉河著PLC标准化编程原理与实践》书稿电子加密版。
3, 现金100元。

然后是具体要求:

1, 可以使用主流PLC任一品牌实现,不仅仅西门子, 也更不仅仅TIA PORTAL
所以这是一场面向全行业的应用比武。我相信所有品牌的PLC,都可以实现。

2, 编程语言建议使用SCL语言。因为这样更会容易跨品牌跨平台移植。
这也是我所以可以接受全行业所有品牌的原因。同时大家未来也可以了解,任何企业,只要实现了标准化编程,是可以实现跨平台跨品牌移植的。比如2021年的断货危机,换品牌就易如反掌。不会因为担忧品牌更换而所有程序从头再来。

3, 如果实在不会使用SCL,或者所用的PLC不支持SCL 那么也可以用LAD来实现,并投递交稿。不过,将来的奖励需要减半。

4, 为了方便检查评审功能,做好的程序块请录制运行监控视频,动态显示运行结果。交稿时除源程序外,视频文件也一并提交。

5, 投稿截止时间为2月底,即现在起到正月期间均可参加。 只要认证功能完整有效,均给予奖励。有意投稿者,可以先加我微信:zho6371995,进行预报名。报名后在截止期之前完成正式交稿都可以。到时如果有特殊情况需要延时,可以提前打招呼获准。

6, 预报名限制人数100人, 正式获奖人数限30人, 按交稿先后顺序且功能正确者排名。

为了堵住一部分不怀好意的同行的嘴,提防他们骂我低价购买别人的智力,或者说我自己的问题没有能力解决,换了个方式来找别人帮忙解决。

我截图展示一下我已经实现的效果:


                              


我这里SID是得到了,ID1的位置是随机的。并没有严格地让第一台必须为1因为我这里应用谁是ID=1不重要,所以就没有特意去实现了。

最后提醒大家多去读我以往发表的文章,包括公众号《PLC标准化编程》以及西门子论坛我开设的专栏《万泉河讲故事》,找不到路的百度或者微信搜一搜【万泉河】我的所有文章标题都带了这样的标识。

好多文章,发表了很多年,逐渐都被遗忘了。然而最近,有好多朋友提出的问题,一看都是我在多年前发表文章中提及的技术或问题。

比如最近连续两次不同的场合,针对网友的提问推荐了文章
【万泉河】PLC编程求3/8的题目
http://www.ad.siemens.com.cn/club/bbs/PostStory.aspx?a_id=1256568&b_id=80&s_id=157&num=34#anch

问题都得到了解决。说明,他们还是文章读少了。

这篇文章看来对同行如此有用,那就在本文下面再发一次。以前已经读过的请再次温习一下。



苏州工人
级别: 工控侠客
精华主题: 0
发帖数量: 252 个
工控威望: 2175 点
下载积分: 13180 分
在线时间: 201(小时)
注册时间: 2021-07-23
最后登录: 2024-12-23
查看苏州工人的 主题 / 回贴
1楼  发表于: 2022-01-24 10:58
【万泉河】PLC编程求3/8的题目
看了这个,感觉挺好笑的,三菱就有对应的指令SUM 用来判断有ON位数,我不知道别的PLC有没有这个指令,但自己用的PLC连编程手册都不看,不看详细的,至少指令表过一遍吧