johnsonxjq
必攻不守
級(jí)別: 略有小成
|
圖片:
三菱Modbus通信初始化,結(jié)構(gòu)化編程,上面的首尾相聯(lián)初始化成功,可以正常通信, 下面的書(shū)寫(xiě)模式初始化失敗,端口不發(fā)送數(shù)據(jù).失聯(lián)狀態(tài).原因不明,哪位高手解釋一下. 讀寫(xiě)是用ADPRW ,在這里不要懷疑其它部分程序了,我只改這里,一個(gè)通信正常,一個(gè)完全不能通信 難道是三菱結(jié)構(gòu)化編程還存在bug.三菱的推出結(jié)構(gòu)化編程,真心比西門(mén)子的難用,寫(xiě)程序很慢,本人也是嘗試 [ 此帖被johnsonxjq在2018-07-03 09:27重新編輯 ] |
---|---|
|
instanttw
級(jí)別: 探索解密
|
惡魔就躲在 EN 和 ENO。 SFC、ST 的樣子不代表就是階梯圖的樣子。 將兩段程序?qū)戇M(jìn) PLC 后以階梯圖讀出來(lái)觀察就會(huì)明白了。 |
---|---|
|
johnsonxjq
必攻不守
級(jí)別: 略有小成
|
惡魔就躲在 EN 和 ENO。 SFC、ST 的樣子不代表就是階梯圖的樣子。 將兩段程序?qū)戇M(jìn) PLC 后以階梯圖讀出來(lái)觀察就會(huì)明白了。 讀出來(lái),一個(gè)是M8411只有一個(gè),全部初始化在后面,一個(gè)是M8411有多個(gè),每個(gè)帶兩個(gè)Mov指令,邏輯上沒(méi)問(wèn)題呀,但實(shí)際唉, 三菱的編譯器是否有問(wèn)題?那就坑人了. |
---|---|
|
twingo49
級(jí)別: 網(wǎng)絡(luò)英雄
|
其實(shí)在modbus通信手冊(cè)第35頁(yè)已經(jīng)有提醒了 |
---|---|
本帖最近評(píng)分記錄: |
johnsonxjq
必攻不守
級(jí)別: 略有小成
|
我正是在此頁(yè)看到問(wèn)題才改的程序,但問(wèn)題是這樣不對(duì)呀,不符合規(guī)則啊.西門(mén)子的PLC就沒(méi)有這樣的說(shuō)法.三菱的仿西門(mén)子還是有點(diǎn)莫名其妙 |
---|---|
|
twingo49
級(jí)別: 網(wǎng)絡(luò)英雄
|
不符合規(guī)則很正常的,要是都符合規(guī)則,表示寫(xiě)一套程式就可以用在任何廠牌的PLC,沒(méi)有幾家會(huì)這樣做的。 |
---|---|
|
instanttw
級(jí)別: 探索解密
|
@johnsonxjq 身邊沒(méi)東西可測(cè)試,以下只是猜測(cè)。
最后執(zhí)行出來(lái) D0 會(huì)是多少? 如果不是 8,那就不用解釋了。 如果是 8,只能說(shuō)三菱對(duì)于這樣的設(shè)定有嚴(yán)格的限制,我們不清楚第一行執(zhí)行后 PLC 內(nèi)部到底做了什么事情。就算用階梯圖寫(xiě)一模一樣的程序,通訊一樣會(huì)失敗,這和語(yǔ)言無(wú)關(guān),手冊(cè)也明確寫(xiě)了如何正確設(shè)定。 以 ST 為例:
等同于
也是
編譯器還是呼叫了 MOV 指令,用 M8000 讓指令一直執(zhí)行,但不是無(wú)條件執(zhí)行。 基于文本程序的特性,人們更習(xí)慣 D0 := D1 而非 MOV,這樣對(duì)于較為復(fù)雜的算式尤其方便。
這用 DEDIV、DEMOV 或階梯圖寫(xiě)起來(lái)就會(huì)較為復(fù)雜且不夠直觀。 如果真有需求,我們就使用指令的 EN 參數(shù)或是 IF,像是
但您提出的觀點(diǎn)也對(duì),如果連續(xù)幾行的起始都是讀同一個(gè)目標(biāo),如
那能不能將后面重復(fù)的省略以進(jìn)行優(yōu)化? 這樣的話編譯出來(lái)的程式就會(huì)是你想要的樣子。 這只有對(duì)于常數(shù)值才可以進(jìn)行,如果 LD 的目標(biāo)是會(huì)變動(dòng)的,就不能將它省略。 M8000 或許是一個(gè)特例,但也或許會(huì)在我們還不了解的狀況下改變數(shù)值。 所以就語(yǔ)言本身來(lái)說(shuō),其實(shí)沒(méi)什么問(wèn)題。小弟也曾被這個(gè)問(wèn)題拐過(guò),但正因?yàn)楣者^(guò),對(duì)于這些特性才有更多思考。 提供參考。 |
|||||||
---|---|---|---|---|---|---|---|---|
本帖最近評(píng)分記錄: |
twingo49
級(jí)別: 網(wǎng)絡(luò)英雄
|
其實(shí)重點(diǎn)在M8411,手冊(cè)有提到建議M8411只有一次(35~38頁(yè)),如果用超過(guò)一次,只有最後一次有效,第二種寫(xiě)法會(huì)變成M8411用4次所以只有最後一次有效,因此通不起來(lái)。 |
---|---|
本帖最近評(píng)分記錄: |
johnsonxjq
必攻不守
級(jí)別: 略有小成
|
圖片:
謝謝你的回答,你的思考深入了,實(shí)際情況D0=0;另外,我用的是FX3U,結(jié)構(gòu)化編程和ST編程競(jìng)?cè)徊荒芑煊?和西門(mén)子相比,三菱的靈活性實(shí)在差很多,不過(guò)三菱,歐姆龍,臺(tái)達(dá)都有結(jié)構(gòu)化編程出來(lái) 了,向西門(mén)子這個(gè)龍頭老大告攏.希望不久的將來(lái),能形成大一統(tǒng)局面,為何不同的廠家不能使用同樣結(jié)構(gòu)的語(yǔ)言,來(lái)少去我們這些代碼工人的勞動(dòng)呢.雖然到那時(shí)寫(xiě)程序變得更沒(méi)價(jià)值了.但畢竟這是進(jìn)步. [ 此帖被johnsonxjq在2018-07-04 15:15重新編輯 ] |
---|---|
|
johnsonxjq
必攻不守
級(jí)別: 略有小成
|
對(duì),仔細(xì)看了下手冊(cè),的確有如此說(shuō)法,如果這樣說(shuō)就和編譯器有關(guān).我想說(shuō)的是,三菱這樣做,像是在設(shè)陷井. |
---|---|
|