解決:this.invoke(new methodinvoker(delegate()
));2.想要程式一直讀取plc暫存器的值並顯示出來,於是使用了乙個while迴圈,但這時結果顯示有誤。
解決:將這個while迴圈寫入執行緒中。
注意使用執行緒的話,需要引用庫,新增乙個using system.threading;
new thread(delegate()
else if (lpshdevicevalue == 0)
else
this.lamp.text = lpshdevicevalue.tostring();
}));}}
}).start();
3.win10系統,debug的時候出現錯誤號:80040154,顯示註冊類問題。
解決:將執行平台變為x86,configuration manager-active solution platform(x86)
4.使用readdevicerandom2(lpszdevicename, inumberofdevicename, out lpshdevicevalue)函式時,當需要讀取幾個連續的device時,需要將這幾個裝置名稱用回車間隔開來。
lpszdevicename = "sd210" + "\n" + "sd211" + "\n" + "sd212" + "\n" + "sd213";
rreturncode = act.readdevicerandom2(lpszdevicename, inumberofdevicename, out lpshdevicevalue[0]);
這樣就會返回一串值的位址。
5.字串的擷取
tihex1 = weekhex.substring(0, 2) + datehex.substring(0, 2);
0是擷取的起始位置(也就是最高位),2是需要擷取的字元個數。
6.十進位制轉換成十六進製制及字串
this.showread.text = lpshdevicevalue.tostring();//轉換字串
displaydata = lpshdevicevalue.tostring("x");//轉換十六進製制
7.將ascii碼轉換成十進位制數
//byte array = system.text.encoding.ascii.getbytes (lpshdevicevalue.tostring());
//string asciistr2 = null;
//for (int i = 0; i < array.length; i++)
//將十進位制轉換成ascii碼
displaydata = lpshdevicevalue.tostring("x");
byte array = new byte[(displaydata.length+1)/2];
int index = ((displaydata.length + 1) / 2)-1;
for (int i = 0; i < displaydata.length; i += 2)
//注意這裡,由於plc中儲存時低八位與高八位呼喚,所以這裡將displaydata最高位賦值給array最低位
8.什麼時候需要用到強制轉換
int是32位,short是16位
將short轉換成int是可以自動轉換
將int換成short需要強制轉換
9.乙個以bcd碼形式在plc儲存的值,若它以十進位制形式作為返回值,則這個返回值的十六進製制是這個bcd碼
例如:乙個bcd碼是0001 0111 0001 0000,即1710
將這個二進位制bcd碼轉換成十進位制就是5904,而5904的十六進製制正好是1710
10.三菱q系列plc,儲存cpu時間的暫存器
sd210,年的低兩位,月;sd211,日期,小時;sd212,分鐘,秒鐘;sd213,年的高兩位,星期
11.基於vs讀取三菱q系列plc的步驟
step1:新增引用,actutltypelib
step2:定義乙個這樣的類,actutltype act = new actutltype();//act是這類的名稱
step3:開啟,讓pc開始讀取plc程式,ireturncode =act.open();
若返回0,則開啟成功
step4:讀取,ireturncode = act.readdevicerandom2( lpszdevicename,inumberofdevicename,out lpshdevicevalue);
寫入,wreturncode = act.writedevicerandom2(lpszdevicename, inumberofdevicename, ref lpshdevicevalue);
step5:停止讀取,returncode = act.close();
12.使用communication setting utility建立乙個新的logical station number時,最後提示失敗的話。
嘗試使用管理員身份開啟就可以解決了。
三菱FX系列PLC學習
1.plc工作原理 plc將程式儲存在使用者儲存器當中,驅動其執行,相對比微型計算機軟體,plc程式則不同的是,微型計算機整個流程則是從規定的開始 至結束完整工作流程。相對與plc執行,則是從位於0位址開始,掃瞄完成整個程式的位址,則算完成了一次掃瞄週期,然後再從新從0位址開 始掃瞄,整個工作流程為...
三菱Q系列讀寫資料
這兩天看了下三菱q系列的mc協議,網上沒找到類似的delphi 自己手寫乙份,以下是傳送讀指令的 貼出來,有用的朋友可以拿去看看,注 這份是qna的c24模組的幀3c相容的第四種格式的協議規範,時間關係,其他的格式沒寫,有需要的博友到通訊手冊裡找找就有了。procedure tform1.butto...
三菱FX系列PLC的通訊協議
一 fx系列與計算機通訊所用到的命令碼 命令命令碼 目標裝置 元件讀取 cmd 0 x,y,m,s,t,c,d 元件寫入 cmd 1 x,y,m,s,t,c,d 強迫 on cmd 7 x,y,m,s,t,c 強迫 off cmd 8 x,y,m,s,t,c 所用字元 enq05h 來自計算機的請求...