本文介紹的是如何在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#上位機軟件與各種工業設備的通訊!
