上位机与三菱FX3U通过FX-232-BD通信

Posted yangmengke2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上位机与三菱FX3U通过FX-232-BD通信相关的知识,希望对你有一定的参考价值。

PLC侧设置:

和校验+协议4

技术分享图片

 

读D200单字: 05 30 30 46 46 57 52 30 44 30 32 30 30 30 31     返回“201”:02 30 30 46 46 30 30 43 39 03

技术分享图片
 1         private void ReadOrder(string Add)
 2         {
 3             Byte[] sendData = new Byte[20];
 4             sendData[0] = 0x05;           //ENQ
 5             sendData[1] = 0x30;           //站号
 6             sendData[2] = 0x30;
 7             sendData[3] = 0x46;           //PC号
 8             sendData[4] = 0x46;
 9             sendData[5] = 0x57;           //命令  “WR” 57 52
10             sendData[6] = 0x52;
11             sendData[7] = 0x30;           //报文等待
12             sendData[8] = (byte)Convert.ToChar(Add[0]);          //起始软元件 “D0200”
13             sendData[9] = (byte)Convert.ToChar(Add[1]);
14             sendData[10] = (byte)Convert.ToChar(Add[2]);
15             sendData[11] = (byte)Convert.ToChar(Add[3]);
16             sendData[12] = (byte)Convert.ToChar(Add[4]);
17             sendData[13] = 0x30;           //软元件点数  默认“01”
18             sendData[14] = 0x31;
19             int allInt = 0;
20             for (int i = 1; i <= 14; i++)
21             {
22                 allInt += (int)sendData[i];  //进行和校验
23             }
24             string allStrX = allInt.ToString("X");  //转换成十六进制
25             sendData[15] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 2, 1));  //提取十六进制倒数第二位的ASCII值
26             sendData[16] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 1, 1));  //提取十六进制倒数第一位的ASCII值
27             sendData[17] = 0x0D;         //CR
28             sendData[18] = 0x0A;         //LF
29             this.PLC_SendData(sendData);
30         }
读取命令

写1到D100: 05 30 30 46 46 57 57 30 44 30 31 30 30 30 31 30 30 30 31    返回:06 30 30 46 46

技术分享图片
 1         private void WriteOrder(string Add,string Con)
 2         {
 3             Byte[] sendData = new Byte[20];
 4             sendData[0] = 0x05;           //ENQ
 5             sendData[1] = 0x30;           //站号
 6             sendData[2] = 0x30;
 7             sendData[3] = 0x46;           //PC号
 8             sendData[4] = 0x46;
 9             sendData[5] = 0x57;           //命令  “WR” 57 57
10             sendData[6] = 0x57;
11             sendData[7] = 0x30;           //报文等待
12             sendData[8] = (byte)Convert.ToChar(Add[0]);          //起始软元件 “D0100”
13             sendData[9] = (byte)Convert.ToChar(Add[1]);
14             sendData[10] = (byte)Convert.ToChar(Add[2]);
15             sendData[11] = (byte)Convert.ToChar(Add[3]);
16             sendData[12] = (byte)Convert.ToChar(Add[4]);
17             sendData[13] = 0x30;           //软元件点数  默认“01”
18             sendData[14] = 0x31;
19             sendData[15] = (byte)Convert.ToChar(Con[0]);          //内容 “0001”
20             sendData[16] = (byte)Convert.ToChar(Con[1]);
21             sendData[17] = (byte)Convert.ToChar(Con[2]);
22             sendData[18] = (byte)Convert.ToChar(Con[3]);
23             int allInt = 0;
24             for (int i = 1; i <= 18; i++)
25             {
26                 allInt += (int)sendData[i];  //进行和校验
27             }
28             string allStrX = allInt.ToString("X");  //转换成十六进制
29             sendData[19] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 2, 1));  //提取十六进制倒数第二位的ASCII值
30             sendData[20] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 1, 1));  //提取十六进制倒数第一位的ASCII值
31             sendData[21] = 0x0D;         //CR
32             sendData[22] = 0x0A;         //LF
33             this.PLC_SendData(sendData);
34         }
写入命令

 

以上是关于上位机与三菱FX3U通过FX-232-BD通信的主要内容,如果未能解决你的问题,请参考以下文章

三菱FX系列PLC与上位机易控INSPEC软件ModbusTCP 通信

三菱的FX3U,能否直接与电脑进行基于MODBUS协议的通信?

C#实现上位机与PLC通信

2021-12-20 WPF上位机 115-了解三菱PLC

2021-12-20 WPF上位机 115-了解三菱PLC

三菱Q系列PLC与上位机易控组态软件ModbusTCP通信案例