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

news2024/10/6 5:47:56

步骤,先连接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 存储器的释放

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

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

相关文章

国产卫星星座,为什么一定要“走出去”?

今天这篇文章&#xff0c;我们来聊聊卫星和星座。 2024年行将过半&#xff0c;全球卫星通信产业的发展&#xff0c;又有了新的变化。 在卫星星座方面&#xff0c;各大企业的竞争博弈全面进入白热化阶段。卫星的发射速度在不断加快&#xff0c;而全球星座项目的数量和规模也在持…

nano机器人2:机械臂的视觉抓取

前言 参考链接: 【机械臂入门教程】机械臂视觉抓取从理论到实战 GRCNN 通过神经网络&#xff0c;先进行模型训练&#xff0c;在进行模型评估。 机械臂逆运动学求解 所有串联型6自由度机械臂均是可解的&#xff0c;但这种解通常只能通过数值解法得到&#xff0c;计算难度大&am…

Java | Leetcode Java题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> ret new ArrayList<List<Integer>>();for (int i 0; i < numRows; i) {List<Integer> row new…

Unity之如何使用Localization来实现文本+资源多语言

前言 使用Unity实现本地化&#xff08;Localization&#xff09;功能 在当今的游戏开发中&#xff0c;支持多语言已成为一项基本需求。Unity作为主流的游戏开发引擎&#xff0c;提供了强大的本地化工具&#xff0c;使开发者能够方便地为游戏添加多语言支持。本文将介绍如何在U…

JavaSE:StringBuilder和StringBuffer类

1、引言 在上一篇文章中&#xff0c;我们理解了字符串的常用方法&#xff0c;细心的同学大概已经发现&#xff0c;不管是将字符串中的字符转变为大写或小写&#xff0c;或是完成字符串的替换&#xff0c;又或是去除空白字符等等&#xff0c;只要涉及到字符串的修改&#xff0c…

js中金额进行千分以及toFixed()保留两位小数丢失精度的问题

1、金额进行千分 function commafy(num) { if ((num "").trim() "") { return ""; } if (isNaN(num)) { return ""; } num num ""; if (/^.*\..*$/.test(num)) { const pointIndex num.lastIndexOf("."); co…

[C][动态内存分配][柔性数组]详细讲解

目录 1.动态内存函数的介绍1.malloc2.free2.calloc4.realloc 2.常见的动态内存错误3.C/C程序的内存开辟4.柔性数组1.是什么&#xff1f;2.柔性数组的特点3.柔性数组的使用4.柔性数组的优势 1.动态内存函数的介绍 1.malloc 函数原型&#xff1a;void* malloc(size_t size)功能…

从0开始学会做标书:新手学习做标书制作必修(95节课)

入门框架 电子标书 商务标书 文档排版 技术标书 实操演示 你是否也有同样的问题 1、做标书公司没人教、没人带? 2、如何看懂招标文件? 3、小白零基础能不能学习做标书? 4、商务标、技术标如何得高分? 5、做标书需要什么软件? 6、如何制作电子标书? 7、如何避…

您提供或引用的参考资料无法对应怎么解决

在创建或编辑百度百科词条时&#xff0c;经常会遇到“您提供或引用的参考资料无法对应”的问题。以下百科参考网shaoshai是解决这个问题的一些方法&#xff1a; 检查和修正参考资料 首先&#xff0c;您需要仔细检查提供的参考资料&#xff0c;确保它们与您的内容相对应。如果发…

2024HW|常见红队使用工具

目录 什么是HW&#xff1f; 什么是网络安全红蓝对抗&#xff1f; 红队 常见工具 信息收集工具 Nmap 简介 漏洞扫描工具 Nessus简介 AWVS 简介 抓包工具 Wireshark简介 TangGo 简介 web 应用安全工具 Burpsuite 简介 SQLMap webshell 管理工具 蚁剑 冰蝎 后…

在豆包这事上,字节看得很明白

大数据产业创新服务媒体 ——聚焦数据 改变商业 导语&#xff1a; 1.基于豆包的话炉/猫箱APP市场反响一般 2.价格战对于豆包来说是副产物 3.价格战对大模型市场是良性的 4.豆包接下来会推广至国际社会 因为宣称价格比行业便宜99.3%&#xff0c;豆包成功出圈了。根据火山引擎公…

ADS基础教程17 - 创建含参子图

设计加密保护IP 一、引言二、参数设计 一、引言 将一个子图内部元器件的参数设置成可以在外部进行修改的参数&#xff0c;能够使得封装的子图更加灵活和通用。 二、参数设计 (1)打开一个子图&#xff0c;在菜单栏中选择File–>Design Parameters… (2)弹出的对话框中&am…

Aleth-NeRF: Illumination Adaptive NeRF with Concealing Field Assumption

Abstract Aleth-NeRF: 带有隐蔽场假设的照明自适应 NeRF 照明照明标准的神经辐射场(NeRF)范例采用了一种以观察者为中心的方法,将光照和材料反射的各个方面仅仅从3D 点发射纠缠在一起。这种简化的渲染方法在准确建模在不利光照条件下捕获的图像方面提出了挑战,如弱光或过度曝…

牛客网刷题 | BC101 翻转直角三角形图案

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi学习了循环&am…

【动态规划】速解简单多状态类问题

目录 17.16 按摩师 题⽬描述&#xff1a; 解法&#xff08;动态规划&#xff09;&#xff1a; 1. 状态表⽰&#xff1a; 2. 状态转移⽅程&#xff1a; 3. 初始化&#xff1a; 4. 填表顺序 5. 返回值 代码 总结&#xff1a; 213.打家劫舍II&#xff08;medium&#x…

实践部署 浦语·灵笔2 模型,写作图文并茂的文章

1 初步介绍 XComposer2 相关知识 浦语灵笔2 是基于 书生浦语2 大语言模型研发的突破性的图文多模态大模型&#xff0c;具有非凡的图文写作和图像理解能力&#xff0c;在多种应用场景表现出色&#xff0c;总结起来其具有&#xff1a; 自由指令输入的图文写作能力&#xff1a; 浦…

解读makefile中的延迟变量与即时变量

在 Makefile 中&#xff0c;有两种类型的变量&#xff1a;即时变量&#xff08;immediate variable&#xff09;和延迟变量&#xff08;deferred variable&#xff09;。 它们在 Makefile 的执行过程中具有不同的特性和行为。 即时变量&#xff08;Immediate Variable&#x…

adb 连接机顶盒命令

抓机顶盒日志的方法&#xff0c;使用此命令进行抓日志&#xff0c;个别无法抓日志的盒子可以使用此方法 1、安卓9.0版本查询命令 ps -ef |grep com.cm.webos.iptv 2、安卓4.4版本查询命令 ps |grep com.cm.webos.iptv 3、查询顺序&#xff1a;首先进入shell下进行操作 adb she…

php 连接sqlserver步骤

1.首先要确定使用的是sqlserver的哪个版本&#xff0c;比如sqlserver2012 2.确定服务器是64位还是32位的 3.确认一下使用php的哪个版本&#xff0c;比如php7.1 SQL Server 的 Microsoft PHP 驱动程序 Microsoft Drivers for PHP 支持矩阵 - PHP drivers for SQL Server | Mi…

基于遗传优化的货柜货物摆放优化问题求解matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的货柜货物摆放优化问题求解matlab仿真。在一个货架上&#xff0c;初始状态下&#xff0c;随机将货物放在货柜上&#xff0c;优化之后&#xff0c;整…