C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据

这篇具有很好参考价值的文章主要介绍了C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、通讯库介绍

mcprotocol 是一个基于 Node.js 的三菱 PLC MC 协议通信库,具有以下特点:

支持多种三菱 PLC MC 协议的设备,如 FX3U、Q03UDECPU、QJ71E71 等。

支持多种功能码和数据类型,如读取线圈(M)、读取寄存器(D)、写入寄存器(D)、读取扩展寄存器(D*)、读取位寄存器(X/Y)、读取字寄存器(W)等。

支持多种通信方式,如 TCP、UDP、串口等。

代码结构清晰,易于扩展和二次开发。支持 Promise、async/await 等语法糖,提高开发效率。

mcprotocol 的主要功能是实现与三菱 PLC MC 协议设备之间的数据交互,例如读取设备上的某个寄存器的值,并将其传递给 Node.js 应用程序。在使用该库进行开发时,需要先连接到 PLC 设备,然后使用库提供的接口进行数据读写操作。 

通讯协议库是一种软件开发工具,用于实现PLC与其他设备之间的通讯功能。三菱PLC通讯协议库是一款专门为三菱PLC开发的通讯协议库,可以实现PLC与上位机、HMI、SCADA系统等设备之间的数据交换和通讯。

三菱PLC通讯协议库具有以下主要功能:

(1)数据读写功能:可以实现对PLC内部数据的读写操作,包括读取PLC内部寄存器的值、写入数据到PLC内部寄存器等。

(2)报警处理功能:可以实时监测PLC的报警信息,并将报警信息传输给上位机或其他设备进行处理。

(3)远程监控功能:可以实现对PLC的远程监控和控制,可以通过上位机或HMI实时查看和操作PLC的运行状态。

(4)数据传输功能:可以实现PLC与其他设备之间的数据传输,包括实时数据传输、历史数据传输等。

2、开干

这节继续使用上节的VS2022的项目,增加一个方法 MCProtocolLibTest(),具体怎么创建项目,见上节的过程。C#上位机与三菱PLC的通信04--MC协议之A-1E报文测试

1、引入通讯库

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

2、连接PLC

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

3、启动服务器

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

4、读取数据

1、读取D100地址开始的2个int类型数据

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

2、 通过A1E进行D102的双字 DWord(Float) 读取,即读取float类型--4Byte 

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据,C#上位机开发笔记,ReadDeviceBlock,mcProtocolTcp,三菱PLC通讯库

  /// <summary>
  /// 第3方通讯库测试
  /// </summary>
  /// <exception cref="NotImplementedException"></exception>
  private static async void MCProtocolLibTest()
  {
       McProtocolTcp mcProtocolTcp = new  McProtocolTcp(
         "192.168.1.7", 6000,  McFrame.MC1E);
      await mcProtocolTcp.Open();
      if (mcProtocolTcp.Connected)
      {
          Console.WriteLine("连接成功!"); 

          Console.WriteLine("读取D100地址开始的2个int类型数据");
          var result1 = await mcProtocolTcp.ReadDeviceBlock(PlcDeviceType.D, 100, 2);
          for (int i = 0; i < result1.Length; i++)
          {
              //每2个字节一组
              byte[] temp = new byte[2];
              temp[0] = result1[i];
              temp[1] = result1[++i];
              Console.WriteLine(BitConverter.ToInt16(temp, 0));//字节数组转换成int16数据
          }

          Console.WriteLine("读取D102地址开始的1个float类型数据");
          var result2 = await mcProtocolTcp.ReadDeviceBlock(PlcDeviceType.D, 102, 2);
          for (int i = 0; i < result1.Length; i++)
          {
              //每4个字节一组
              byte[] temp = new byte[4];
              temp[0] = result2[i];
              temp[1] = result2[++i];
              temp[2] = result2[++i];
              temp[3] = result2[++i];
              Console.WriteLine(BitConverter.ToSingle(temp, 0));//字节数组转换成float数据
          }
      }
  }

 文章来源地址https://www.toymoban.com/news/detail-826765.html

3、通过A1E进行位的读取M16,M区的地址要转换成16进制,即读取bool类型数据

5、写入数据

到了这里,关于C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

    今日继续我的C#学习笔记,今日开始学习打开使用千兆网口来进行与西门子PLC的通信: 文章提供整体代码、解释、测试效果截图、整体测试工程下载: 主要包含的知识有: 下载NuGet程序包、 西门子PLC及通信协议、搭建虚拟的S7通信仿真环境、C#与西门子S7的六大通信库了解 其

    2024年04月14日
    浏览(47)
  • 上位机与PLC:ModbusTCP通讯之数据类型转换

    从PLC读取的数值,不管是读正负整数还是正负浮点数,读取过来后都会变成UInt16,也就是Ushort类型 前请提要:Int32是32位,ushort是16位,byte是8位 (1)使用原因 向PLC的地址读取数据,PLC向地址写入32位整数,数值为100,但Modbus传输走的是16位,因此无法直接把数值展示到页面上

    2024年02月03日
    浏览(48)
  • 上位机开发之三菱PLC通信

    三菱MC协议是开发三菱系列PLC必须掌握的一种通信协议,其目的是让外部设备,可以通过串行通信模块C24或以太网接口模块E71,实现对可编程控制器CPU的数据访问。 MC协议是Melsec协议的简称。 外部设备通过C24/E71访问可编程控制器CPU时,可以选择不同的通信帧及数据格式来实现

    2023年04月08日
    浏览(41)
  • 上位机与欧姆龙PLC的Fins tcp通讯

    参考1:(147条消息) 欧姆龙PLC的FinsTCP协议_weixin_37700863的博客-CSDN博客_欧姆龙fins协议tcp   参考2:(147条消息) FinsTCP协议报文详细分析_常哥说编程的博客-CSDN博客_fins协议 参考3:(147条消息) 欧姆龙FINS通讯命令实例详解_搬砖dog的博客-CSDN博客_欧姆龙fins 上述文档中有部分描述错误

    2024年02月11日
    浏览(51)
  • C# 三菱PLC上位机开发环境搭建

    一、安装软件 用到两个三菱的软件: 1. MX Component(下载地址 也可以直接在官网上搜索,注意MX后面有空格) 用于连接PLC 2. GX Works2(下载地址 用GX Works3也行) 这个软件主要是电气做PLC编程,我们用来作为仿真,省去开发时摆弄真实PLC 序列号:117-570766844 二、配置软件 MX

    2023年04月18日
    浏览(50)
  • C#上位机与西门子PLC数据交互

    拉了换一个简单的界面 我新建了一个DB数据块【DB1】,右键【DB1】,点击【属性】项,【优化的块访问】默认是勾选,要想显示数据块中地址偏移量,需要把【优化的块访问】勾选取消 1、右键项目名,选择图中【管理NuGet程序包】 2、在搜索框输入【S7netplus】,我安装的是第

    2024年02月13日
    浏览(49)
  • 【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信

    承接上文WIFI上位机部分:【上位机】通过WIFI上位机与网络调试助手通信绘制曲线,现阶段实现了STM32单片机与ESP8266WIFI模块作为下位机与WIFI上位机通信。 ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-无线)模块,此处使用的是正点原子团队自主开发的ATK-ESP-01模块。

    2024年02月05日
    浏览(161)
  • 两台三菱PLC通过485通讯控制

    本例硬件配置: 1.两台FX1S小型PLC (主站与从站) 2.一根3芯线做485通讯使用 3.一根422程序下载线(三菱PLC) 硬件接线: 采用1对接线方式 主站:接线实物(终端电阻未接入) 从站:接线实物(终端电阻未接入) 软件程序设置: 主站: 从站:与主站参数设置一致 程序: 1.主

    2024年02月12日
    浏览(39)
  • C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(一)

    测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 2019 如下图所示,打开S7-PLCSIM ADVANCED V3.0仿真软件,新键一个实例,设置仿真PLC的IP地址等参数,然后点击Start激活PLC, 如下图所示,激活PLC后,可以看到已经存在一个实例, 如下图所示,打开TIA PORTAL V15.1,新建一个项目,

    2023年04月15日
    浏览(43)
  • Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

    本篇将会以西门子PLC软件搭建ModbusTCP仿真环境,并通过仿真环境,介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法,并简介了编写上位机的方法。 由于具有TCP/IP栈协议,通常在Modbus TCP通讯的上位机开发中, 上位机是作为客户端,控制器作为服务器 。Modbu

    2024年02月08日
    浏览(177)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包