目录

VS2022-使用MX-Component读取三菱PLC32位数据测试

VS2022 使用MX Component读取三菱PLC32位数据测试

这里写目录标题

一、测试前准备

1、VS软件

我这边下载的是最新的2022的版本,如果你是其他的版本测试过程也是差不多的,这里使用C#进行测试。

2、三菱软件

三菱 GX WORKS2 编程软件,版本不限

3、MX Component

具体配置可以看之前的设置过程

二、测试过程

MX Component下载以后在它的示例项目中是有读取16位数据的C#程序的,但是读取32位的数据并没有提及,网上找了一些方法也感觉比较繁琐,这里有一个比较简便的方法可以试一下。

1、MX Component示例项目路径

右击你的Communication Setup Utility,找到文件所在的路径,然后返回 ……\MELSOFT\ACT\Samples 一般都是在这个Samples文件夹里面,你可以找到自己擅长的编程语言示例,这里我打开的是Vcs.NET里的示例项目 打开后直接F5就可以运行测试 https://i-blog.csdnimg.cn/blog_migrate/5a238fa2a1d297c82325cd804407f451.png 具体测试过程我就不赘述了,网上有很多。

2、创建测试项目

我们这里使用VS2022新建一个windows窗体应用 https://i-blog.csdnimg.cn/blog_migrate/d51143f84644fdf722f7207c468912f4.png 界面上放一个textBox用于显示数据 再放一个button用于触发读取数据事件 https://i-blog.csdnimg.cn/blog_migrate/6ca98d0add9f78a12060b1b914665576.png 引用一下act文件 https://i-blog.csdnimg.cn/blog_migrate/b8ac4a6db05796e131c72a6b39aae081.png

3、代码编写

打开连接什么的可以参考示例项目,或者网上有好多案例 关键的按钮触发事件代码如下,通过点击按钮,读取D410的数据:

private void button1_Click(object sender, EventArgs e)
{
short[] MX = new short[2];
int iReturnCode = axActUtlType.ReadDeviceBlock2("D410", 2, out MX[0]);
byte[] L = System.BitConverter.GetBytes(MX[0]);
byte[] H = System.BitConverter.GetBytes(MX[1]);
byte[] f = new byte[H.Length + L.Length];
Buffer.BlockCopy(L, 0, f, 0, L.Length);
Buffer.BlockCopy(H, 0, f, L.Length, H.Length);
//float FF = BitConverter.ToSingle(f, 0); //转换成浮点数
int FF = BitConverter.ToInt32(f, 0); //转换成32位Int型
textBox1.Text = FF.ToString();
}

可以最终显示浮点数,或者是32位Int型 主要就是通过把高低字拼接到一起,最终整合转换类型显示就可以了 如果需要多次调用可以写成一个类,这样就很方便了,这里只是测试一下

三、测试结果

读取32位整数 https://i-blog.csdnimg.cn/blog_migrate/19fb9d47fa636801e821fefd9c2e2790.png 读取浮点数 由于PLC里面的有效位数是7位,所以PLC里显示的最后以为可能不一样,只要把我们的VS上的有效数位设置成一样的就完全一样了 https://i-blog.csdnimg.cn/blog_migrate/116a14d15b619f341efb350b870ac9c0.png 如果有更好的方法,欢迎一起分享讨论 Ending~