LabVIEW與PLC通訊協定

請各位大大幫忙小弟,目前labview 丟訊號給plc的部分是ok的

plc做動完之後要丟一個訊號回來,告訴我已做完,無法收到判斷

導致labview 速度比 plc快許多。

我的目的是當我電腦送給PLC訊號M4完之後,PLC做動完回傳一個M5的訊號通知我已做完,

之後再進行我要的動作。

我把我寫的貼上來請各位大大幫我看一下哪裡需要改進!!  謝謝各位大大!!

![](upload://cVPW5FXAiaweU8QMK0M180pi55c.jpeg)

![](upload://3lfdTz3byCCjrxjgr1C1degO99x.jpeg)

![](upload://4oRk6Rfn1ACZdedVynJNoMBAYvH.jpeg)

如果給個固定的延遲時間是可以解決的,下面程式給你參考

![](upload://lTPNP73lPIEvF7FOUgcxA4kNVYD.jpeg)

這樣感覺好像在拖時間,讓PLC速度跟上電腦

有沒有辦法讓電腦真的讀取到M5才繼續做動??

還是要加上延遲時間PC才有辦法讀到訊號??

若時間不固定則需要加While Loop與Case Structure

![](upload://1TAgelSd2QlAlNRJ0GEtLxinhEW.jpeg)

![](upload://7bIxiRuOaYJSZvo2XNvaODevp2w.jpeg)

感謝大大幫忙,感覺可行性很大。

明天去試試看!!

只是還有個疑問 byte count 那給100值是因為什麼呢??

byte count一般是直接連Bytes by Port,但是由於擔心沒收到完整的資料,所以我建議給個較大的定值.舉例來說:PLC傳了10 bytes來當資料部份已到PC端時Bytes by Port就有數值了但不是10可能是1或2不一定,如果直接將其直接連到byte count就無法收到完整資料.

請問PLC M5的資料傳給PC是PLC主動回傳,還是PC問M5的狀態PLC再回傳?

如果是前者用有第2種程式才有用.若是後者則再另外再寫較複雜的程式.

是PLC主動回傳 M5的資料傳給PC,只是現在遇到問題,不知道怎麼判斷PLC回傳的M5,程式都會跑到預設的Default,不知道是否真的是收到M5。

還有另一個疑問,M5算是幾個Bytes,是設定0010001嗎??

PLC是三菱系列的FX

babytiger40479.5250115741

有幾個問題先釐清:

1.從你的程式看來你是將X010給ON,不是M4.要強制M4 ON應該是"70804",而不是"70408".

2.PLC收到M4的訊號到完成將M5給ON的時間有固定嗎?大約多長?

3.PLC的M5 ON的時間有多長?還是會等到下次M4再ON時才滅?

4.依我看你的程式應該是PLC被動,不可能是主動傳給PC,見一擬直接在你的程式2個Stacked Sequence Structure之間加個延遲時間,必須大於我第2個問題的時間,如果M5 ON的時間夠長,一定OK.

下面程式我是設5000ms

![](upload://jwBjwMpxvfIQR1mVj9rrH4FiQEy.jpeg)

可以考慮用OPC Server來做,利用PLC的M跟DM來當作狀態或資料handshake,這樣就不會浪費PLC的scan time。OPC server吃的CPU資源非常少,如果是用雙核心,稍加一些thread分配的技巧,就可以讓兩邊都全速執行。

DonWang
1. 70408是沒錯的,查表看到0804是位置,但你如果要使用要把高位元組與低位元組順序相反.

2.沒有固定多長的時間收到M5,以PLC傳出M5為主.

3.程式是設定一開始傳出M4,當PLC收到時會關掉M4,然後做動完之後,回傳訊號M5給PC.

目前我已經找到解決的方法了,謝謝王董^^

OPC Server感覺好威唷,如何使用M跟DM來當作狀態或資料handshake??

就只要把回傳的位置改成D嗎?? 這樣要讀的資料不是會變大,我PLC scan time 設2ms

如果換成你說的那樣會變更快嗎??

教教我!! 拜託拜託!!

OPC是要錢的,如果是學生或個人興趣要用Labview與PLC溝通,我建議自己寫不要用OPC.

我個人(公司出錢)的經驗OPC使用上的確非常方便,尤其用modbus或與大廠牌的設備溝通非常方便.但是溝通速度上不見得較快.

OPC有許多廠商都有出(NI也有),OPC寫好後,如下圖顯示直接用DataSocket連就可以了.

OPC有可最大的好處就是同時不同的程式可以與它連接.舉例來說PC用COM3與PLC連,自己寫了A,B兩個程式要與PLC連,由於COM3被其他1程式使用了,另1程式就不可以用COM3了,但是經由OPC用COM3與PLC連,A,B程式可同時與OPC連接到PLC.

![](upload://lS3VjdX0zj3fLqD22t7K5Ly0js4.jpeg)