一、三菱PLC驱动程序安装

编写上位机程序与三菱PLC进行通讯,首先应该下载驱动安装程序,程序安装之后可以首先对PLC进行测试,如果通讯功能正常,说明硬件配置无误,可以参照安装目录下的示例代码编写程序。
三菱驱动程序在三菱官网即可下载,下载地址为https://www.mitsubishielectric-fa.cn/
进入官网后点击上方菜单栏中的资料中心,然后选择控制器——可编程控制器——软件,进入软件下载界面。
在这里插入图片描述
在软件下载界面选择GX Works3 及 MX Component两个软件(下载需要注册及登录三菱官网
),其中GX Works3提供了PLC编程的可视化界面,而MX Component提供了PLC连接的配置工具及示例代码。在安装MX Component过程中如遇到错误,可上网查询解决方法也可以在解压之后的安装包里的Manual文件夹内浏览安装说明文档,查找错误解决方法。安装过程中需要输入序列号,安装序列号为:117-610768844。在这里插入图片描述

二、建立PLC连接与关闭连接

在MX Component程序安装目录下可以找到MX_PLC_Samples文件夹,文件夹内有VBA、Vb、Vc、C#语言编写的示例代码,其中Vcs.NET——Sample2010文件夹内为C#语言编写的示例代码。
打开示例代码可以发现,建立PLC连接共有两种方式,分别为ActProgType连接和ActUtlType连接。
ActUtlType连接需要先使用Communication Setup Utility程序(在开始菜单程序目录下),以管理员身份运行,预先建立一个PLC连接,并设置LogicalStationNumber,详情见三菱PLC(FX5U)与C#通信说明。建立连接后,再使用代码进行连接,示例代码如下:

                    using AxActUtlTypeLib;
                    ...
                    AxActUtlType axActUtlType1 = new AxActUtlType();
                    axActUtlType1.ActLogicalStationNumber = 0;//0为LogicalStationNumber
                    int returnCode = axActUtlType1.Open();//返回类型为int类型
                    if (returnCode == 0)
                    {
                        MessageBox.Show("连接成功");
                        return;
                    }
                    else
                    {
                        MessageBox.Show("连接错误");
                        return;
                    }

ActProgType连接不需要预先进行Communication Setup Utility程序进行设置,连接也不需要LogicalStationNumber参数,但需要在代码中设置连接类型,并且根据连接类型设置一些参数,例如计算机与PLC通过串口连接,那么需要设置串口号等,如果通过网线连接,那么需要设置IP地址、连接模块等参数。
以网线连接、连接模块为CPU_FX5为例,示例代码如下:

                    using AxActProgTypeLib;
                    ...
                    AxActProgType axActProgType1 = new AxActProgType();
                    axActProgType1.ActUnitType = 0x2001;//Connect module:CPU module(FX5)
                    axActProgType1.ActProtocolType = 0x0005;//PC side I/F:Ethernet board
                    axActProgType1.ActHostAddress = value01;//IPAddress
                    int returnCode = axActProgType1.Open();
                    if (returnCode == 0)
                    {
                        MessageBox.Show("连接成功");
                        return;
                    }
                    else
                    {
                        MessageBox.Show("连接错误");
                        return;
                    }

关闭连接示例代码如下:

                    int returnCode = axActProgType1.Close();
                    if (returnCode == 0)
                    {
                        MessageBox.Show("连接已断开");
                        return;
                    }
                    else
                    {
                        MessageBox.Show("断开连接时发生错误");
                        return;
                    }
                    returnCode = axActUtlType1.Close();
                    if (returnCode == 0)
                    {
                        MessageBox.Show("连接已断开");
                        return;
                    }
                    else
                    {
                        MessageBox.Show("断开连接时发生错误");
                        return;
                    }

三、读写PLC数据

读取PLC的软元件数据的函数共有四种,分别为
1、int ReadDeviceBlock(string szDevice, int lSize, out int lplData);
2、int ReadDeviceBlock2(string szDevice, int lSize, out short lpsData);
3、int ReadDeviceRandom(string szDeviceList, int lSize, out int lplData);
4、int ReadDeviceRandom2(string szDeviceList, int lSize, out short lpsData);
其中1与2函数读取的数据位数不同,所以输出类型也不同,3与4同理。而写入PLC数据的函数也共有四种,与四种读取函数相对应,这里不再一一列举,下面给出ActProgType类型读写PLC数据的示例代码:

short Result=0;
int iReturnCode = axActProgType1.ReadDeviceBlock2("E0",1, out Result);
if (iReturnCode == 0)
{
      MessageBox.Show(Result.ToString());
}
short Data=100;
iReturnCode = axActProgType1.WriteDeviceBlock2("E0",1, ref Data);
if (iReturnCode == 0)
{
      MessageBox.Show("写入成功");
}

参考文档

三菱PLC(FX5U)与C#通信说明
C# 通过网络和三菱的PLC通信
【MX Component】三菱自带网口与上位机通讯实例全过程图解
上位机通过c#调用MX component实现与三菱PLC通讯。附源代码

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐