最近一個項目,因為種種限制,不能使用常規(guī)的觸摸屏+PLC結(jié)構(gòu),只能選擇那種小尺寸的電腦充當(dāng)觸摸屏與PLC進(jìn)行通訊。
考慮了一番 還是決定自己寫了,不用組態(tài)軟件。
三菱MX Component可以簡單理解為是一個OPC,專門針對三菱PLC產(chǎn)品的一種接口軟件。因為三菱系列的產(chǎn)品太多了,串口232
485,本體網(wǎng)口,外接模塊網(wǎng)口,USB接口各種各樣,于是官方做了一個這個軟件,讓這個軟件先去和下面的PLC建立通訊,
然后統(tǒng)一在和上位機(jī)進(jìn)行通訊,之前用過力控的產(chǎn)品也是要和MX Component搭配使用的。
網(wǎng)上搜了一圈資料吧,發(fā)現(xiàn)干貨比較少。主要都是介紹了一些連接函數(shù),寄存器函數(shù)讀取,寫入這些基本功能。但是實(shí)際應(yīng)用做起來的時候發(fā)現(xiàn)
問題很多。舉例子 比如里面有個連接open函數(shù),這個函數(shù)你只能open一次,如果你已經(jīng)連接成功了,再open就會卡UI,再有如果你已經(jīng)建立連接了,
但是PLC掉電了,你在執(zhí)行你的讀取函數(shù),寫入函數(shù)的時候也會卡UI。這算是第一個問題斷線重連,后來我用了一個心跳機(jī)制+異步解決了這個事情。
就是PLC程序里面D0數(shù)值一直+1,我檢測這個值變化來確保當(dāng)前的連接狀態(tài)。
第二個問題,D區(qū)變量,現(xiàn)有的庫文件里面的函數(shù)只是單純的讀了D0 D1 D2這些數(shù)值,但是D2 D3組合成浮點(diǎn)數(shù)這種的解析和寫入,沒有,
于是我補(bǔ)充寫了幾個方法,因為這次項目我只用到浮點(diǎn)數(shù)所以只寫了浮點(diǎn)數(shù)的方法。
第三個問題,M區(qū)變量讀取,M變量是bool量,但是他那個讀取函數(shù)讀上來是按照16位整數(shù),并不是M0本身的0或者1,你需要把這個整數(shù)2進(jìn)制,在找到你是對應(yīng)的第幾位,
才是你真正的M變量。這也寫了一個方法
MX Component這個軟件啊,我個人覺得不是太完善,但是畢竟是免費(fèi)的嘛,也就挑不出來那么多理了。然后補(bǔ)充一下,這個軟件不光能和三菱PLC通訊,也能和那些仿三菱PLC使用,
深圳顧美,石家莊陸杰,仿FX3G FX3U我都測試過了沒問題。
三菱家現(xiàn)在高端一些的PLC 5U Q系列這些,還可以走M(jìn)C通訊協(xié)議,跳過這個MX Component,網(wǎng)上也有相應(yīng)的庫文件。具體搭配使用呢還是看實(shí)際情況和個人喜好。
最后附上一些資料,我的軟件是VS2019編的,如果你們運(yùn)行的時候報錯,那是因為電腦沒有安裝MX Component,裝一下就好了,我部署的時候發(fā)現(xiàn)的這個事情。
PLC程序仿真跑起來,MX Component建立仿真驅(qū)動,就能無硬件情況下運(yùn)行我這個軟件了。里面的CX3G類就是我封裝的上面說的核心的東西