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

news/2024/10/8 18:39:20

前言

本文介绍了如何使用三菱提供的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演示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28066.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

第六章:Coherence Protocols

chapter6:cache coherence 1、大局观 coherence的目标,具体包括:单写多读(single-writer-multiple-reader, SWMR)不变性:对任何内存地址A,在任何时间点上只存在一个可以向A写入的内核,但可以存在多个从A读取的内核。 数据-值(data-value)不变性:一个内存位置在一个时…

Redis多数据源,看这篇就够了

背景 Redis多数据源常见的场景:分区数据处理:当数据量增长时,单个Redis实例可能无法处理所有的数据。通过使用多个Redis数据源,可以将数据分区存储在不同的实例中,使得数据处理更加高效。 多租户应用程序:对于多租户应用程序,每个租户可以拥有自己的Redis数据源,以确保…

VScode 多行快速变一行

前言全局说明VScode 多行快速变一行,无意中发现的一、说明 多行快速变一行二、多行内容 假设有以下多行内容 VScode 多行快速变一行1 VScode 多行快速变一行2 VScode 多行快速变一行3 VScode 多行快速变一行4 VScode 多行快速变一行5 VScode 多行快速变一行6三、操作 3.1 先把…

JVM从零到进阶

JVM进阶字节码​ 字节码为编译后的class文件,比如java、scala这些语言都是可编译成字节码的,字节码借助jvm就可以在任何平台运行,可以理解成跨平台的实现 一、运行时数据区 ​ 在程序运行时,由jvm提供的几块内存区域,分别为以下几个区域:本地方法栈:执行native关键字的方…

降本增效,火山引擎ByteHouse助力短剧广告投放效率提升5倍

近几年来,短剧市场呈现出爆发式增长的态势,2023 年中国网络微短剧市场规模为 373.9 亿元,同比上升 267.65%。短剧涵盖爱情、历史、悬疑等各种题材,短小精悍特点也符合现代人快节奏、碎片化的生活方式,观众可以通过手机随时随地观看短剧,满足了不同群体的需求。用数据分析…

基于arduino+as608+360舵机的宿舍指纹锁

需要的制作材料Arduino nano开发板AS608指纹模块MG995 360舵机(360舵机的控制与180舵机控制不相同,360舵机只可以控制旋转的速度,180舵机可以控制旋转的角度)面包板,电线若干准备部分 参考了大佬的代码http://t.csdnimg.cn/GB29Qarduino模块可以看b站视频,,零基础(c语言…

每台服务器都有错包增长,线路问题?交换机问题? 机房里面有鬼?

服务器网卡 RX 方向errors包一直在增长,换模块换尾纤都不好使, 眼看业务上线要延期 客户精神要崩溃,运维心想要遭罪 一、问题现象 服务器侧的运维人员在服务器上使用 ifconfig 命令发现每台服务网卡上都有错包,且一直在不停增长通过图片可以看到网卡RX 方向有大量的 errors…

c#中Debug和Release的区别实验

一、Release版本相比Debug版本的性能提升很大Debug模式在编译时不对源代码进行优化,而Release模式进行了大胆的优化,使得程序在代码大小和运行速度上都有显著提高,下面通过一个对10000条数据进行冒泡排序的例子来比较它们二者的性能差距:来源:https://blog.csdn.net/u010476…