萬泉河
WX:ZHO6371995,歡迎+
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 130 個(gè)
工控威望: 246 點(diǎn)
下載積分: 831 分
在線時(shí)間: 11(小時(shí))
注冊(cè)時(shí)間: 2021-06-11
最后登錄: 2024-11-07
查看萬泉河的 主題 / 回貼
樓主  發(fā)表于: 2022-01-23 11:00
【萬泉河】征集FB的編程題:獲取SID

我在推廣宣傳PLC編程煙臺(tái)方法的時(shí)候,總有人疑惑是在做了什么。

講解是用計(jì)算機(jī)編程中的面向?qū)ο蟮姆椒▉磉M(jìn)行PLC編程。

那么在PLC中是用什么手段實(shí)現(xiàn)的面向?qū)ο竽兀?/font>

回答是用FB,做成庫(kù)函數(shù)應(yīng)用。

然后對(duì)方瞬間就恍然大悟了, FB啊,不是什么新玩意,我們20年前就會(huì)用了。你這把FB換個(gè)高大上的名字,也太能忽悠人了。

原來做標(biāo)準(zhǔn)化就是開發(fā)FB, 那我們正在做,或者早就在自己做了。你這做的沒啥稀奇的。

好吧。

如果對(duì)方既沒有感知到自身的痛點(diǎn),又沒有機(jī)會(huì)見過真正的應(yīng)用實(shí)例,那說破了嘴皮子對(duì)方也想象不出是啥樣子。畢竟,PLC編程煙臺(tái)方法的實(shí)現(xiàn)是古今中外開天辟地以來都沒有過的,大部分的PLC工程師包括我自己入行開始,都是從模仿入門的,沒有完全創(chuàng)新的經(jīng)驗(yàn),在沒有見過豬跑之前讓他們想象出豬肉的味道,確實(shí)有些難度。  

我當(dāng)然知道,PLC系統(tǒng)中早就有FB功能塊的功能,也早已經(jīng)用了二十多年。但我自己能用面向?qū)ο蟮姆椒▉碜?/font>PLC程序,也不過近2-3年的事。

然而,我同樣也知道,我們?cè)S多同行,盡管可能不懂得計(jì)算機(jī)高級(jí)語(yǔ)言編程,但對(duì)FB的各種理論技巧還是很熟練的。我也見過一些比較復(fù)雜的PLC程序,看到里面非常豐富的FB的用法,但從中很明顯地可以看出來,設(shè)計(jì)者對(duì)FB原理是非常懂,然而卻沒有面向?qū)ο蟮睦砟睢?/font>

也有過比較熟識(shí)的西門子網(wǎng)站的驅(qū)動(dòng)板塊的版主,在了解到我的標(biāo)準(zhǔn)化編程理論之后就非常高傲地表示,即便不算驅(qū)動(dòng)方面的技能,僅僅拿PLC編程的經(jīng)驗(yàn)和水平PK,對(duì)我也照樣是不服的,完全可以一比高下。

我也只能攤手認(rèn)慫,不跟你比。

現(xiàn)在拋開面向?qū)ο,拋開標(biāo)準(zhǔn)化編程,有一道比較有意思的題目,拋出來給大家練練手,可以算是檢驗(yàn)下自己對(duì)FB的理解深度,同時(shí)對(duì)自己也算做個(gè)知識(shí)技能的儲(chǔ)備。

臨近春節(jié)假期,大家項(xiàng)目工作應(yīng)該已經(jīng)不太忙碌,可以有空閑時(shí)間為自己充充電了。這里算是給大家提供一個(gè)學(xué)習(xí)方向。

題目的原委是這樣的,在PLC項(xiàng)目中FB功能塊的調(diào)用,通常被稱為實(shí)例,而一個(gè)FB有可能被調(diào)用多次,那就是產(chǎn)生多個(gè)實(shí)例。
現(xiàn)在需要對(duì)每一個(gè)實(shí)例做出ID的標(biāo)識(shí),即為SID

比方說一個(gè)FB在整個(gè)OB1環(huán)境中被調(diào)用了10次,那么我希望它們分別得到從110連續(xù)且不相等的ID號(hào)。

這個(gè)功能的實(shí)現(xiàn),應(yīng)該是一個(gè)完全封裝好的獨(dú)立完成功能的函數(shù)塊,FB或者FC。當(dāng)然,因?yàn)樗膶?shí)現(xiàn)還是比較復(fù)雜,我認(rèn)為FB實(shí)現(xiàn)會(huì)比FC實(shí)現(xiàn)能方便些,名字定義為GetSID。


有了這個(gè)FB ,那么在需要區(qū)分SID的項(xiàng)目設(shè)備FB中,只需要調(diào)用一次函數(shù),就可以得到了SID

最好的結(jié)果是按照OB1執(zhí)行的順序,第一個(gè)調(diào)用的ID=1,第二個(gè)為ID=2, 最后一個(gè)ID=MAX。

然后如果PLC調(diào)試過程中實(shí)例有增加或減少,不管是中間增減還是尾部的增補(bǔ),都應(yīng)該能刷新更新。

有人會(huì)疑問得到這個(gè)SID有啥用?

我順手就可以舉例出好多個(gè)應(yīng)用場(chǎng)景。比如。。。。。再比如。。。。,以及。。。。

然而,我非常了解咱們?cè)S多同行的調(diào)性,如果我把應(yīng)用舉例描述詳細(xì)了,很多人會(huì)跑題去探究我所舉例具體的應(yīng)用,去用他自己的方式千方百計(jì)繞過SID,找方法實(shí)現(xiàn)。然后回過來再跟我證明獲取SID無意義。

所以具體舉例就不提了。標(biāo)準(zhǔn)化學(xué)習(xí)營(yíng)的學(xué)員,可以積極參與實(shí)現(xiàn)這個(gè)應(yīng)用,將來你們?cè)诰唧w的項(xiàng)目中會(huì)遇到這種需求的時(shí)候,我會(huì)適時(shí)與你們講解。
(這里也透漏出個(gè)信息,以往的標(biāo)準(zhǔn)化應(yīng)用分享項(xiàng)目中并未用到SID

為了鼓勵(lì)同行朋友積極參與,對(duì)成功實(shí)現(xiàn)功能并投稿的朋友,給出一點(diǎn)彩頭。獎(jiǎng)勵(lì)方式三種,獲獎(jiǎng)?wù)呷N之中任選一種:

1, PLC標(biāo)準(zhǔn)化編程例程優(yōu)惠1000元,所有品牌任選。
2, 《萬泉河著PLC標(biāo)準(zhǔn)化編程原理與實(shí)踐》書稿電子加密版。
3, 現(xiàn)金100元。

然后是具體要求:

1, 可以使用主流PLC任一品牌實(shí)現(xiàn),不僅僅西門子, 也更不僅僅TIA PORTAL。
所以這是一場(chǎng)面向全行業(yè)的應(yīng)用比武。我相信所有品牌的PLC,都可以實(shí)現(xiàn)。

2, 編程語(yǔ)言建議使用SCL語(yǔ)言。因?yàn)檫@樣更會(huì)容易跨品牌跨平臺(tái)移植。
這也是我所以可以接受全行業(yè)所有品牌的原因。同時(shí)大家未來也可以了解,任何企業(yè),只要實(shí)現(xiàn)了標(biāo)準(zhǔn)化編程,是可以實(shí)現(xiàn)跨平臺(tái)跨品牌移植的。比如2021年的斷貨危機(jī),換品牌就易如反掌。不會(huì)因?yàn)閾?dān)憂品牌更換而所有程序從頭再來。

3, 如果實(shí)在不會(huì)使用SCL,或者所用的PLC不支持SCL, 那么也可以用LAD來實(shí)現(xiàn),并投遞交稿。不過,將來的獎(jiǎng)勵(lì)需要減半。

4, 為了方便檢查評(píng)審功能,做好的程序塊請(qǐng)錄制運(yùn)行監(jiān)控視頻,動(dòng)態(tài)顯示運(yùn)行結(jié)果。交稿時(shí)除源程序外,視頻文件也一并提交。

5, 投稿截止時(shí)間為2月底,即現(xiàn)在起到正月期間均可參加。 只要認(rèn)證功能完整有效,均給予獎(jiǎng)勵(lì)。有意投稿者,可以先加我微信:zho6371995,進(jìn)行預(yù)報(bào)名。報(bào)名后在截止期之前完成正式交稿都可以。到時(shí)如果有特殊情況需要延時(shí),可以提前打招呼獲準(zhǔn)。

6, 預(yù)報(bào)名限制人數(shù)100人, 正式獲獎(jiǎng)人數(shù)限30人, 按交稿先后順序且功能正確者排名。

為了堵住一部分不懷好意的同行的嘴,提防他們罵我低價(jià)購(gòu)買別人的智力,或者說我自己的問題沒有能力解決,換了個(gè)方式來找別人幫忙解決。

我截圖展示一下我已經(jīng)實(shí)現(xiàn)的效果:


                              


我這里SID是得到了,ID1的位置是隨機(jī)的。并沒有嚴(yán)格地讓第一臺(tái)必須為1。因?yàn)槲疫@里應(yīng)用誰是ID=1不重要,所以就沒有特意去實(shí)現(xiàn)了。

最后提醒大家多去讀我以往發(fā)表的文章,包括公眾號(hào)《PLC標(biāo)準(zhǔn)化編程》以及西門子論壇我開設(shè)的專欄《萬泉河講故事》,找不到路的百度或者微信搜一搜【萬泉河】我的所有文章標(biāo)題都帶了這樣的標(biāo)識(shí)。

好多文章,發(fā)表了很多年,逐漸都被遺忘了。然而最近,有好多朋友提出的問題,一看都是我在多年前發(fā)表文章中提及的技術(shù)或問題。

比如最近連續(xù)兩次不同的場(chǎng)合,針對(duì)網(wǎng)友的提問推薦了文章
【萬泉河】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

問題都得到了解決。說明,他們還是文章讀少了。

這篇文章看來對(duì)同行如此有用,那就在本文下面再發(fā)一次。以前已經(jīng)讀過的請(qǐng)?jiān)俅螠亓?xí)一下。



hefq
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 616 個(gè)
工控威望: 811 點(diǎn)
下載積分: 1928 分
在線時(shí)間: 1524(小時(shí))
注冊(cè)時(shí)間: 2008-07-03
最后登錄: 2024-12-18
查看hefq的 主題 / 回貼
1樓  發(fā)表于: 2022-01-23 13:12

uthman
QQ:3749615
級(jí)別: 家園?
精華主題: 1 篇
發(fā)帖數(shù)量: 457 個(gè)
工控威望: 817 點(diǎn)
下載積分: 2752 分
在線時(shí)間: 778(小時(shí))
注冊(cè)時(shí)間: 2007-10-25
最后登錄: 2024-12-22
查看uthman的 主題 / 回貼
2樓  發(fā)表于: 2022-01-23 20:08
GetInstanceName直接讀取實(shí)例名稱不香嗎?
GetSymbolName讀取變量名
lizhendong
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 608 個(gè)
工控威望: 800 點(diǎn)
下載積分: 1992 分
在線時(shí)間: 851(小時(shí))
注冊(cè)時(shí)間: 2016-10-12
最后登錄: 2024-12-22
查看lizhendong的 主題 / 回貼
3樓  發(fā)表于: 2022-01-23 22:01
太高級(jí)了,看不懂!
payfsl
級(jí)別: 工控俠客
精華主題: 2 篇
發(fā)帖數(shù)量: 2601 個(gè)
工控威望: 2873 點(diǎn)
下載積分: 39998 分
在線時(shí)間: 484(小時(shí))
注冊(cè)時(shí)間: 2010-08-03
最后登錄: 2024-12-15
查看payfsl的 主題 / 回貼
4樓  發(fā)表于: 2022-01-24 07:26
啰哩啰嗦的,上個(gè)小例子比什么都強(qiáng)
三人行必有我?guī)熝,擇其善者而從?,學(xué)而不思則罔,思而不學(xué)則殆
蘇州工人
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 252 個(gè)
工控威望: 2175 點(diǎn)
下載積分: 13170 分
在線時(shí)間: 201(小時(shí))
注冊(cè)時(shí)間: 2021-07-23
最后登錄: 2024-12-21
查看蘇州工人的 主題 / 回貼
5樓  發(fā)表于: 2022-01-24 10:58
【萬泉河】PLC編程求3/8的題目
看了這個(gè),感覺挺好笑的,三菱就有對(duì)應(yīng)的指令SUM 用來判斷有ON位數(shù),我不知道別的PLC有沒有這個(gè)指令,但自己用的PLC連編程手冊(cè)都不看,不看詳細(xì)的,至少指令表過一遍吧
flyfeky
bilibili 工控貴族
級(jí)別: 論壇先鋒
精華主題: 0
發(fā)帖數(shù)量: 889 個(gè)
工控威望: 1040 點(diǎn)
下載積分: 2000 分
在線時(shí)間: 688(小時(shí))
注冊(cè)時(shí)間: 2012-05-09
最后登錄: 2024-12-13
查看flyfeky的 主題 / 回貼
6樓  發(fā)表于: 2022-01-24 11:15
搞的故作高深 。  面向?qū)ο缶幊淌怯袠?biāo)準(zhǔn)方法的。

看看倍福是怎么實(shí)現(xiàn)的。


比如一個(gè)槽 體,定義一個(gè)fb  ,這個(gè)FB可以實(shí)例化。  fb里有變量  ,結(jié)構(gòu)體(屬性)  , 有方法, (加熱,循環(huán), 各種加熱, 各種方法)

這個(gè)FB能被繼承。

一個(gè)FB里包括所有槽體功能 。

具體到某個(gè)功能槽 , 我們只需要   實(shí)例名. 方法();  提取跟工藝相吻合的方法。
西門子倍福WPF+C#數(shù)據(jù)庫(kù),槽式設(shè)備專家
huanjue
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 148 個(gè)
工控威望: 433 點(diǎn)
下載積分: 514 分
在線時(shí)間: 294(小時(shí))
注冊(cè)時(shí)間: 2018-12-24
最后登錄: 2024-12-22
查看huanjue的 主題 / 回貼
7樓  發(fā)表于: 2022-01-24 14:10
引用
引用第6樓flyfeky于2022-01-24 11:15發(fā)表的  :
搞的故作高深 。  面向?qū)ο缶幊淌怯袠?biāo)準(zhǔn)方法的。

看看倍福是怎么實(shí)現(xiàn)的。


.......

感謝大神的解釋,受益匪淺.
hefq
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 616 個(gè)
工控威望: 811 點(diǎn)
下載積分: 1928 分
在線時(shí)間: 1524(小時(shí))
注冊(cè)時(shí)間: 2008-07-03
最后登錄: 2024-12-18
查看hefq的 主題 / 回貼
8樓  發(fā)表于: 2022-01-24 17:31


步,定時(shí)器都用FC實(shí)現(xiàn)
用FC的好處是不用命名,不怕重復(fù),復(fù)制過來就用,
小白菜
級(jí)別: 正式會(huì)員
精華主題: 0
發(fā)帖數(shù)量: 49 個(gè)
工控威望: 88 點(diǎn)
下載積分: 474 分
在線時(shí)間: 12(小時(shí))
注冊(cè)時(shí)間: 2021-02-27
最后登錄: 2024-05-15
查看小白菜的 主題 / 回貼
9樓  發(fā)表于: 2022-02-05 16:50
大師的書某寶都沒有
小莫西
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 219 個(gè)
工控威望: 307 點(diǎn)
下載積分: 1866 分
在線時(shí)間: 205(小時(shí))
注冊(cè)時(shí)間: 2018-12-02
最后登錄: 2024-12-22
查看小莫西的 主題 / 回貼
10樓  發(fā)表于: 2022-02-10 09:40
三個(gè)獎(jiǎng)勵(lì)就100塊有用
bruce2020
級(jí)別: 論壇先鋒
精華主題: 1 篇
發(fā)帖數(shù)量: 1080 個(gè)
工控威望: 1341 點(diǎn)
下載積分: 3411 分
在線時(shí)間: 726(小時(shí))
注冊(cè)時(shí)間: 2017-11-25
最后登錄: 2024-12-22
查看bruce2020的 主題 / 回貼
11樓  發(fā)表于: 2022-02-10 18:00
大伙對(duì)此的疑惑在于,光從上面的文字上,看上去很牛逼。但是看不到實(shí)際的例子,哪怕是一個(gè)設(shè)備的程序,沒有看到這方面的例子。吃瓜群眾是不會(huì)上鉤的。建議先分享一個(gè)不含機(jī)密的例子?纯从卸嗌傧螺d量,多少回復(fù),從而可以知道受關(guān)注度有多少人。有興趣的自然回聯(lián)系。不然光光看上面的文字,沒多少人有興趣的。愚見。不喜勿噴