項目中會常常用到上位機與PLC之間的串口通訊,本文介紹一下C#如何編寫上位機代碼html
與三菱FX3U進行通信編程
1. 第一種方法是本身寫代碼實現,主要代碼以下:dom
//對PLC的Y7進行置1 byte[] Y007_ON = { 0x02, 0x37, 0x30, 0x37, 0x30, 0x35, 0x03, 0x30, 0x36 }; //選擇串口參數 SerialPort sp = new SerialPort("COM5", 9600, Parity.Even, 7); //打開串口 sp.Open(); //寫入數據 sp.Write(Y007_ON, 0, Y007_ON.Length); //關閉串口 sp.Close();
該方法的缺點在於咱們首先要熟悉三菱PLC的通信協議,而後根據通訊規程來編寫通訊代碼工具
舉例說就是要對三菱PLC的Y007口進行操做,咱們須要知道要對三菱PLC發送什麼參數,這網站
裏能夠參考百度文庫的一篇文章:this
https://wenku.baidu.com/view/157632dad05abe23482fb4daa58da0116c171fa8.htmlspa
2.使用MX COMPONENT軟件code
2.1 MX Component 是一個工具,經過使用該工具,能夠在無需具有通訊協議及模塊知orm
識的情況下實現從計算機至三菱PLC的通訊。htm
MX Component的安裝使用教程網上有不少,順便找一下就能夠找到合適的,這樣
要說明的是MX Component工具,使用手冊和編程手冊均可以在三菱的網站上下載。
工具下載:
https://cn.mitsubishielectric.com/fa/zh/download/dwn_idx_softwareDetail.asp?sid=45
手冊下載:
https://cn.mitsubishielectric.com/fa/zh/download/dwn_idx_manual.asp
下載安裝以後sample路徑(win10,默認安裝):C:\MELSEC\Act\Samples
2.2 介紹安裝配置好MX Component以後C#使用ActUtlType控件進行串口通訊
首先要引用,這兩個DLL在例程中能夠找到
//Logical Station Number的值和在MX Component中設置同樣 int logicalStationNumber = 0; //添加axActUtlType對象 AxActUtlTypeLib.AxActUtlType axActUtlType = new AxActUtlTypeLib.AxActUtlType(); //不加這三句會報 //引起類型爲「System.Windows.Forms.AxHost+InvalidActiveXStateException」的異常 ((System.ComponentModel.ISupportInitialize)(axActUtlType)).BeginInit(); this.Controls.Add(axActUtlType); ((System.ComponentModel.ISupportInitialize)(axActUtlType)).EndInit(); //open axActUtlType.ActLogicalStationNumber = logicalStationNumber; axActUtlType.ActPassword = ""; axActUtlType.Open(); //Y7寫入1 int wirteData = 1; axActUtlType.WriteDeviceRandom("Y7", 1, ref wirteData); //D0寫入100 int wirteData1 = 100; axActUtlType.WriteDeviceRandom("D0", 1, ref wirteData1); //讀D0數據 int readData; axActUtlType.ReadDeviceRandom("D0", 1, ref readData); //close axActUtlType.Close();
這裏只是簡單介紹,更深刻的內容仍是去看編程手冊和例程。