• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
万泉河
WX:ZHO6371995,欢迎+
级别: 略有小成
精华主题: 0
发帖数量: 116 个
工控威望: 226 点
下载积分: 783 分
在线时间: 10(小时)
注册时间: 2021-06-11
最后登录: 2024-05-04
查看万泉河的 主题 / 回贴
楼主  发表于: 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

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

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



hefq
级别: 家园常客
精华主题: 0
发帖数量: 607 个
工控威望: 801 点
下载积分: 1916 分
在线时间: 1479(小时)
注册时间: 2008-07-03
最后登录: 2024-05-05
查看hefq的 主题 / 回贴
1楼  发表于: 2022-01-23 13:12

uthman
QQ:3749615
级别: 家园常客
精华主题: 1 篇
发帖数量: 442 个
工控威望: 800 点
下载积分: 2718 分
在线时间: 752(小时)
注册时间: 2007-10-25
最后登录: 2024-04-30
查看uthman的 主题 / 回贴
2楼  发表于: 2022-01-23 20:08
GetInstanceName直接读取实例名称不香吗?
GetSymbolName读取变量名
lizhendong
级别: 家园常客
精华主题: 0
发帖数量: 593 个
工控威望: 781 点
下载积分: 1951 分
在线时间: 805(小时)
注册时间: 2016-10-12
最后登录: 2024-04-30
查看lizhendong的 主题 / 回贴
3楼  发表于: 2022-01-23 22:01
太高级了,看不懂!
payfsl
级别: 工控侠客
精华主题: 2 篇
发帖数量: 2490 个
工控威望: 2753 点
下载积分: 38158 分
在线时间: 467(小时)
注册时间: 2010-08-03
最后登录: 2024-05-05
查看payfsl的 主题 / 回贴
4楼  发表于: 2022-01-24 07:26
啰哩啰嗦的,上个小例子比什么都强
三人行必有我师焉,择其善者而从之 ,学而不思则罔,思而不学则殆
苏州工人
级别: 工控侠客
精华主题: 0
发帖数量: 204 个
工控威望: 2126 点
下载积分: 6655 分
在线时间: 165(小时)
注册时间: 2021-07-23
最后登录: 2024-05-05
查看苏州工人的 主题 / 回贴
5楼  发表于: 2022-01-24 10:58
【万泉河】PLC编程求3/8的题目
看了这个,感觉挺好笑的,三菱就有对应的指令SUM 用来判断有ON位数,我不知道别的PLC有没有这个指令,但自己用的PLC连编程手册都不看,不看详细的,至少指令表过一遍吧
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 859 个
工控威望: 1009 点
下载积分: 1934 分
在线时间: 686(小时)
注册时间: 2012-05-09
最后登录: 2024-05-05
查看flyfeky的 主题 / 回贴
6楼  发表于: 2022-01-24 11:15
搞的故作高深 。  面向对象编程是有标准方法的。

看看倍福是怎么实现的。


比如一个槽 体,定义一个fb  ,这个FB可以实例化。  fb里有变量  ,结构体(属性)  , 有方法, (加热,循环, 各种加热, 各种方法)

这个FB能被继承。

一个FB里包括所有槽体功能 。

具体到某个功能槽 , 我们只需要   实例名. 方法();  提取跟工艺相吻合的方法。
西门子倍福WPF+C#数据库,槽式设备专家
幻觉不是幻觉
级别: 略有小成
精华主题: 0
发帖数量: 78 个
工控威望: 360 点
下载积分: 460 分
在线时间: 243(小时)
注册时间: 2018-12-24
最后登录: 2024-05-05
查看幻觉不是幻觉的 主题 / 回贴
7楼  发表于: 2022-01-24 14:10
引用
引用第6楼flyfeky于2022-01-24 11:15发表的  :
搞的故作高深 。  面向对象编程是有标准方法的。

看看倍福是怎么实现的。


.......

感谢大神的解释,受益匪浅.
hefq
级别: 家园常客
精华主题: 0
发帖数量: 607 个
工控威望: 801 点
下载积分: 1916 分
在线时间: 1479(小时)
注册时间: 2008-07-03
最后登录: 2024-05-05
查看hefq的 主题 / 回贴
8楼  发表于: 2022-01-24 17:31


步,定时器都用FC实现
用FC的好处是不用命名,不怕重复,复制过来就用,
小白菜
级别: 正式会员
精华主题: 0
发帖数量: 49 个
工控威望: 88 点
下载积分: 474 分
在线时间: 12(小时)
注册时间: 2021-02-27
最后登录: 2024-04-26
查看小白菜的 主题 / 回贴
9楼  发表于: 2022-02-05 16:50
大师的书某宝都没有
小莫西
级别: 略有小成
精华主题: 0
发帖数量: 203 个
工控威望: 291 点
下载积分: 1831 分
在线时间: 181(小时)
注册时间: 2018-12-02
最后登录: 2024-04-22
查看小莫西的 主题 / 回贴
10楼  发表于: 2022-02-10 09:40
三个奖励就100块有用
bruce2020
级别: 论坛先锋
精华主题: 1 篇
发帖数量: 985 个
工控威望: 1244 点
下载积分: 3187 分
在线时间: 695(小时)
注册时间: 2017-11-25
最后登录: 2024-05-05
查看bruce2020的 主题 / 回贴
11楼  发表于: 2022-02-10 18:00
大伙对此的疑惑在于,光从上面的文字上,看上去很牛逼。但是看不到实际的例子,哪怕是一个设备的程序,没有看到这方面的例子。吃瓜群众是不会上钩的。建议先分享一个不含机密的例子。看看有多少下载量,多少回复,从而可以知道受关注度有多少人。有兴趣的自然回联系。不然光光看上面的文字,没多少人有兴趣的。愚见。不喜勿喷
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go