上位机通过MX component version4 组件与三菱PLC通信解决办法
引用:https://blog.csdn.net/txb13145826106/article/details/115007885
上位机通过MX component version4 组件与三菱PLC通信解决办法
tang_0427 2021-03-19 15:58:05 297 收藏 2
分类专栏: PLC C#编程 WinForm 文章标签: c#
版权
上位机通过MX component version4 组件与三菱PLC通信解决办法
第一节:MX Component Version4软件与手册下载
第二节:MX Component Version4 软件的使用与通信测试
2.1 PLC以太网地址设置:
2.11 查询电脑的IP地址:
2.12 打开GX works2 与PLC进行通信测试
2.13 测试PLC IP地址:
2.2 打开MX Version4 软件进行组件与PLC间通信测试
2.21 MX Version4软件
第三节:C# 与PLC通信测试
3.1 以太网连接用到的参数列表:
1.ActCpuType:
2.ActUnitType:
3.ActProtocolType
4.ActTimeOut
5.ActHostAddress
6.ActDestinationPortNumber
3.2 C# winform界面
3.21 C# 程序实现组件引用
3.22 C# Demo样例窗体:
结束语
注1:适用编程语言: VC/C++、VB、C#、LabView等
注2:本说明仅提供C#编写的样板实例及原代码,仅用于通信测试,而其它编程语言请参考C#实例的参数设置,自行研习:
第一节:MX Component Version4软件与手册下载
下载地址:
三菱MXComponent Version4
软件位置:
可供下载的是:MX组件版本4(英文版)
手册位置:
注3:本说明主要使用的是MX组件版本4编程手册(英文版),通信要用到的参数请在此手册中去查询.该手册支持FX5U相关参数,如有需要中文版本,可在三菱中文官网上自行下载.
第二节:MX Component Version4 软件的使用与通信测试
在与上位机通信测试之前,首先与MX Component Version4软件进行通信测试。
2.1 PLC以太网地址设置:
2.11 查询电脑的IP地址:
在win7 系统左下方,点击开始按钮,然后在搜索程序和文件选框中输入CMD,打开命令提示符窗口;
在命令提示符中输入 ipconfig,然后按回车键:
显示当前电脑的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):
选择与目标PLC相同的型号,然后点击确定:
注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,打开软件设置窗口:
注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 按钮进行自动查找。出现如下图所示:
选中目标PLC的型号,然后点击OK.
注10:如有多个同时连接的话,请注意所选目标PLC是否匹配
如进行Find CPU(Built-in Ethernet port)这个动作的话,下图所示的界面的相关参数会自动填写,如没有,则需要手动进行选择。
注11:如有多个CPU同时组合的话,请确定当前目标放在几号位置,如只有单个的话,默认为None.
与之前的的Logical station number 保持一致。点击Finish按钮,返回。
在connetion test 界面,点击Test按钮 进行测试,如出现以下信息,则说明通信连接成功。
完成上面所示操作,如果流程没有出错,且出现上图所示信息,说明MX Component Version4的组件完全可用于上位机上。
第三节: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;可以自己设定,但是对数据进行读写操作时,端口号要保持一致.
3.2 C# winform界面
3.21 C# 程序实现组件引用
与PLC通信相关的组件具体两个文件在文件夹中体现的是:
工具箱中添加选项卡:
选择ActProgType Control v1.0 组件
点击确定后,在工具箱中会多出如下图所示的控件:
将如上图所示的控件用鼠标拖到窗体中,系统将自动引用如下图所示的两个组件:
其他的具体参考样例原代码
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());
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
测试连接结果如下:
写发送:
读接收:
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
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
结束语
此样例仅提供思路参考,上述样例代码仅适用三菱PLC与上位机软件32位架构上进行通讯,不支持64位。
————————————————
版权声明:本文为CSDN博主「tang_0427」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/txb13145826106/article/details/115007885
上位机通过MX component version4 组件与三菱PLC通信解决办法相关推荐
- 上位机通过MX component version 组件与三菱PLC通信解决办法,最新MX component version5支持X64
上位机通过MX component version4组件与三菱PLC通信解决办法,最新MX component version5支持X64 第一节:MX Component Version软件与手册下 ...
- C#上位机,控制台达四轴SCARA机器人,以太网通信
C#上位机,控制台达四轴SCARA机器人,以太网通信 1.调用台达机器人SDK库,功能齐全,适合进行二次开发. ID:6910635479745371
- C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)
C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 20 ...
- C#调用COM组件遇到的问题及解决办法
C#调用COM组件遇到的问题及解决办法 参考文章: (1)C#调用COM组件遇到的问题及解决办法 (2)https://www.cnblogs.com/yuzhihui/p/9777323.html ...
- mx三菱plc安装报错_Qt使用 MX Component 插件与三菱PLC通信
作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 MX Component 简介 MX Component 是三菱PLC官方上位机通讯中间件,通过使用该工 ...
- 程控电源CANoe上位机面板(CAN\ETH测试、RS232串口通信、编写设计思路)
程控电源CANoe上位机面板 编写此面板的目的 编写思路 一.通讯方式 1.RS232串口连接 2.CANoe与RS232串口相关的函数 3.帧格式命令字 4.校验码 二.面板设计 1.所需文件说明 ...
- 组件服务 我的电脑 不可用解决办法
在"服务"里找到这三个服务,都启动就行了 Distributed Transaction Coordinator Remote Procedure Call (RPC) Secur ...
- 安装VS2008后再安装SQL2005无组件和SQL服务的解决办法
为了学习NET,之前一直是用VISUALSTDUIO 2005,看到自己的VS2008下完了,一激动就安装了,由于安装了VS2005,就算在程序添加/删除里完全删除了VS2005,但还是装不了VS20 ...
- 上位机开发之三菱PLC通信
前言 三菱MC协议是开发三菱系列PLC必须掌握的一种通信协议,其目的是让外部设备,可以通过串行通信模块C24或以太网接口模块E71,实现对可编程控制器CPU的数据访问. MC协议是Melsec协议的简 ...
最新文章
- 为DataGridView添加行号
- iOS之深入解析KVO的底层原理
- 深入浅出Docker 镜像 | 技术头条
- 猎豹浏览器网页声音怎么关闭
- android做题imageview缩放,巧用ViewPager实现驾考宝典做题翻页效果
- 一些常用的场景进行描述分析(权限管理、6个典型场景)
- 解锁用户及数据库表,锁死进程
- final关键字详解
- centos vim编辑器 第八节课
- win10无法访问服务器上的共享文件夹怎么设置,提示:你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问...
- python定时启动任务_python--实现定时任务
- 同花顺程序交易接口type-c为什么没普及?
- 数字转为大写金额(C#)
- 资料:《大学英语》精读修订版(全六册)原文及全文翻译
- Magicodes.IE在.NET Core中通过请求头导出多种格式文件
- 关于De-pCode在线工具失效的问题
- python语音识别分析_Python语音识别(计算器)
- 对不同数据源特征提取的(详见上一篇博客问题)的进一步思考
- STM32F05x加入RDP(LV1)后,Segger无法Unlock的解决办法
- PX4装机教程(四)F4飞控刷写PX4
热门文章
- 【Brian2学习教程之二】Introduction to Brian part 2: Synapses
- 交换机、光纤收发器+光纤终端盒、接线端子的通俗理解
- 科幻也将成为现实 努比亚α将亮相MWC2019
- leetcode 203. 移除链表元素
- 无线打印服务器选用指南
- 博图只能通过地址相同设备找到plc_如何用博图建立西门子触摸屏和S7300PLC的通讯...
- 2018知乎live
- 变配电室值班电工技能培训考核系统QY-GPD01
- 【有限元分析】apdl建立菩萨三维模型+FLAC3d力学计算
- SaaS 互联网敏捷开发框架