中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

PLC论坛

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 PLC论坛 → 浏览主题: 【万泉河】征集FB的编程题:获取SID
发表新帖 回复该主题
回帖:44个,阅读:2332 [上一页] [1] [2] [3] [4] [5] [下一页]
* 帖子主题:

【万泉河】征集FB的编程题:获取SID

分享到
2180
万泉河.
文章数:910
年度积分:65
历史总积分:2180
注册时间:2009/12/4
发站内信
发表于:2022/1/23 11:06:19
#0楼
【万泉河】征集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次, 那么我希望它们分别得到从1到10连续且不相等的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人, 按交稿先后顺序且功能正确者排名。

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

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


附件 ID162.jpg


我这里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


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

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






PLC标准化编程
8414
qdppo
文章数:1174
年度积分:452
历史总积分:8414
注册时间:2016/2/13
发站内信
发表于:2022/1/23 12:33:42
#1楼



。。。。。我放假了,抢个沙发坐坐。



        楼主这一年也辛苦了!。。祝楼主在新的一年里
        生意兴隆,日进斗金!


        好了,继续游戏。。


        END
978
Reder7391
文章数:9
年度积分:50
历史总积分:978
注册时间:2014/12/16
发站内信
发表于:2022/1/23 12:36:42
#2楼
这样才有意思嘛
12035
蛇会大学
文章数:4491
年度积分:361
历史总积分:12035
注册时间:2015/12/14
发站内信
2018论坛分享达人
发表于:2022/1/23 18:00:18
#3楼
FB和FC没用过,一边说不限定PLC品牌,一边又要求读取FB的调用次数,这算自打嘴巴吗?
我不会西门子也不打算学西门子
你这个人是跪久了?眼里就只有西门子吗?
西门子是你爹?
敏问找算丁亏楼累
敏问找算哭哲累嘿
敏问够算恐哈做累揍忍没催妹
比漏累伤醒更八音舍黑
我晕能以身问晕陪笨累
14447
xuhuifox
文章数:2690
年度积分:394
历史总积分:14447
注册时间:2005/3/25
发站内信
发表于:2022/1/23 20:20:27
#4楼
以下是引用蛇会大学2022/1/23 18:00:18的发言:
FB和FC没用过,一边说不限定PLC品牌,一边又要求读取FB的调用次数,这算自打嘴巴吗?
我不会西门子也不打算学西门子
你这个人是跪久了?眼里就只有西门子吗?
西门子是你爹?
好像三菱也有这啥的!
欧姆龙也好像有哟。。。。。。。。。。。。。。。。。。。。。。。
估计是卖不动了,有人搭白,就优惠表情表情表情
                 一切为了生活
36773
知道一点
文章数:21904
年度积分:1192
历史总积分:36773
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2022/1/23 22:06:37
#5楼
怎么看着这么搞笑
快乐 幸福 自由 比什么都重要
2443
724886236
文章数:124
年度积分:130
历史总积分:2443
注册时间:2017/4/20
发站内信
发表于:2022/1/24 9:19:26
#6楼
PLC编程求3/8的题目
这个你还是想复杂了,西门子M1.0-M1.7代表8个状态,只要MB1>=7,就是3/8成立了
三菱M0-M7代表8个状态,只要K2M0>=7,就是3/8成立了
[此贴子已经被作者于2022/1/24 9:21:08编辑过]
2443
724886236
文章数:124
年度积分:130
历史总积分:2443
注册时间:2017/4/20
发站内信
发表于:2022/1/24 10:06:10
#7楼
征集FB的编程题:获取SID

如下图,如果我理解是对的,希望你提些有技术含量的技术问题。



附件 微信图片_20220124100427.jpg

附件 微信图片_20220124100449.jpg
36773
知道一点
文章数:21904
年度积分:1192
历史总积分:36773
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2022/1/24 13:10:29
#8楼
以下是引用7248862362022/1/24 10:06:10的发言:
征集FB的编程题:获取SID

如下图,如果我理解是对的,希望你提些有技术含量的技术问题。

附件 微信图片_20220124100427.jpg

附件 微信图片_20220124100449.jpg

你也准备调用N个FB? 真的很香吗?
西门子/三菱估计也有类似欧姆龙BCNT指令,一条指令解决的问题搞这么复杂作甚

与楼主3/8类似的题目
http://bbs.gkong.com/archive.aspx?id=490433&page=1
总结下来
1.穷举法----没经验,不熟悉指令系统的常用
2.巡检法----总结出来的通行办法,万先生的3/8同样适用
3.指令法----熟悉PLC指令,简单实用
现在在加上
4.万先生的FB累加法----需要nnn多位时PLC还能用吗?

标准化程序就是简单的事情复杂化?

一个完整的控制程序只靠FB是不可能完成的,这也是万先生一直不敢正面回答我曾经提的问题之根本,这里又在FB这个那个有意思吗
快乐 幸福 自由 比什么都重要
36773
知道一点
文章数:21904
年度积分:1192
历史总积分:36773
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2022/1/24 13:15:35
#9楼
以下是引用7248862362022/1/24 9:19:26的发言:
PLC编程求3/8的题目
这个你还是想复杂了,西门子M1.0-M1.7代表8个状态,只要MB1>=7,就是3/8成立了
三菱M0-M7代表8个状态,只要K2M0>=7,就是3/8成立了
[此贴子已经被作者于2022/1/24 9:21:08编辑过]

请教如何实现?

附件 image.jpg
我想到的是这样
试了一下,做不到8中有>=3
快乐 幸福 自由 比什么都重要
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006