MX Component基础使用(多点位读取,多点位写入)

步骤,先连接PLC,然后在填入对应的点位 D10 然后去读取。
在这里插入图片描述

 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using ActUtlTypeLib;namespace MX_Component{public partial class Form1 : Form{//传教Utl控件private ActUtlType plc;public Form1(){InitializeComponent();plc = new ActUtlType();guna2Button2.Enabled = false;guna2Button3.Enabled = false;guna2Button4.Enabled = false;}//连接plcprivate void guna2Button1_Click(object sender, EventArgs e){int iReturnCode;int iLogicalStationNumber;if (guna2TextBox1.Text == ""){MessageBox.Show("The TextBox has not been entered.", Name, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}iLogicalStationNumber = Convert.ToInt32(this.guna2TextBox1.Text);try{plc.ActLogicalStationNumber = iLogicalStationNumber;//输入站号iReturnCode = plc.Open();//打开连接//设置控件if (iReturnCode == 0){this.guna2Button2.Enabled = true;this.guna2Button1.Enabled = false;guna2TextBox1.Enabled = false;guna2TextBox2.Enabled = false;guna2Button3.Enabled = true;guna2Button4.Enabled = true;}}catch (Exception ex){MessageBox.Show(ex.Message, Name, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}//关闭连接private void guna2Button2_Click(object sender, EventArgs e){int iReturnCode;try{iReturnCode = plc.Close();//关闭连接if (iReturnCode == 0){this.guna2Button2.Enabled = false;this.guna2Button1.Enabled = true;guna2TextBox1.Enabled = true;guna2TextBox2.Enabled = true;guna2Button3.Enabled = false;guna2Button4.Enabled = false;}}catch (Exception ex){MessageBox.Show(ex.Message, Name, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}//软元件批量读取private void guna2Button3_Click(object sender, EventArgs e){int iReturnCode;string szDeviceName;int iNumberOfData;short[] arrDeviceValue;string[] arrData;try{if (guna2TextBox4.Text == null || guna2TextBox6.Text == null)//判断TextBox是否为空{MessageBox.Show("The TextBox has not been entered.", Name, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}szDeviceName = string.Join("\n", guna2TextBox4.Lines);iNumberOfData = Convert.ToInt32(guna2TextBox6.Text);arrDeviceValue = new short[iNumberOfData];iReturnCode = plc.ReadDeviceBlock2(szDeviceName, iNumberOfData, out arrDeviceValue[0]);//读取数据if (iReturnCode == 0)//判断读取结果{arrData = new string[iNumberOfData];//数据分行显示到TextBox中for (int i = 0; i < iNumberOfData; i++){arrData[i] = arrDeviceValue[i].ToString();}guna2TextBox5.Lines = arrData;}}catch (Exception ex){MessageBox.Show(ex.Message, Name, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}//批量写入数据private void guna2Button4_Click(object sender, EventArgs e){int iReturnCode;string szDeviceName;int iNumberOfData;short[] lpsData;if (guna2TextBox4.Text == null || guna2TextBox6.Text == null||guna2TextBox3.Text==null){MessageBox.Show("The TextBox has not been entered.", Name, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}szDeviceName = guna2TextBox4.Text;iNumberOfData = Convert.ToInt32(guna2TextBox6.Text);lpsData = new short[iNumberOfData];try{if (guna2TextBox3.Lines.Length!= iNumberOfData){MessageBox.Show("The element count of the array has to be the same as the size.",Text, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}//待写数据转为short[]for (int i = 0; i < iNumberOfData; i++){lpsData[i] = Convert.ToInt16( guna2TextBox3.Lines[i]);}iReturnCode = plc.WriteDeviceBlock2(szDeviceName, iNumberOfData, ref lpsData[0]);//写入数据}catch (Exception ex){MessageBox.Show(ex.Message,Name, MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}}

其他参考信息
MX Component函数一览
Open 通信线路的打开
Close 通信线路的关闭
ReadDeviceBlock 软元件的批量读取 (4字节数据)
WriteDeviceBlock 软元件的批量写入 (4字节数据)
ReadDeviceRandom 软元件的随机读取 (4字节数据)
WriteDeviceRandom 软元件的随机写入 (4字节数据)
SetDevice 软元件1点的设置 (4字节数据)
GetDevice 软元件1点的数据获取 (4字节数据)
ReadBuffer 缓冲存储器的读取
WriteBuffer 缓冲存储器的写入
GetClockData CPU模块的时钟数据读取
SetClockData CPU模块的时钟数据写入
GetCpuType CPU模块型号读取
SetCpuStatus PU模块的远程RUN/STOP/PAUSE
EntryDeviceStatus 2 软元件的状态监视登录
FreeDeviceStatus 软元件的状态监视登录的解除
OnDeviceStatus 事件通知
ReadDeviceBlock2 软元件的批量读取 (2字节数据)
WriteDeviceBlock2 软元件的批量写入 (2字节数据)
ReadDeviceRandom2 软元件的随机读取 (2字节数据)
WriteDeviceRandom2 软元件的随机写入 (2字节数据)
SetDevice2 软元件1点的设置 (2字节数据)
GetDevice2 软元件1点的数据获取 (2字节数据)
GetErrorMessage 错误内容及处理方法的获取
ReadFirstFile 文件名/目录名的搜索
ReadNextFile 文件名/目录名的搜索
ReadClose 搜索的结束
GetFile 记录文件的传送
Dispose 存储器的释放

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算网关的主要功能有哪些?天拓四方

随着物联网&#xff08;IoT&#xff09;的快速发展和普及&#xff0c;边缘计算网关已经成为了数据处理和传输的重要枢纽。作为一种集成数据采集、协议转换、数据处理、数据聚合和远程控制等多种功能的设备&#xff0c;边缘计算网关在降低网络延迟、提高数据处理效率以及减轻云数…

民国漫画杂志《时代漫画》第13期.PDF

时代漫画13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

数组的定义、顺序存储及特殊矩阵的存储

目录 一、数组的定义 1.1概念 1.2抽象数据类型定义 二、数组的顺序存储 2.1一维数组元素的存储位置 2.2二维数组元素的存储位置 2.3三维数组元素的存储位置 三、特殊矩阵的压缩存储 3.1相关概念 3.2对称矩阵 3.3三角矩阵 3.4对角矩阵&#xff08;带状矩阵&#xff0…

【机器学习300问】102、什么是混淆矩阵?

一、混淆矩阵的定义 混淆矩阵是一种用于评估分类模型性能的评估指标。当模型对数据进行预测并将数据分配到预定义的类别时&#xff0c;混淆矩阵提供了一种直观的方式来总结这些预测与数据实际类别之间的对应关系。具体来说&#xff0c;它是一个表格。 二、分类模型性能评估一级…

私域用户画像分析

为什么做私域要分析用户画像&#xff1f; 1、更好地了解用户需求&#xff1a;通过分析用户画像&#xff0c;可以深入了解用户的需求、偏好、行为等特征&#xff0c;从而更好地满足他们的需求。 2、个性化营销&#xff1a;根据用户画像&#xff0c;可以为用户提供个性化的营销…

js setTimeout、setInterval、promise、async await执行顺序梳理

基础知识 async: 关键字用于标记一个函数为异步函数&#xff0c;该函数中有一个或多个promise对象&#xff0c;需要等待执行完成后才会继续执行。 await:关键字&#xff0c;用于等待一个promise对象执行完&#xff0c;并返回其中的值&#xff0c;只能在async函数内部使用。可…

云服务器平台AutoDL--基本介绍与使用感受

因为课程作业需要复现DreamBooth&#xff0c;找了几个教程之后&#xff0c;发现了AutoDL这个好东西&#xff0c;芜湖~ 相关概念 以下回答来自于ChatGPT。 云计算平台&#xff1a;云服务器平台是提供按需计算资源和服务的在线平台&#xff0c;通常包括存储、处理能力、数据库、…

搜维尔科技:使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目

使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目 搜维尔科技&#xff1a;使用Haption Virtuose 6D 力反馈通过机器人和虚拟现实完成远程操作项目

【Python设计模式06】代理模式

代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过创建代理对象来控制对另一个对象的访问。代理模式可以用于延迟实例化、控制访问权限、记录日志等。代理模式的核心思想是为其他对象提供一种代理&#xff0c;以控制对这个对象的访问。 代…

System32文件夹千万不能删除,看完这篇你就知道为什么了

序言 C:\Windows\System32目录是Windows操作系统的关键部分,重要的系统文件存储在该目录中。网上的一些恶作剧者可能会告诉你删除它,但你不应该尝试去操作,如果你尝试的话,我们会告诉你会发生什么。 什么是System32文件夹 位于C:\Windows\System32的System32文件夹是所有…

Python深度学习:【模型系列】Transformer面试灵魂20问

1. transformer简介 Transformer模型是一种基于自注意力机制的神经网络架构,主要用于处理序列数据,如自然语言处理任务。它由Google在2017年提出,并在“Attention is All You Need”这篇论文中首次公开。Transformer模型的核心思想是利用自注意力机制来捕捉序列中的依赖关系…

MySQL 的表约束详解

在数据库设计中&#xff0c;约束&#xff08;Constraints&#xff09;是确保数据完整性和一致性的关键工具。MySQL 作为流行的关系型数据库管理系统&#xff0c;提供了多种约束类型来维护数据的准确性和可靠性。本文将详细探讨 MySQL 的各种表约束&#xff0c;包括它们的定义、…

【代码随想录】面试常考类型之动态规划01背包

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记&#xff0c;为了之后方便观看 不同的二叉搜索树 96. 不同的二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 通过举例子发现重叠子问题 代码很简单&#xff0c;主要是思路问题&#xff0…

Windows内核函数 - 创建关闭注册表

在驱动程序的开发中&#xff0c;经常会用到对注册表的操作。与Win32的API不同&#xff0c;DDK提供另外一套对注册表操作的相关函数。首先明确一下注册表里的几个概念&#xff0c;避免在后面混淆。 图1 注册表概念 有5个概念需要重申一下&#xff1a; * 注册表项&#xff1a; 注…

008、字符串_内部编码

字符串类型的内部编码有3种&#xff1a; int&#xff1a;8个字节的长整型。 embstr&#xff1a;小于等于39个字节的字符串。 raw&#xff1a;大于39个字节的字符串。 Redis会根据当前值的类型和长度决定使用哪种内部编码实现。 整数类型示例如下&#xff1a; 127.0.0.1:6379&…

使用 MyBatis-Plus 的 IService 进行模糊查询操作

使用 MyBatis-Plus 的 IService 进行模糊查询操作 一、前言1. 普通模糊查询&#xff08;like&#xff09;2. 左模糊查询&#xff08;likeLeft&#xff09;3. 右模糊查询&#xff08;likeRight&#xff09;4. 不匹配指定字符串的模糊查询&#xff08;notLike&#xff09; 一、前…

unity接入live2d

在bilibili上找到一个教程&#xff0c;首先注意一点&#xff0c;你直接导入那个sdk&#xff0c;并且打开示例&#xff0c;显示的模型是有问题的&#xff0c;你需要调整模型上脚本的一个枚举值&#xff0c;调整它的渲染顺序是front z to我看教程时候&#xff0c;很多老师都没有提…

常用汇编指令

&#xff08;arg&#xff09;argument&#xff1a;自变量&#xff0c;变元 &#xff08;reg&#xff09;register&#xff1a;寄存器 &#xff08;seg&#xff09;segment&#xff1a;段寄存器 &#xff08;mem&#xff09;memory&#xff1a;存储器&#xff08;内存单元&am…

什么是 BIO、NIO、AIO?

BIO、NIO、AIO 都是 Java 的 IO 模型 BIO (Blocking IO) 是传统的 IO 模型&#xff0c;它在读写数据时会阻塞线程&#xff0c;直到数据读写完成&#xff0c;适用于并发不高的场景。 NIO (Non-blocking IO) 是 Java 的新 IO 模型&#xff0c;它在读写数据时不会阻塞线程&#…

Flutter 中的 AnimatedPositionedDirectional 小部件:全面指南

Flutter 中的 AnimatedPositionedDirectional 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;AnimatedPositionedDirectional 是一个用于创建具有方向感知的动画定位效果的组件。它允许开发者在动画过程中动态地改变子组件的位置&#xff0c;并且可以指定动画的方向&a…