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;
        }
        //连接plc
         private 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 存储器的释放

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

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

相关文章

微信小程序进阶(1)--自定义组件

自定义组件 1.1 什么是自定义组件 开发文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ 小程序中常常会有些通用的交互模块&#xff0c;比如&#xff1a;下拉选择列表、搜索框、日期选择器等&#xff1b;这些界面交互模块可…

FPGA DMA技术分享(赋能高速数据处理的新动力介绍篇)

一、引言 在现代数字信号处理系统中&#xff0c;数据的高速、高效传输与处理是关键。FPGA&#xff08;现场可编程门阵列&#xff09;以其高度的灵活性和并行处理能力&#xff0c;成为实现这一目标的理想平台。而DMA&#xff08;直接内存访问&#xff09;技术&#xff0c;作为FP…

Transformers x SwanLab:可视化NLP模型训练

HuggingFace 的 Transformers 是目前最流行的深度学习训框架之一&#xff08;100k Star&#xff09;&#xff0c;现在主流的大语言模型&#xff08;LLaMa系列、Qwen系列、ChatGLM系列等&#xff09;、自然语言处理模型&#xff08;Bert系列&#xff09;等&#xff0c;都在使用T…

MM模块六(收货)

接到供应商收到的货以后&#xff0c;进行一个收货的动作 收货&#xff1a;MIGO 1.消耗物料的采购订单 数量是供应商的数量 消耗物料的采购订单&#xff0c;收进来的货物直接进入消耗&#xff0c;不会增加库存&#xff0c;所以这里没有库存地点进行选择 点击过账 收货后在采购…

mysql手动新建数据库

点击号输入数据库名&#xff0c;端口号&#xff0c;密码&#xff0c;连接到sa数据库新建数据库&#xff0c;语言必须选择utf8mb4新建数据库用户给数据库用户设置对应权限给数据库用户勾选权限

利用迭代方法求解线性方程组(Matlab)

一、问题描述 利用迭代方法求解线性方程组。 二、实验目的 掌握Jacobi 方法和Gauss-Seidel 方法的原理&#xff0c;能够编写代码实现两种迭代方法&#xff1b;能够利用代码分析线性方程组求解中的误差情况。 三、实验内容及要求 用代码实现&#xff1a;对下列方程中重新组织…

区间选点问题-贪心-C++

问题&#xff1a; 给定 &#x1d441; 个闭区间 [ai,bi]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 &#x1d441;&#xff0c;表示区间数…

【C++11】lambda匿名函数和包装器

目录 一&#xff0c;lambda匿名函数 1-1&#xff0c;lambda的引入 1-2&#xff0c;lambda表达式书写格式 1-3&#xff0c;lambda函数的名称 1-4&#xff0c;lambda捕获列表的使用 1-5&#xff0c;函数对象与lambda表达式 二&#xff0c;包装器 2-1&#xff0c;function…

项目管理基础知识

项目管理基础知识 导航 文章目录 项目管理基础知识导航一、项目相关概念二、时间管理三、人员管理四、风险管理 一、项目相关概念 项目定义的三层意思 一定的资源约束:时间资源、经费资源、人力资源一定的目标一次性任务 里程碑 是项目中的重要时点或事件持续时间为零&…

PX4水下机器人源码分析

一、Px4版本1.14.1机型文件 PX4Autopilotmain\ROMFS\px4fmu_common\init.d\airframes路径下 这个脚本设置了BlueROV2&#xff08;重型配置&#xff09;的各种参数和初始化步骤&#xff0c;包括电池设置、通信设置、机架和旋翼配置以及PWM输出功能的映射。通过这些设置&#x…

unity制作app(10)--统一字体

1.载入字体&#xff0c;微软雅黑&#xff0c;需要3分钟左右 加载进来3个 2.font文件夹下创建一个txt&#xff0c;内部的内容如下&#xff1a; &#xfeff;啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏…

AI视频教程下载:零基础学会DALL-E 、Midjourney、Microsoft Designer、Adobe Firefly

学完本课程会得到什么&#xff1a; 掌握ChatGPT、DALL-E 2、Midjourney、Microsoft Bing Chat、Microsoft Designer和Adobe Firefly&#xff0c;全面理解生成性AI及其应用 了解OpenAI及其在生成性AI领域的尖端研究 理解提示工程的重要性以及它如何帮助产生更好的输出和数据 …

【QGIS入门实战精品教程】5.3:CGCS2000转Lambert投影

参考阅读: 【GlobalMapper精品教程】081:WGS84/CGCS2000转Lambert投影 文章目录 一、加载实验数据二、投影转换三、批量投影转换一、加载实验数据 加载配套实验数据,如下图所示:图层为长沙市范围、长沙市酒店宾馆分布点位、湖南省酒店分布点位矢量数据。 双击图层,打开信…

【Vue】Vue2中的Vuex

目录 Vuex介绍Vuex 中的核心概念 在vue2中使用Vuex安装 Vuex创建一个 Vuex Store在 Vue 实例中使用 Vuex编写 Vuex 的 state、mutations 和 actions在组件中使用 Vuex Vuex的核心State组件中获取 Vuex 的状态mapState 辅助函数对象展开运算符 Getter基本使用示例 通过属性访问通…

Unity实现首行缩进两个字符

效果 在Unity中如果想实现首行缩进两个字符&#xff0c;你会发现按空格是没法实现的。 实现原理&#xff1a;用空白的透明的字替代原来的位置。 代码&#xff1a; <color#FFFFFF00>XXX</color> 赶紧去试试吧&#xff01;

《架演》共创者第一次线上沟通会议总结

《架演》共创者第一次线上沟通——启动会 会议主题&#xff1a;《架演》共创启动会议会议时间&#xff1a;2024年5月28日&#xff0c;20:00 - 21:00会议地点&#xff1a;腾讯会议主持人&#xff1a;寒山参会人员&#xff1a; 夏军、mirror、刘哥、悟缺席人员&#xff1a;可心、…

性能测试(一)—— 性能测试理论+jmeter的使用

1.性能测试介绍 定义&#xff1a;软件的性能是软件的一种非功能特性&#xff0c;它关注的不是软件是否能够完成特定的功能&#xff0c;而是在完成该功能时展示出来的及时性。 由定义可知性能关注的是软件的非功能特性&#xff0c;所以一般来说性能测试介入的时机是在功能测试完…

20240521在Ubuntu20.04下编译RK3588平台的IPC方案

20240521在Ubuntu20.04下编译RK3588平台的IPC方案 2024/5/21 15:27 viewproviewpro-ThinkBook-16-G5-IRH:~$ viewproviewpro-ThinkBook-16-G5-IRH:~$ md5sum RK3588_IPC_SDK.tar.gz 7481cc8d59f697a5fa4fd655de866707 RK3588_IPC_SDK.tar.gz viewproviewpro-ThinkBook-16-G5…

【vue-4】遍历数组或对象v-for

1、遍历数组 <ul><li v-for"(value,index) in web.number">index>{{index}}:value>{{value}}</li> </ul> 知识点&#xff1a; <ul>标签定义无序列表 举例&#xff1a; <ul><li>Coffee</li><li>Tea…

LeetCode199二叉树的右视图

题目描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 解析 这一题的关键其实就是找到怎么去得到当前是哪一层级&#xff0c;可以利用队列对二叉树进行层次遍历&#xff0c;但…