经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C#使用MX Component实现三菱PLC软元件数据采集的完整步骤(仿真)
来源:cnblogs  作者:yangbe1  时间:2024/5/6 16:15:49  对本文有异议

前言

本文介绍了如何使用三菱提供的MX Component插件实现对三菱PLC软元件数据的读写,记录了使用计算机仿真,模拟PLC,直至完成测试的详细流程,并重点介绍了在这个过程中的易错点,供参考。

 

用到的软件:

1. PLC开发编程环境GX Works2,GX Works2下载链接 https://www.mitsubishielectric-fa.cn/site/file-software-detail?id=18

2.实现计算机与可编程控制器通信的软件工具MX Component,MX Component下载链接 https://www.mitsubishielectric-fa.cn/site/file-software-detail?id=27

 
配置流程:
1.GX Works2的配置流程:
(1)新建工程,选择PLC型号;

 (2)修改PLC参数,PLC文件设置=>使用一下文件=>命名,设置合适的容量大小,扩容为了后期测试时使用(该操作可选);

  (3)修改软元件设置,使用上一步骤中的扩容操作,三菱PLC设计上位机数据操作区一般选择D区,R区和W区亦可(该操作可选);

   (4)调试中选择=>模拟开始,出现Simulator窗口,Mode和RUN绿灯长亮即表示仿真正常;

 

2.MX Component配置流程:

(1)找到MX Component安装的对应软件,选择“Communication Setup Utility”,以管理员身份运行;

(2)添加Logical Station Number(通道号);(这里以99为例)

(3)由于本案例采用的是GX Works2仿真方案,选择GX Simulator2,选择CPU型号,下一步即可;

(4)选择描述,,以Test为例;

(5)配置完成后,进行测试,显示successful表示连接成功;连接成功后可以关掉该软件,不影响正常通讯;

 

3.C#上位机的程序测试:

  1. using ActUtlTypeLib;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. namespace MELSEC.MX.Test
  13. {
  14. public partial class Form1 : Form
  15. {
  16. private ActUtlType m_plc;
  17. public Form1()
  18. {
  19. InitializeComponent();
  20. m_plc = new ActUtlType();
  21. }
  22. private void Form1_Load(object sender, EventArgs e)
  23. {
  24. cmb_LogicalStationNumber.Items.Clear();
  25. for (int i = 1;i<=256;i++)
  26. {
  27. cmb_LogicalStationNumber.Items.Add(i.ToString());
  28. }
  29. }
  30. private void btn_Comm_Click(object sender, EventArgs e)
  31. {
  32. try
  33. {
  34. int logNUM = Convert.ToInt16(cmb_LogicalStationNumber.Text);
  35. m_plc.ActLogicalStationNumber=logNUM;
  36. m_plc.ActPassword = "";
  37. if (m_plc.Open() != 0)
  38. {
  39. btn_Comm.BackColor = Color.Gray;
  40. btn_Comm.Text = "未建立链接";
  41. m_plc.Close();
  42. m_plc = null;
  43. }
  44. else
  45. {
  46. btn_Comm.BackColor = Color.Green;
  47. btn_Comm.Text = "已连接";
  48. }
  49. }
  50. catch (Exception )
  51. {
  52. throw;
  53. }
  54. }
  55. private void btn_Read_Click(object sender, EventArgs e)
  56. {
  57. try
  58. {
  59. Thread thread = new Thread(() =>
  60. {
  61. while (true)
  62. {
  63. txb_D0.Invoke(new Action(() =>
  64. {
  65. txb_D0.Text = ReadDeviceValue("D0", 2)[0].ToString();
  66. txb_D1.Text = ReadDeviceValue("D0", 2)[1].ToString();
  67. txb_R100.Text = ReadDeviceValue("R100", 1)[0].ToString();
  68. txb_W500.Text = ReadDeviceValue("W500", 1)[0].ToString();
  69. }));
  70. Thread.Sleep(300);
  71. }
  72. });
  73. thread.IsBackground = true;
  74. thread.Start();
  75. }
  76. catch (Exception)
  77. {
  78. throw;
  79. }
  80. }
  81. private string[] ReadDeviceValue(string DeviceName,int NumberOfData)
  82. {
  83. int iReturnCode;
  84. short[] arrDeviceValue;
  85. string szDeviceName;
  86. string[] arrData= { };
  87. int iNumberOfData;
  88. try
  89. {
  90. szDeviceName = string.Join("\n", DeviceName);
  91. iNumberOfData = Convert.ToInt32(NumberOfData);
  92. arrDeviceValue = new short[iNumberOfData];
  93. iReturnCode = m_plc.ReadDeviceBlock2(szDeviceName, iNumberOfData, out arrDeviceValue[0]);
  94. if (iReturnCode == 0)
  95. {
  96. arrData = new string[iNumberOfData];
  97. for (int i = 0; i < iNumberOfData; i++)
  98. {
  99. arrData[i] = arrDeviceValue[i].ToString();
  100. }
  101. return arrData;
  102. }
  103. return arrData;
  104. }
  105. catch (Exception ex)
  106. {
  107. MessageBox.Show(ex.Message, Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
  108. return arrData;
  109. }
  110. }
  111. }
  112. }

 Demo演示

 

原文链接:https://www.cnblogs.com/Jerry9521/p/18174620

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号