前言

本文介绍了如何使用三菱提供的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#上位机的程序测试:

using ActUtlTypeLib;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms; namespace MELSEC.MX.Test
{
public partial class Form1 : Form
{
private ActUtlType m_plc;
public Form1()
{
InitializeComponent();
m_plc = new ActUtlType();
} private void Form1_Load(object sender, EventArgs e)
{
cmb_LogicalStationNumber.Items.Clear();
for (int i = 1;i<=256;i++)
{
cmb_LogicalStationNumber.Items.Add(i.ToString());
}
} private void btn_Comm_Click(object sender, EventArgs e)
{
try
{
int logNUM = Convert.ToInt16(cmb_LogicalStationNumber.Text);
m_plc.ActLogicalStationNumber=logNUM;
m_plc.ActPassword = "";
if (m_plc.Open() != 0)
{
btn_Comm.BackColor = Color.Gray;
btn_Comm.Text = "未建立链接";
m_plc.Close();
m_plc = null;
}
else
{
btn_Comm.BackColor = Color.Green;
btn_Comm.Text = "已连接";
}
}
catch (Exception )
{
throw;
}
} private void btn_Read_Click(object sender, EventArgs e)
{
try
{
Thread thread = new Thread(() =>
{
while (true)
{
txb_D0.Invoke(new Action(() =>
{
txb_D0.Text = ReadDeviceValue("D0", 2)[0].ToString();
txb_D1.Text = ReadDeviceValue("D0", 2)[1].ToString();
txb_R100.Text = ReadDeviceValue("R100", 1)[0].ToString();
txb_W500.Text = ReadDeviceValue("W500", 1)[0].ToString();
}));
Thread.Sleep(300);
}
});
thread.IsBackground = true;
thread.Start();
}
catch (Exception)
{ throw;
}
} private string[] ReadDeviceValue(string DeviceName,int NumberOfData)
{
int iReturnCode;
short[] arrDeviceValue;
string szDeviceName;
string[] arrData= { };
int iNumberOfData;
try
{
szDeviceName = string.Join("\n", DeviceName);
iNumberOfData = Convert.ToInt32(NumberOfData);
arrDeviceValue = new short[iNumberOfData];
iReturnCode = m_plc.ReadDeviceBlock2(szDeviceName, iNumberOfData, out arrDeviceValue[0]);
if (iReturnCode == 0)
{
arrData = new string[iNumberOfData];
for (int i = 0; i < iNumberOfData; i++)
{
arrData[i] = arrDeviceValue[i].ToString();
}
return arrData;
}
return arrData;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
return arrData;
}
}
}
}

Demo演示

C#使用MX Component实现三菱PLC软元件数据采集的完整步骤(仿真)的更多相关文章

  1. c#上位机与三菱PLC(FX3U)串口通讯

    项目中会经常用到上位机与PLC之间的串口通信,本文介绍一下C#如何编写上位机代码 与三菱FX3U进行通讯 1. 第一种方法是自己写代码实现,主要代码如下: //对PLC的Y7进行置1 byte[] Y ...

  2. 西门子与三菱PLC报文比较

    1.西门子和三菱的几个区别(上位只关心的通讯层面):1. 西门子PLC通讯端口固定102,但是可以连接多个PC端(客户端),三菱PLC通讯端口可以自定义,最多好像8个,但是每个端口只能连接一个客户端: ...

  3. 三菱plc输出指示灯不亮怎么办(转载)

    三菱plc输出指示灯不亮怎么办?三菱plc输出指示灯故障 时间:2015-10-21 07:31:12编辑:电工栏目:三菱plc 导读:三菱plc输出指示灯不亮故障的原因,三菱plc在使用中出现输出指 ...

  4. 三菱plc编程电缆通讯端口设置方法(转载)

    三菱plc编程电缆通讯端口如何设置?三菱plc编程电缆通讯端口设置方法 时间:2015-10-21 05:09:20编辑:电工栏目:三菱plc 导读:三菱plc编程电缆通讯端口的设置方法,三菱plc上 ...

  5. C#读写三菱PLC和西门子PLC数据 使用TCP/IP 协议

    本文将使用一个Github开源的组件库技术来读写三菱PLC和西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能 ...

  6. python 读写三菱PLC数据,使用以太网读写Q系列,L系列,Fx系列的PLC数据

    本文将使用一个gitHub开源的组件技术来读写三菱的plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...

  7. java android 读写三菱PLC 使用TCP/IP 协议

    本文将使用一个Github开源的组件库技术来读写三菱PLC和西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能 ...

  8. stm32与三菱PLC通信

    一.三菱PLC通讯概要   三菱PLC FX系列通信结构如下图所示: 三菱PLC FX系列的通信规格如下图所示: 三菱PLC FX系列一般有以下几种通信模块,以FX2N为例: FX2N-232-BD ...

  9. 方便三菱PLC模块调用的FB功能块分享

    前言: 为方便 三菱 PLC 编程,可以将很多功能做成 FB 功能块的形式进行直接调用,可大大缩短编程时间, 本文所述的 FB功能块均以三菱 GX-Works2 软件为基础平台所写,本人所用版本为 G ...

  10. KepServerEX读写三菱PLC,车间现场测试记录,带你了解【数据采集的困境】的前世与今生

    1.不了解KepServerEX 的鞋童,可以先了解一下OPC UA,OPC UA服务端.我们当前项目读写三菱PLC是自己写的类库,但我感觉调用不够方便灵活,工作之余用OPC UA方式尝试一下 2.数 ...

随机推荐

  1. KingbaseES V8R6 表空间加密

    透明存储加密优势 透明存储加密可确保加密敏感数据满足合规性要求,并提供简化加密操作的功能,优势如下: 作为安全管理员,您可以确保敏感数据已加密,因此在存储介质或数据文件被盗或入侵者试图从操作系统访问数 ...

  2. 第十三届蓝桥杯大赛软件赛省赛【Java 大学B 组】试题B: 山

    1 public class HelloWorld { 2 public static void main(String args[]) { 3 long count=0; 4 String temp ...

  3. Jmeter线程组-上

    线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要.线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下. 可以将线程组视为一个虚拟用户池,其中每个 ...

  4. OpenHarmony社区运营报告(2022年10月)

    本月快讯 ● <深圳市推动软件产业高质量发展的若干措施>于10月24日发布. ● 社区共发展逾5000位贡献者累计为社区提交超过11万个PR,深圳市优博终端科技有限公司(以下简称" ...

  5. [洛谷P3961,TJOI2013]黄金矿工题解

    这无疑是一个分组背包问题,斜率是分组的依据,组内物品则是这个斜率下金块的价值与重量的前缀和. 发现很多人的都是用的double储存斜率,其实我们可以用分数的方法保存,这就需要一个gcd. 然后我们用m ...

  6. Python 条件和 if 语句

    Python支持来自数学的通常逻辑条件: 等于:a == b 不等于:a != b 小于:a < b 小于或等于:a <= b 大于:a > b 大于或等于:a >= b 这些 ...

  7. Health Kit接入资质要求详解,开发不迷路!

    开发运动/健康应用过程中,需要使用Health Kit提供的数据能力,作为独立的个人开发者或是企业开发者,接入时分别需要满足什么样的条件呢? 个人开发者接入资质审核要求 •个人开发者应用需上架至华为应 ...

  8. Linux之openssl实现私有CA

    一.简介 Centos7.9通过openssl工具构建一个私有的CA,用于颁发证书. 验证私有CA为httpd应用签署证书 二.构建私有CA 1.编辑CA的配置文件 [root@HLWHOST tls ...

  9. JavaSE--初识&&开发基础

    JDK.JRE.JVM JDK:Java Development Kit java开发环境 JRE:Java Runtime Environment java运行时环境 JVM:JAVA Virtua ...

  10. ES6---new Promise()使用方法

    2015年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise ...