当前位置:   article > 正文

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

三菱fx3u 232通讯代码21

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. 1 private void ReadOrder(string Add)
  2. 2 {
  3. 3 Byte[] sendData = new Byte[20];
  4. 4 sendData[0] = 0x05; //ENQ
  5. 5 sendData[1] = 0x30; //站号
  6. 6 sendData[2] = 0x30;
  7. 7 sendData[3] = 0x46; //PC号
  8. 8 sendData[4] = 0x46;
  9. 9 sendData[5] = 0x57; //命令 “WR” 57 52
  10. 10 sendData[6] = 0x52;
  11. 11 sendData[7] = 0x30; //报文等待
  12. 12 sendData[8] = (byte)Convert.ToChar(Add[0]); //起始软元件 “D0200
  13. 13 sendData[9] = (byte)Convert.ToChar(Add[1]);
  14. 14 sendData[10] = (byte)Convert.ToChar(Add[2]);
  15. 15 sendData[11] = (byte)Convert.ToChar(Add[3]);
  16. 16 sendData[12] = (byte)Convert.ToChar(Add[4]);
  17. 17 sendData[13] = 0x30; //软元件点数 默认“01
  18. 18 sendData[14] = 0x31;
  19. 19 int allInt = 0;
  20. 20 for (int i = 1; i <= 14; i++)
  21. 21 {
  22. 22 allInt += (int)sendData[i]; //进行和校验
  23. 23 }
  24. 24 string allStrX = allInt.ToString("X"); //转换成十六进制
  25. 25 sendData[15] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 2, 1)); //提取十六进制倒数第二位的ASCII值
  26. 26 sendData[16] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 1, 1)); //提取十六进制倒数第一位的ASCII值
  27. 27 sendData[17] = 0x0D; //CR
  28. 28 sendData[18] = 0x0A; //LF
  29. 29 this.PLC_SendData(sendData);
  30. 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. 1 private void WriteOrder(string Add,string Con)
  2. 2 {
  3. 3 Byte[] sendData = new Byte[20];
  4. 4 sendData[0] = 0x05; //ENQ
  5. 5 sendData[1] = 0x30; //站号
  6. 6 sendData[2] = 0x30;
  7. 7 sendData[3] = 0x46; //PC号
  8. 8 sendData[4] = 0x46;
  9. 9 sendData[5] = 0x57; //命令 “WR” 57 57
  10. 10 sendData[6] = 0x57;
  11. 11 sendData[7] = 0x30; //报文等待
  12. 12 sendData[8] = (byte)Convert.ToChar(Add[0]); //起始软元件 “D0100
  13. 13 sendData[9] = (byte)Convert.ToChar(Add[1]);
  14. 14 sendData[10] = (byte)Convert.ToChar(Add[2]);
  15. 15 sendData[11] = (byte)Convert.ToChar(Add[3]);
  16. 16 sendData[12] = (byte)Convert.ToChar(Add[4]);
  17. 17 sendData[13] = 0x30; //软元件点数 默认“01
  18. 18 sendData[14] = 0x31;
  19. 19 sendData[15] = (byte)Convert.ToChar(Con[0]); //内容 “0001
  20. 20 sendData[16] = (byte)Convert.ToChar(Con[1]);
  21. 21 sendData[17] = (byte)Convert.ToChar(Con[2]);
  22. 22 sendData[18] = (byte)Convert.ToChar(Con[3]);
  23. 23 int allInt = 0;
  24. 24 for (int i = 1; i <= 18; i++)
  25. 25 {
  26. 26 allInt += (int)sendData[i]; //进行和校验
  27. 27 }
  28. 28 string allStrX = allInt.ToString("X"); //转换成十六进制
  29. 29 sendData[19] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 2, 1)); //提取十六进制倒数第二位的ASCII值
  30. 30 sendData[20] = (byte)Convert.ToChar(allStrX.Substring(allStrX.Length - 1, 1)); //提取十六进制倒数第一位的ASCII值
  31. 31 sendData[21] = 0x0D; //CR
  32. 32 sendData[22] = 0x0A; //LF
  33. 33 this.PLC_SendData(sendData);
  34. 34 }
写入命令
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/80968?site
推荐阅读
相关标签
  

闽ICP备14008679号