上位机通过MX component version 组件与三菱PLC通信解决办法,最新MX component version5支持X64

注1:适用编程语言: VC/C++、VB、C#、LabView等
注2:本说明仅提供C#编写的样板实例及原代码,仅用于通信测试,而其它编程语言请参考C#实例的参数设置,自行研习:

第一节:MX Component Version软件与手册下载

下载地址:
三菱MXComponent Version4

三菱MXComponent Version5
在这里插入图片描述
可供下载的是:MX组件版本4/5(中文版)
手册位置:
在这里插入图片描述

注3:本说明主要使用的是MX组件版本4编程手册(英文版),通信要用到的参数请在此手册中去查询.该手册支持FX5U相关参数,如有需要中文版本,可在三菱中文官网上自行下载.

第二节:MX Component Version 软件的使用与通信测试

在与上位机通信测试之前,首先与MX Component Version软件进行通信测试。

注:以下测试步骤Mx Component Version4与Mx Component Version5 没有多大区别

2.1 PLC以太网地址设置:

2.11 查询电脑的IP地址:

在win7 系统左下方,点击开始按钮,然后在搜索程序和文件选框中输入CMD,打开命令提示符窗口;
图2.11-1 打开命令提示符窗口
在命令提示符中输入 ipconfig,然后按回车键:
显示当前电脑的IP地址:
图2.11-2 在命令提示符窗口查询IP地址
因为当前样例的电脑IP为192.168.1.171;那么设置PLC的IP段则在192.168.1.0~192.168.1.255这个范围里。

注4:必须与电脑IP区别开来,不能写成一样的

2.12 打开GX works2 与PLC进行通信测试

注5:使用USB或串口(不能用网线)与电脑直连进行PLC的IP设置

打开GX Works2软件,然后点击新建(Ctrl+N):
图2.12-1 打开GX Works2软件
选择与目标PLC相同的型号,然后点击确定:
图2.12-2 选择系列与机型

注6:本样例是以Q26UDV为例来测试.

然后在导航栏选定连接目标,然后双击Connection1:
在这里插入图片描述
打开连接目标设置Connection1窗口进行设置:
在这里插入图片描述
双击计算机侧I/F的 Serial USB 图标:
在这里插入图片描述
选择USB连接选项,然后点击确定。
双击可编程控制器侧I/F栏 PLC Module图标:

在这里插入图片描述
在CPU模式的下拉选框里,选择QCPU(Q模式),然后点击确定。
双击其他站指定栏 No Specification 图标:在这里插入图片描述
根据需要来设定,然后点击确定。

注7:无特殊要求的话,选择默认即可

以上的设置完成后,然后单击通信测试(T)按钮,如果弹出以下的提示,则说明USB连接成功:
在这里插入图片描述
点击确定后,退出该设置界面。
然后在导航栏选定工程,然后双击PLC参数:
在这里插入图片描述
打开PLC参数设置界面,选择内置以太网端口设置,如下图所示:
在这里插入图片描述
当前样例的IP地址设置为192.168.1.39,其它的选择默认。

注8:保证IP地址的范围在【192.168.1.0~192.168.1.255】之间,且不与电脑IP相同即可

如果不确定你的输入是否与其它PLC地址有冲突,可点击检查进行确认。
如果输入无冲突将会有如下提示:
在这里插入图片描述
确认无误后,点击设置结束按钮退出PLC参数设置界面。

点击转换/编译(C),选择转换+编译(C)或者按F4快捷键进行编译转换。
在这里插入图片描述
然后点击PLC写入(W)按钮进行地址写入:
在这里插入图片描述
然后选择参数+程序选项,点击执行进行写入操作:
在这里插入图片描述
操作完成后,关闭GX Works2软件。拔掉USB线,换上网线,然后进行下一步操作。

2.13 测试PLC IP地址:

在命令提示符中输入 ping 192.168.1.39 测试连接状态:
在这里插入图片描述
出现以上的信息,则说是电脑与PLC连接成功。

2.2 打开MX Version4 软件进行组件与PLC间通信测试

2.21 MX Version4软件

在win7 系统左下方,点击开始按钮,然后单击所有程序,在下拉菜单中选择MELSOFT-MX Component-Communication Setup Utility,打开软件设置窗口:

注:以下软件测试步骤Mx Component Version4与Mx Component Version5 没有多大区别。

在这里插入图片描述

注9:为防止出现不必要的权限问题,请右键以管理员权限运行

打开如下图所示:
在这里插入图片描述
点击Wizard按钮,将出现以下界面:
在这里插入图片描述
Logical station number输入数字1即可,然后点击Next。
在这里插入图片描述
在PC side I/F 选择Ethernet board,如上图所示:
在这里插入图片描述
在Connect module 下拉选框中选择 CPU module,如上图所示,
在这里插入图片描述
在 Protocol 下拉选框中选择TCP。
下面的Time Out的值 默认值就可以了,也可以选填为10000ms
然后点击NEXT按钮,弹出如下图所示:
在这里插入图片描述
可以在Host(IP Address)一栏中输入192.168.1.39,或者点击Find CPU(Built-in Ethernet port) on network 按钮进行自动查找。出现如下图所示:
图2.21-8 Find CPU(Built-in Ethernet port
选中目标PLC的型号,然后点击OK.

注10:如有多个同时连接的话,请注意所选目标PLC是否匹配

如进行Find CPU(Built-in Ethernet port)这个动作的话,下图所示的界面的相关参数会自动填写,如没有,则需要手动进行选择。
在这里插入图片描述

注11:如有多个CPU同时组合的话,请确定当前目标放在几号位置,如只有单个的话,默认为None.

在这里插入图片描述
与之前的的Logical station number 保持一致。点击Finish按钮,返回。

在connetion test 界面,点击Test按钮 进行测试,如出现以下信息,则说明通信连接成功。

在这里插入图片描述
完成上面所示操作,如果流程没有出错,且出现上图所示信息,说明MX Component Version4/5的组件完全可用于上位机上。

第三节:C# 与PLC通信测试

3.1 以太网连接用到的参数列表:

ActCpuType CPU型号 int类型
ActUnitType 设备连接方式 int类型(即设备型号)
ActProtocolType TCP/UDP int类型
ActTimeOut 连接超时时间 int类型
ActHostAddress 设备IP地址 string类型
ActDestinationPortNumber 端口号 int类型
本样例以Q26UDV为例,可在MX Component Version4 编程手册中查询相关参数信息:

1.ActCpuType:

查手册可得:
ActCpuType=0xD5; 转换成十进制 ActCpuType=213
在这里插入图片描述

2.ActUnitType:

查手册可得:
ActCpuType=0x2c; 转换成十进制 ActCpuType=44

在这里插入图片描述

3.ActProtocolType

查手册可得:
ActProtocolType=0x05; 转换成十进制 ActProtocolType =5

在这里插入图片描述

4.ActTimeOut

查手册可得:
ActTimeOut=10000 ms;
在这里插入图片描述

5.ActHostAddress

之前设置的PLC的IP地址为:192.168.1.39;

6.ActDestinationPortNumber

查手册可得:
ActDestinationPortNumber=5562;默认值为0;可以自己设定,但是对数据进行读写操作时,端口号要保持一致.
在这里插入图片描述

注:以上参数可通用,Mx Component Version4与Mx Component Version5 不同在于dll的引用方法不一样,具体方法可借鉴官方样例文档。
注:官方样例路径在 C:\MELSEC\Act\Samples\Vcs.NET\Act_2019文件夹下

3.2 C# winform界面

3.21 C# 程序实现组件引用

32位引用方法:
在这里插入图片描述
与PLC通信相关的组件具体两个文件在文件夹中体现的是:
在这里插入图片描述
工具箱中添加选项卡:

在这里插入图片描述
选择ActProgType Control v1.0 组件
在这里插入图片描述
点击确定后,在工具箱中会多出如下图所示的控件:
在这里插入图片描述
将如上图所示的控件用鼠标拖到窗体中,系统将自动引用如下图所示的两个组件:
在这里插入图片描述
其他的具体参考样例原代码

64位引用:
在这里插入图片描述

右键点击引用,选择浏览,找到上面的ActProgType64.exe文件,点击确定,将出现以下组件:
在这里插入图片描述

注I:如以上操作在文件执行时出现异常,强烈建议关闭杀毒软件;
注II:如在类库中引用此ActProgType64.exe文件,生成可引用的dll时,请将目标平台设成Any CPU,不要设置成X64(如果您现在使用的是最新的VS2022,请无视此注);

3.22 C# Demo样例窗体:

在这里插入图片描述
样例程序代码如下:

namespace Demo
{
    public partial class Form1 : Form
    {
        ActProg actprog = new ActProg();
        public Form1()
        {
            InitializeComponent();
        }

        private void TB_CpuType_TextChanged(object sender, EventArgs e)
        {
            
            actprog.CpuType = Convert.ToInt32(TB_CpuType.Text.Trim());
        }

        private void TB_UnitType_TextChanged(object sender, EventArgs e)
        {
            actprog.UnitType = Convert.ToInt32(TB_UnitType.Text.Trim());
        }

        private void TB_HostAddress_TextChanged(object sender, EventArgs e)
        {
            actprog.HostAddress = TB_HostAddress.Text.Trim();
        }

        private void TB_ProtocolType_TextChanged(object sender, EventArgs e)
        {
            actprog.ProtocolType = Convert.ToInt32(TB_ProtocolType.Text.Trim());
        }

        private void TB_TimeOut_TextChanged(object sender, EventArgs e)
        {
            actprog.TimeOut = Convert.ToInt32(TB_TimeOut.Text.Trim());
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (actprog.Open()==0)
            {
                MessageBox.Show("连接成功");
            }
            else
            {
                MessageBox.Show("连接失败");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            actprog.Open();
            textBox1.Text= actprog.Read("D1000");
            actprog.Close();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            actprog.Open();
           string send= actprog.Write(textBox2.Text.Trim(),"D1000");
           MessageBox.Show(send);
            actprog.Close();
        }

        private void TB_DestinationPortNumber_TextChanged(object sender, EventArgs e)
        {
            actprog.DestinationPortNumber = Convert.ToInt32(TB_DestinationPortNumber.Text.Trim());
        }
    }
}

测试连接结果如下:
在这里插入图片描述
写发送:
在这里插入图片描述
读接收:
在这里插入图片描述
ActProgTypeLib类使用代码如下:

namespace CL_Enet
{
    public class ActProg
    {
        private ActProgTypeClass Aptc= new ActProgTypeClass();      
        #region //定义参数
        private int _cpuType;
        [Description("CPU型号")]
        public int CpuType
        {
            get { return _cpuType; }
            set { _cpuType = value; }
        }

        private int _unitType;
        [Description("设备连接方式")]
        public int UnitType
        {
            get { return _unitType; }
            set { _unitType = value; }
        }

        private int _protocolType;
        [Description("TCP/UDP")]
        public int ProtocolType
        {
            get { return _protocolType; }
            set { _protocolType = value; }
        }

        private int _timeOut;
        [Description("连接超时时间")]
        public int TimeOut
        {
            get { return _timeOut; }
            set { _timeOut = value; }
        }
        private string _hostAddress;
        [Description("设备IP地址")]
        public string HostAddress
        {
            get { return _hostAddress; }
            set { _hostAddress = value; }
        }
        #endregion
        private int _destinationPortNumber;
        public int DestinationPortNumber
        {
            get { return _destinationPortNumber; }
            set { _destinationPortNumber = value; }
        }

        #region //定义连接状态
        //int CpuType, int UnitType, int ProtocolType,int TimeOut,string HostAddress
        public int Open()
        {
            try
            {
                Aptc.ActCpuType = _cpuType;
                Aptc.ActUnitType = _unitType;
                Aptc.ActProtocolType = _protocolType;
                Aptc.ActTimeOut = _timeOut;
                Aptc.ActHostAddress = _hostAddress;
                Aptc.ActDestinationPortNumber = _destinationPortNumber;
                return Aptc.Open();
               
            }
            catch (System.Exception ex)
            {
                return -1;
            }  
        }

        public int Close()
        {
            return Aptc.Close();
        }

        public string Read(string RegiseterName)
        {
            int iReturnCode = -1;//返回值=0表示读取成功
            int length = System.Text.RegularExpressions.Regex.Split(RegiseterName, "\n").Length;
            int iNumberOfData = length;
            int[] iData = new int[length];//读取软元件值
            iReturnCode = Aptc.ReadDeviceRandom(RegiseterName, iNumberOfData, out iData[0]);
            if (iReturnCode == 0)
            {
                return iData[0].ToString();
            }
            else
            {
                return "";
            }
        }
        public string Write(string value,string RegiseterName)
        {
                int iReturnCode = -1;//返回值=0表示写入成功
                string[] strArray = System.Text.RegularExpressions.Regex.Split(value, "\n");//拆分写入寄存器列表
                int iNumberOfData = strArray.Length;//szLabel.IndexOf("\n", 0) + 1;//写入点数
                int[] iData = new int[strArray.Length];//写入软元件值
                for (int i = 0; i < strArray.Length; i++)
                {
                    iData[i] = Int32.Parse(strArray[i]);
                }
                iReturnCode = Aptc.WriteDeviceRandom(RegiseterName, iNumberOfData, ref iData[0]);
                if (iReturnCode == 0)
                {
                    return value;
                }
                else
                {
                    return "error";
                }
        }
        #endregion
    }
}

结束语

此样例仅提供思路参考,上述样例代码仅适用三菱PLC与上位机软件

### 回答1: MX Component 5 是一个功能强大的软件开发工具,用于创建各种类型的应用程序。根据我对 MX Component 5 的了解,它本身并不直接支持 VB(Visual Basic),但可以 VB 进行集成并共同使用。 MX Component 5 提供了一组丰富的 API(应用程序编程接口),可以用于各种编程语言进行交互,包括 VB。通过使用这些 API,开发人员可以在 VB 程序中调用和使用 MX Component 5 的功能。 例如,开发人员可以在 VB 中通过 API 访问数据库、实现图形化界面和图表、处理各种数据格式等。通过这种集成,可以利用 MX Component 5 提供的丰富功能和高性能,来增强和扩展 VB 应用程序的功能。 要在 VB 中使用 MX Component 5,开发人员需要在项目中引用 MX Component 5 的适当组件,并按照文档中提供的指导进行编码。在编码过程中,开发人员可以利用 MX Component 5 提供的文档和示例来理解如何其集成。 总的来说,MX Component 5 可以 VB 进行集成,并且可以通过其提供的 API 在 VB 程序中使用其功能。这为开发人员提供了更多的选择和灵活性,以满足他们的需求。 ### 回答2MX Component 5是一个用于开发各种工业自动化应用的软件组件,它提供了一系列工业控制设备的通信和数据处理功能。根据我所了解到的信息,MX Component 5支持VB(Visual Basic)的。 VB是一种广泛使用的编程语言,它也可以用于开发工业自动化应用。MX Component 5提供了VB兼容的接口和函数,使开发人员可以在VB中使用MX Component 5提供的功能。 使用MX Component 5,开发人员可以在VB中轻松地进行工业控制设备的通信和数据处理操作。他们可以使用MX Component 5提供的函数和方法来连接到设备,发送和接收数据,监控和控制设备状态等。 总之,根据我的了解,MX Component 5支持VB的,并且可以VB一起使用来开发工业自动化应用。 ### 回答3: MX Component 5 是一个用于建立工业自动化应用程序的软件开发工具集。它主要是为了方便开发人员使用.NET 平台,并提供了多种编程语言的支持,包括C#和VB(Visual Basic)。 因此,MX Component 5支持 VB 的。开发人员可以使用 VB 进行编程,利用 MX Component 5 的功能来创建工业自动化应用程序。无论是在控制界面的设计还是各种设备的通信等方面,都可以通过 VB 和 MX Component 5 来实现。 通过利用 VB 编程语言和 MX Component 5 提供的API和功能,开发人员可以快速构建出符合自己需求的工业自动化应用程序。不仅可以实现设备的监控和控制,还可以进行数据采集和分析等工作。 总之,MX Component 5 支持 VB,并且为 VB 开发人员提供了开发工具和框架,可以帮助他们更轻松地创建工业自动化应用程序。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tang_0427

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值