三菱PLCMX Component與C#連接應(yīng)用說明
一、MX Component組件安裝
組件下載地址https://mitsubishielectric.yangben.cn/assets/detail/5b7ce314b2dcac27e0b97d0c
二、安裝軟件
?

件序列號:570-986818410
?
三、安裝完成后電腦顯示圖標

1-1圖示
?
四、MX?連接PLC過程
雙擊1-1圖示軟件圖標彈出

點擊上圖紅框內(nèi)按鈕添加所需連接PLC

此處登陸站號為C# 或是C++等上位機語言連接庫內(nèi)所需調(diào)用站號用來讓上位機可以區(qū)分使用的哪一個連接,注此處設(shè)置不是PLC本體站號。
輸入站號,請不要與已有站號重復(fù)??單擊[Next]

?
選擇PLC端端口,藍色為示例為串口


?選擇上位機端使用串口(對應(yīng)COM口),注上兩圖COM口為上位機與MX-COM需一致單擊?[NEXT]

選
擇PLC端連接方式此處以CPU模塊直連為例

選擇PLC ??CPU型號,設(shè)置通訊波特率

完成以上步聚?單擊?[NEXT]?

選擇PLC在你的線路上是屬于從站,還是主站,如果是CPU模塊上的串口請選擇主站單擊?[next]

此處注釋可以填也可以不填寫,單擊完成

至此我們已經(jīng)完成MX?連接PLC的相關(guān)設(shè)置,下面我們測試連接
接
選擇Connection test?選項卡單擊?[Test]?

如果反回為?Communication test is successful表示MX控制已與PLC成功連接,Result=0
至此我們的MX控件在電腦上的布置已完成。
五、C#?連接MX控制,通過MX控制操作PLC過程
??
?C#調(diào)用MX控件需要的引用庫

、
引用文件位置,MX軟件安裝區(qū)

?C#采用Control文件內(nèi)庫文件
C++采用Include文件夾內(nèi)文件,文件名與C#文件名稱一致
使用命名空間

創(chuàng)建C#連接MX對象
?

添加對象連接站號即MX標示的站號
?


此處站號必須一致
測試并打開連接
?

Open函數(shù)返回值為零則已成功連接,若返回為其它值則連接失敗
連接成功后我們就可以直接調(diào)用庫里所對應(yīng)的函數(shù)來讀寫PLC數(shù)據(jù)了
注只限于16進制與位讀寫如需讀寫32位數(shù)據(jù)請做相應(yīng)數(shù)據(jù)轉(zhuǎn)換
單寫

例:MY.SetDevice2("M1108", 1);返回為0時為寫入成功,其它數(shù)值為失敗寫入失敗
?
單讀

?多讀

多寫

例:

返回為0時為寫入成功,其它數(shù)值為失敗寫入失敗
?
C#轉(zhuǎn)換文件如下
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
?
namespace?WindowsFormsApplication2
{
????class?DataC
{
????????public?void?Dest16To32(short?SourceB,?short?SourceA,out?int?dest)
????????{
?????????????//16位轉(zhuǎn)32位
????????????//A代表低位,B代表高位
????????????dest = 0;
????????????dest = dest | (SourceB & 0x0000ffff);
????????????dest = (dest << 16) | (SourceA & 0x0000ffff);
????????}
????????public?void?Dest32To16(Int32?SourceNum,?out?short?SourceH,?out?short?SourceL)
????????{
???????????????//32分解雙16位
????????????SourceH =?Convert.ToInt16(SourceNum >> 16);
????????????SourceL =?Convert.ToInt16((SourceNum << 16) >> 16);
????????}
?
????????public?void?int32tofloat(int?i,out?float?x)
????????{
//DINT32位轉(zhuǎn)實數(shù)(浮點數(shù))
????????????byte[] intBuff =?BitConverter.GetBytes(i); ????// 將 int 轉(zhuǎn)換成字節(jié)數(shù)組
???????????// i = BitConverter.ToInt32(intBuff, 0); ??????????// 從字節(jié)數(shù)組轉(zhuǎn)換成 int
?????????????x =?BitConverter.ToSingle(intBuff, 0); ??????// 從字節(jié)數(shù)組轉(zhuǎn)換成 float
????????}
????????public?void?floattoint32(float?x,out?Int32?i)
????????{
//實數(shù)(浮點數(shù))轉(zhuǎn)32位DINT
????????????byte[] floatBuff =?BitConverter.GetBytes(x); ??// 將 Single 轉(zhuǎn)換成字節(jié)數(shù)組
?????????????// x = BitConverter.ToSingle(floatBuff, 0); ??????// 從字節(jié)數(shù)組轉(zhuǎn)換成 float
????????????i =?BitConverter.ToInt32(floatBuff, 0); ??????????// 從字節(jié)數(shù)組轉(zhuǎn)換成 int
????????}
????????}
}
庫內(nèi)可應(yīng)用函數(shù)

C++ VB?等執(zhí)行類似于C#
函數(shù)使用祥情請查閱

==

示例文檔位置?