Mitsubishi 三菱PLC FX5U-32M與上位機通訊(C#)


  本文介紹的是如何在PC端(工控機)上利用MX COMPONENT軟件通過直連或者經過交換機的連接方式建立與三菱PLC(FX5U-32M)之間的通訊。

一、軟件介紹與配置

三菱通訊的軟件為MX COMPONENT,可以去百度下載,安裝的話,沒什么特別要注意的地方,就直入主題,從配置軟件開始

 在安裝完成后,在運行的框中輸入C 就可找到這個軟件,然后打開。

然后點擊Wizard…

1.PC端與三菱PLC通過網線直連配置

點擊Next>…

注意:站號數字可以隨便填,目前樓主只試過1 ,2 分別 用於直連和通過交換機連接,在后面軟件讀寫的時候會用到!

 選擇的話,不需要選擇其他的,就這么選擇就好。Time out 是嘗試連接的時間,可以改小或者改大。
點擊Next>…

Adapter 需要選擇 Realtek PCIe Family Controller ,IP Address 是你本機的地址,如果顯示是 0.0.0.0的話,檢查你的電腦跟三菱PLC的連線是否正常。
點擊Next>…

 點擊Next>…

Comment 是對連接的命名。

2.PC端與三菱PLC通過交換機連接配置

PC端經過交換機與PLC連接的差別如下

 取消如圖的勾選,然后點擊 Find CPU(Buitt-in Ethernet port)on network

點擊OK ,然后一直點擊Next… 就行了!
千萬注意的是:你使用的電腦的IP一定要設置跟你的PLC在一個網段!!!!
(例如你的PLC的地址為 192.168.1.1 那么你的PC段的V4地址一定要是 192.168.1.xxx (xxx的范圍是0~255))

點擊Finish…
然后點擊Connection test …

 然后點擊Test…

出現這個界面以后,再用demo程序 測試連接,

3.測試軟件進行通訊測試

 點擊測試連接后…

 連接結果顯示"連接PLC成功…",需要注意的是,這個站號與你開始配置 MX COMPONENT軟件時候的 Logical station number 要一致!
接下來再測試下讀取數據, 按 讀取數據 按鈕

由於三菱FX5U內沒有程序,所以顯示讀取到的數據為0;

再進行寫測試,按下 寫入數據 按鈕

 

 再讀取一次數據,

到這,通訊測試完畢!

4.測試軟件代碼

主要代碼如下(示例):

 1 private void StartTest()  2  {  3             int iReturnCode;  4                 textBox1.Text = "開始連接PLC";  5                 axActUtlType1.ActLogicalStationNumber = Convert.ToInt16(textBox6.Text);碼  6                 axActUtlType1.ActPassword = "";  7                 iReturnCode = axActUtlType1.Open();//嘗試連接PLC,如果連接成功則返回值為0
 8                 if (iReturnCode == 0)  9  { 10                     textBox1.Text = "連接PLC成功..."; 11 
12  } 13                 else
14  { 15                     textBox1.Text = "連接PLC不成功..."; 16  } 17         }

 

 1  private void ReadText()  2  {  3             int iReturnCode;  4             String szDeviceName = "";  5             szDeviceName = textBox7.Text;  6             int iNumberOfData = Convert.ToInt16(textBox9.Text);  7             short[] arrDeviceValue;  8 
 9  System.String[] arrData; 10 
11             int iNumber; 12 
13             arrDeviceValue = new short[iNumberOfData]; 14             
15 
16 
17             iReturnCode = axActUtlType1.ReadDeviceBlock2(szDeviceName, iNumberOfData, out arrDeviceValue[0]); 18 
19             if (iReturnCode == 0) 20  { 21                 textBox4.Text = "讀取成功"; 22 
23                 arrData = new System.String[iNumberOfData]; 24 
25                 
26                 for (iNumber = 0; iNumber < iNumberOfData; iNumber++) 27  { 28 
29                     arrData[iNumber] = arrDeviceValue[iNumber].ToString(); 30 
31  } 32 
33                 textBox2.Text = arrData[iNumber-1]; 34  } 35             else
36  { 37                 textBox4.Text = "讀取失敗"; 38  } 39 
40         }

總結
測試的程序很簡單,只能簡單的讀取一些 Block 數據(1個數據位 = 2Byte = 16位數據) ,當然也可以讀取 Random,只不過如果讀M100的話,數據位是1,會讀到M115…
還有就是,即使經過交換機,通過這個方法暫時也沒辦法在用PLC編程軟件監視的同時,進行通訊測試,所以在實際項目中,用交換機的意義不大(如果這個問題沒有解決的話), 如果后續我解決了這個問題,會更新此博客滴…現在真的是能力有限,目前仍在努力學習做C#上位機軟件與各種工業設備的通訊!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM