先來說說示例的觀感,,個(gè)人認(rèn)為這僅僅是西門子為了實(shí)現(xiàn)"/>

波多野结喷水最猛一部352_女人色极品影院_欧美成人精品高清视频在线观看_男生下面插女生下面视频_奶头很大摸着很爽视频_91_美丽姑娘在线观看完整版中文_伊人久久大香线蕉综合影院首页一_亚洲欧美自拍明星换脸_国产呦系列视频网站在线观看,日韩欧美另类国产在线手机版,国产成人精品日本亚洲专一区,午夜亚洲AⅤ无码高潮片

西門子6SL3210-1PE11-8AL1功率模塊

西門子: 功率模塊
功率模塊: 6SL3210-1PE11-8AL1
中國: 凈重1.55KG
單價(jià): 1300.00元/臺
發(fā)貨期限: 自買家付款之日起 天內(nèi)發(fā)貨
所在地: 直轄市 上海
有效期至: 長期有效
發(fā)布時(shí)間: 2024-10-18 16:11
最后更新: 2024-10-18 16:11
瀏覽次數(shù): 187
采購咨詢:
請賣家聯(lián)系我
發(fā)布企業(yè)資料
詳細(xì)說明

上個(gè)月剛接觸西門子OMAC的PACLML示例,我試著做了個(gè)程序來驗(yàn)證,,效果不錯(cuò),。


先來說說示例的觀感,個(gè)人認(rèn)為這僅僅是西門子為了實(shí)現(xiàn)模式狀態(tài)機(jī)的一個(gè)小示例,不算可以直接使用的東西,,當(dāng)然離庫很遠(yuǎn),。示例設(shè)計(jì)得沒有什么章法,僅僅實(shí)現(xiàn)了而已,,設(shè)計(jì)細(xì)節(jié)沒有多少值得借鑒得地方,。

大的用處是讓我了解了什么是模式狀態(tài)機(jī),當(dāng)然了,,肯定也只是PACKML的一部分內(nèi)容,。我不了解PACLML,只是從一些資料知道PACKML其實(shí)是涵蓋了整個(gè)項(xiàng)目結(jié)構(gòu)的內(nèi)容,,不光是模式狀態(tài)機(jī)了,。


以前也做過狀態(tài)機(jī),使用Case對不同狀態(tài)進(jìn)行處理和轉(zhuǎn)移,。大問題是入口case比較難以把握,,稍不留神就會錯(cuò)誤觸發(fā)。狀態(tài)的轉(zhuǎn)移也完全依賴現(xiàn)有狀態(tài)里面的判斷,。具體如何不便不好描述,。


說示例沒有多少借鑒的地方其實(shí)有點(diǎn)昧良心了,給我大的啟示是狀態(tài)轉(zhuǎn)移和狀態(tài)處理是分離的,。也許復(fù)雜的部分是狀態(tài)的收集和處理,,示例沒有這方面的內(nèi)容。我本人項(xiàng)目中也沒有做專門的工作,,只是使用了原有底層模塊的狀態(tài)簡單處理,。


容易實(shí)現(xiàn)的是狀態(tài)轉(zhuǎn)移了,我就做了容易的部分,。


并且實(shí)現(xiàn)后發(fā)現(xiàn)其實(shí)是完全可以適用于很多離散行業(yè)場景的,。這里記住,PACKML是包裝行業(yè)的規(guī)范,,它定義的狀態(tài)并不適用于其他行業(yè),。其他行業(yè)有各自的狀態(tài)定義,這個(gè)自己來,。


示例對于狀態(tài)的記錄采用字符串,包括命令,、SC,,這個(gè)我覺得使用數(shù)值更好,占用空間少,,易于編程,。


至于診斷信息則用于調(diào)試過程,我把診斷和狀態(tài)轉(zhuǎn)移塊分離了,需要診斷信息可以用單獨(dú)的塊接住狀態(tài)機(jī)傳出的診斷信息即可,,多少條任意,。但狀態(tài)機(jī)只傳出當(dāng)前的信息,并不保存之前的信息,,并且都是編碼信息,,需要診斷塊自行解碼。


當(dāng)調(diào)試好后,,診斷塊都可以在項(xiàng)目中刪除不用,。


先記到這,有時(shí)間再寫具體實(shí)現(xiàn),。

------------------------------------------------------

2024.01.23

本來已經(jīng)意興闌珊了,,可偏偏是個(gè)精,都還沒開始呢,。

好吧,,只能繼續(xù)了。


資料里面大量篇幅關(guān)于高層設(shè)備如何劃分之類的,,看看就可以了,。有機(jī)會從整體來設(shè)計(jì)當(dāng)然不一樣了,但很多時(shí)候我們都只是一個(gè)螺絲釘,,并不注重整體架構(gòu),。有時(shí)是形勢逼人,有時(shí)覺得自己可以整體把控了,,無奈這個(gè)整體又太過渺小,。

只記得資料里有句話很有意思,大意是如果你不能正確劃分設(shè)備編號的話,,那就從底層開始編號吧,,而不是一開始就從高層來。對,,正解,。


放張圖:


這是西門子1847里面的截圖,當(dāng)然我沒有1847,,而是從壺琰棠發(fā)布的視頻解的圖,。

具體我就不分析了,只看我的

1,、有一個(gè)全集,,包括了所有的狀態(tài)。

2,、全集不一定非得有一個(gè)模式對應(yīng),,可能有也可能沒有,。

3、模式1向模式2轉(zhuǎn)移需要的條件:模式2里面存在當(dāng)前模式1的當(dāng)前狀態(tài)A.

4,、狀態(tài)是有等級的,,L05、命令和SC其實(shí)沒有區(qū)別,,我一律稱作SC,。資料里面SC叫做狀態(tài)完成state complete,我叫做狀態(tài)改變

state change.

6,、......


如何設(shè)計(jì):

仔細(xì)觀察Excute狀態(tài):

1,、有三個(gè)出口、三個(gè)入口,。

2,、如果用鏈表表示,則入口可以不用關(guān)心,,只需要出口,。博途不支持鏈表(指針......),改用數(shù)組,,一樣的道理,。

3、數(shù)組的單元是個(gè)結(jié)構(gòu):狀態(tài)本體,、出口,。

4、狀態(tài)是個(gè)整數(shù),,表示狀態(tài)標(biāo)識,,出口也是個(gè)整數(shù)(后來改用word)。


看級別,,把級別也看做狀態(tài),,則和普通狀態(tài)沒有區(qū)別。

只是級別做成單獨(dú)的數(shù)組,,單元類型和普通狀態(tài)是同一個(gè)類型,。


如果這樣,如何表示從一個(gè)級別的狀態(tài)轉(zhuǎn)移到另一個(gè)級別的狀態(tài)呢,?

后來設(shè)計(jì)成處理出口SC編碼,,做成Word類型,高字節(jié)表示級別,,低字節(jié)表示SC標(biāo)識,。

范圍是不是夠呢?一個(gè)字節(jié)表示256種狀態(tài),,應(yīng)該夠了吧,。特別是級別。

預(yù)定義四個(gè)出口夠了吧,?做成符號常量不是更方便些,。這樣,模式數(shù)量,、狀態(tài)數(shù)量,、級別數(shù)量、SC數(shù)量等等都如此定義,。


這樣,,答題設(shè)計(jì)就有了,總體上變成了填表了,。

邏輯設(shè)計(jì)很簡單,,不需要多少代碼。


工作量大的是診斷工作,。

如何定義呢,?我也是邊實(shí)現(xiàn)邊定義,沒有事先定義?,F(xiàn)在還沒有機(jī)會整理診斷編碼,。

有一點(diǎn)是肯定的,就是診斷大多是給調(diào)試使用,,給人看的,,大量的文本占用空間,就不集成在模式狀態(tài)機(jī)里面了,,模式狀態(tài)機(jī)僅輸出診斷信息,,只當(dāng)前診斷,不存之前的信息,。


如果需要就用單獨(dú)的塊接住往診斷緩沖區(qū)放,。


工作流程就是畫出狀態(tài)圖:不同模式的狀態(tài)圖,模式少的話就用一張圖,。填數(shù)字,,填表。需要把SC編碼變成16進(jìn)制碼,,借助Excel來做容易些,。

放張我設(shè)計(jì)過程中的截圖,上面的SC編碼沒有級別編碼,,需要轉(zhuǎn)換,。




配置表:

1、診斷文本列表,,可以在PLC,,也可以在HMI中處理,,隨便,其實(shí)調(diào)試后可以不用,。


2,、模式狀態(tài)機(jī)配置表


3、狀態(tài)或級別配置表內(nèi)容:


上圖以級別表為例,,狀態(tài)表類似,。

當(dāng)處于某個(gè)狀態(tài)時(shí),需要和配置表中SCCode一致的SC才能使?fàn)顟B(tài)發(fā)生轉(zhuǎn)移,,不符合則會被拒絕,。


邏輯處理部分,初始化檢查表內(nèi)容是否適合,,我只設(shè)計(jì)了檢查SCCode和Next是否配套,,接著生成模式Pattern,也即各個(gè)模式下存在全集狀態(tài)的一個(gè)記錄,,是個(gè)位域,,DWord。對了,,我都忘了我設(shè)計(jì)的項(xiàng)目狀態(tài)超過32個(gè)了,,這個(gè)咋整?


初始化后根據(jù)傳入的SCCode先在級別表里面檢查是否有合適當(dāng)前級別的SC,,從別開始到當(dāng)前級別終止檢查,。如果有則直接轉(zhuǎn)入Next狀態(tài),沒有則繼續(xù)在當(dāng)前State里面檢查,。

都沒有則拒絕執(zhí)行轉(zhuǎn)移,。


代碼簡單就不放了。


現(xiàn)在的重點(diǎn)是如何設(shè)計(jì)好的狀態(tài)收集,、如何處理才能使SCCode不會被錯(cuò)誤覆蓋造成狀態(tài)不能轉(zhuǎn)移,。


------------------------

后記:

如果一個(gè)項(xiàng)目里有多個(gè)狀態(tài)機(jī),使用全局UDT和全局常量就不合適了,。比如說一個(gè)狀態(tài)機(jī)比較小,,就需要和大的狀態(tài)機(jī)一樣大的配置表,比較占空間,。


我的做法是把狀態(tài)機(jī)集成到模塊中,,不是單獨(dú)模塊。配置表也集成到模塊中,,全局常量變成了局部常量了,,UDT也變成匿名結(jié)構(gòu)。



相關(guān)功率模塊產(chǎn)品
相關(guān)功率模塊產(chǎn)品
相關(guān)產(chǎn)品