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