精华内容
下载资源
问答
  • 三菱OPC服务器软件MX OPC Server 7.04,2020年最新版7.04能适用于三菱全系列PLC和组态软件/上位机通讯等的连接,三菱的OPC软件只有英文版本
  • 三菱OPC服务软件

    2016-03-18 22:15:22
    三菱OPC服务软件
  • 三菱OPC服务器软件

    热门讨论 2012-01-30 11:44:57
    三菱OPC服务软件(MX OPC Server) 能适用于三菱全系列PLC和组态软件的连接
  • 连接三菱PLC,转换成OPC协议,提供安装序列号,亲测可用
  • 三菱OPC服务软件(MX+OPC+Server)能适用于三菱全系列PLC和组态软件的连接
  • MX OPC Server三菱PLC与组态通讯软件
  • opc客户端OPC Client

    2018-04-07 00:25:52
    opc客户端OPC Client,从三菱opc软件中提取,亲测好用。
  • OPC Server是一套利用微软的COM/DCOM技术实现工业自动化资料获取的架构,它功能强大,程序设计者可以使用相同的程序代码,操作不同的硬件装置,充分达成软件复用的目的,只要支持OPC接口,就能轻易访问物理设备,...

    OPC Server是一套利用微软的COM/DCOM技术实现工业自动化资料获取的架构,它功能强大,程序设计者可以使用相同的程序代码,操作不同的硬件装置,充分达成软件复用的目的,只要支持OPC接口,就能轻易访问物理设备,闪电园小编主推各位下载!

    20fd8a3b1d5ec8469ae3ab54521fbc5f.png

    软件特色

    1、提供网络系统不可缺少的DCOM安全,它对设置点做出了说明

    2、迎合全球化趋势,支持日文、英文、中文、韩文多种语言

    3、基于XML/SOAP,新一代OPC演变为OPC UA(统一架构)

    4、旧版OPC server(Ver3.X)将终止

    5、所有设备或设施使用不同厂商的PLC时;

    6、所有设备或设施使用不同厂商的SCADA时;

    7、使用某软件而没有目标设备的驱动器时;

    8、对于PLC的技术信息不甚了解时;

    9、为输出设备开发设备或设施时。

    OPC Server应用

    目前,Takebishi已为三菱MELSEC、横河FA-M3、欧姆龙SYSMAC、捷太格特(丰田机械)TOYOPUC,日立HIDIC、基恩士KV、夏普SATELLITE、富士MICREX、MODBUS从属设备成功开发了OPC Server。

    展开全文
  • MX OPC Server

    2020-12-10 18:10:50
    win10可用,64位,MX OPC Server为三菱opc软件,配合GX_works2,以及组态王等组态软件实现软件层面的模拟通讯及调试,该软件为英文版,亲测可以使用。
  • OPC服务器软件KEPServerEx V4.0, 从别的网站下载来的
  • 本文将使用一个基于开源项目HslCommunication创建的OPC UA网关,方便通过配置创建一个OPC UA的网关中心。具体的操作及支持的设备信息项目参照下面: 开源项目HslCommunication的github地址:...

    前言


     本文将使用一个基于开源项目HslCommunication创建的OPC UA网关,方便通过配置创建一个OPC UA的网关中心。具体的操作及支持的设备信息项目参照下面:

     开源项目HslCommunication的github地址:https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持。此项目在工业界非常的流行,用来采集设备的数据以及在多个软件之间进行数据传送,以及一些简单的控件显示。

     

     在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装:

    Install-Package HslCommunication
    

      

    NuGet安装教程  http://www.cnblogs.com/dathlin/p/7705014.html

     

     

    Demo软件下载

    HSLSharp.zip

    版本将会随着更新功能会有所变化,相应的本博客也会有更新,如下也会做一些更新日志的声明:

     

    v0.0.1 

    2018年5月1日 13:47:22

    预发行版,初步的测试。

     

    特性支持


    •  支持空设备节点,创建单纯的节点以供设备读写
    •  支持三菱PLC的设备节点,针对的MC协议的二进制和ASCII的机制
    •  支持西门子设备节点,支持S7协议,Fetch/Write
    •  支持欧姆龙设备节点,支持FINS/TCP节点
    •  支持Modbus-Tcp设备节点
    •  支持异形Modbus-Tcp设备节点
    •  支持NetSimplify客户端节点,这个协议可以在多个电脑之前传送数据。

     

    使用说明


     本软件的OPC UA的节点配置需要要节点配置器和解析规则配置器组成,节点配置器来配置OPC UA的节点分类规则,节点描述等信息,但是具体的数据标签由解析规则配置器组成。

     以下就具体说明下程序大致的配置步骤:

    1.  配置客户端分类信息,新增想要的设备,新增设备时需要选择相应的设备类型。
    2.  新建完设备类型之后,需要配置数据请求,指定读取的地址,读取的长度,然后配置解析规则代码。
    3.  如果没有解析规则代码,那就需要先配置规则解析,本系统支持可视化的规则配置,具体的配置方法本文下文会深度讲解。

     

    主界面的简单介绍


     打开软件的主界面,如下,在初次使用软件的时候,系统默认了三个固定的根节点

    1.  Devices      设备类的根节点
    2.  ModbusServer Modbus服务器的节点,目前不支持
    3.  ModbusAlien 异形ModbusTcp设备对象

     

    如果没有配置软件节点信息,那就需要先点击 系统配置节点配置 菜单了。主界面如下

     

     节点配置的界面如下,此处有个细节,点击节点名称,即可以在右侧的数据列表里显示出来当前选择的节点的详细信息,做左侧节点的操作,通过鼠标右键的菜单来操作:

     

     

     

    添加节点分类操作


     此处简单的演示添加一个简单的分类操作信息。鼠标在Devices上右键即可操作

    然后就会弹出一个编辑框,这样我们就实现了一个类别节点的添加,注意:类别节点是可以相互嵌套的,可以形成复杂的分类

     

    复杂类型节点举例:

     

     然后点击 保存文件 菜单,然后关掉当前窗口,回到主界面,点击 启动引擎,点击 测试客户端 菜单,启动一个通用的OPC UA客户端来浏览服务器上有什么数据信息

     

     

     可以看到OPC UA的服务器已经按照我们设想创建好了数据节点信息。然后重启软件,我们重新进入 节点配置器 节点进行操作。

     

    编辑和删除节点操作


     想要对哪个节点进行操作,就选择哪个节点,然后右键,发现就2个额外的操作选择,编辑节点 删除节点注意,这里的编辑和删除适用于所有分类节点和设备节点,准确的说,除了3个根节点外不能修改外,其他节点都是可修改的。

    删除节点的时候需要注意有个细节:如果当前删除的节点没有子节点,该节点直接进行删除,如果包含了子节点,将会弹出一个对话框。

     

    新增一个演示设备示例,Modbus-Tcp设备


     此处我们演示一个例子,添加一个Modbus-Tcp的设备,为啥要拿这个演示呢,因为基于HslCommunication组件的项目中提供了一个Modbus服务器演示项目,可以方便的进行本机的调试测试等等操作。

     下载地址:ModbusTcpServer.zip

     

     在开始开发前,还要说明个事情,虽然HslCommunication组件支持读取线圈,寄存器,输入点操作,但是此处只支持读取寄存器,如果要读取线圈怎么办,可以采用的解决方案是把线圈的数据先挪到寄存器里,再进行解决。

     OK,万事俱备,开始吧。

     

     然后我们输入好设备的基本信息,比如说名字,描述,IP地址,端口号,客户端的站号等等操作

    然后点击 确认 。回到节点配置器如下:

    这样就添加成功了一个设备,我们选中这个节点后,右侧的数据列表就显示了这个设备的相关信息。

    先不要急着给设备添加访问请求,因为目前没有 配置解析规则 ,那么接下来的操作是点击上图的 保存文件 按钮操作,然后回到主界面

     

    这时候我们进入一个关键的操作,那就是配置解析规则,这个是什么意思呢,我先解释下,我们从设备读取数据通常是字节数据,并不是一些基础的数据类型,比如说short,ushort,int,uint,float.double之类的数据,这个解析规则就是起这样的作用的。比如ModbusTcp我们需要读取20个地址长度的寄存器,那么读取出来以后就是40字节长度,这些寄存器里都有什么数据呢

    [      0     -     1       ]   数据一    short类型

    [      2     -     3       ]   数据二   ushort类型

    [      4     -     7       ]   温度     float类型

    [      8     -     31     ]   机器人关节数据    共计6个长度的float数组

    [      32   -     39     ]   条码     共计8个字节长度

     

    以上是我们假设的数据,因为我也不知道您实际中会碰到怎样的情况,此处就做了一些比较经验的假设,还假设了一个数组的存在,条码的字符串存在,OK,有了这些信息,我们就可以添加解析规则了。

    还是老的操作,我们接下来要看看需要我们输入什么信息了。

    随便输入一个规则名称吧,然后点击 确认

     

    接下来我们就需要来添加真正的规则解析了。

    先根据上面的信息来填写数据一的信息,索引为0,数据长度为1,因为没有数组。点击确认

     

     然后继续添加规则

    然后添加温度数据

    然后再添加机器人位置数据,注意,这是一个数组,长度为6,那么按照下面设置,数据长度的信息需要设置为6

    在添加最后一个数据为条码

     

     

     到这里为止,我们添加了所有的数据了,回到 解析规则器配置界面 ,看看刚刚配置到的成果吧,

     

     左边显示了字节的信息,共配置了40个字节的数据,每种数据类型的背景颜色都不一致,用于快速的区分不同种类的数据类型,可视化的界面显示了所有配置的数据信息,类型,已经所在的字节位置。方便的快速检查有没有遗漏的信息。

     确认可以之后,点击菜单的 保存文件 按钮,然后回到节点配置器

     

     这下子可以真的完成数据配置界面了,这里再假设我们需要读取的数据在地址0开始的20个地址的寄存器里。

     

     

     接下来就按照我们假设的信息输入

     

     这里的请求地址是寄存器的地址,地址规则如下:

    •  Modbus协议   就是纯数字的内容
    •  三菱PLC         D100,或是W1A0
    •  西门子PLC     M100,DB20.30之类的
    •  欧姆龙            D100,A100
    •  SimplifyNet     纯数字,或是1.0.3

     这有什么规律呢,我们可以发现这些地址的格式需要HslCommunication支持,所以在配置前,最好使用HslCommunicationDemo软件进行简单的测试,关于该软件的下载地址:

     HslCommunicationDemo.zip

     

     添加完成后,保存。回到软件的主界面。然后点击 启动引擎 ,这时候我们还没开始Modbus服务器,看看有什么效果。

     

     下面显示加载的设备信息中发现了一台设备,类型为ModbusTcp设备,这台设备的服务器我们还没有开启,所以在设备监控项里这个设备处于闪烁中,我们把鼠标移动这个小框框里看看,

     

     

     可以看到一些设备的基本信息,名称,状态,上次接收时间,这里的上次接收时间是什么意思呢,初始化的情况下,默认为1天之前,好了,接下来我们开好服务器的软件。

     

    我们一点击 启动服务 按钮后,运行日志立马显示有设备连接上来了,

    当HslSharp的设备连接上了服务器之后,会怎么样呢。

     背景颜色已经变绿色了,上次接收时间也更新了,状态也变成了 在线 状态,然后我们在看看OPC UA的客户端,有什么效果。

     

    然后我们更改下数据试试,在Modbus服务器的界面,在地址2里写入float类型的数据,123.456试试看

     

     

    然后再去OPC UA的客户端界面刷新数据看看数据效果

     

    此处验证成功,再写一个吧,写个条码信息,在地址16-19里,写入ABCDEFGH;

     

     我们就可以看到

     此处有个小BUG,做演示截图的时候来不及改这个BUG了,后面肯定会修复。并在日志里声明

     

     

     

    特别说明


     你看我们在配置数据解析规则的时候并没有指定数据的大小端,比如三菱是小端在前,大端在后的,西门子是大端在前,小端在后的,Modbus协议和欧姆龙是以字为单位反转的。实际上在本软件中无需理会,我们只要关注什么数据,占了多少长度即可。还是相当方便的。如果有更好的建议,可以联系作者改进。

     

     

     

    ModbusTcp异形客户端配置


     异形ModbusTcp的配置和大体上和上面的ModbusTCP配置是一样的,但有一些小区别,需要下次完善更新。

     

    转载于:https://www.cnblogs.com/dathlin/p/8976955.html

    展开全文
  • OPC-访问三菱Q系列PLC方法》由会员分享,可在线阅读,更多相关《OPC-访问三菱Q系列PLC方法(6页珍藏版)》请在人人文库网上搜索。1、技术主题-OPC访问三菱q系列PLC的方法author : chonggaoyuqq : email : tjycg 163....

    《OPC-访问三菱Q系列PLC方法》由会员分享,可在线阅读,更多相关《OPC-访问三菱Q系列PLC方法(6页珍藏版)》请在人人文库网上搜索。

    1、技术主题-OPC访问三菱q系列PLC的方法author : chonggaoyuqq : email : tjycg 163.com 2011.11.07另一方面,q系列PLC经典配置示例:二、PLC编程设备三、PLC过程控制程序设计的方法四、通过上位机读取和写入PLC数据(控制数据的写入、控制数据的读取)五、从vs 008 OPC服务器PLC访问的方法另一方面,q系列PLC经典配置示例:带串行、以太网、16点输入、16点输出地方012345模组化电源(固定)Q62P电脑处理器(固定)q 02处理器串行QJ71C24N互联网QJ71E71-100cc链接qj61btt11n输入。QX40输出Q。

    2、Y40P32比特32比特32比特十六位元十六位元地址020406070程序访问地址X60X70二、PLC编程设备一般来说,x是输入继电器,y是输出继电器,m是辅助继电器,SPM是专用辅助继电器,t是计时器,c是计数器,s是状态继电器,d是数据寄存器,MOV是传送等。x输入继电器(16位)输入指示灯显示硬件的实际ON/OFF状态(ON灯点亮、OFF灯熄灭)。 如果程序修改x值,并与实际硬件输入不匹配,则不显示灯,但对程序有效。y输入继电器(16位)m辅助继电器叔叔计时装置c.c吧台德. d数据寄存器(16位)负数以补数形式被存储。D800-D999可以关闭电源并存储的寄存器在OPC服务器的读取速。

    3、度测试中,读取200个寄存器花了0.125S时间注:负载表Panther表可以设定PLC的寄存器地址,表的重量数据可以直接写入编程控制点,PLC程序可以直接读取。 设定方法三、PLC过程控制程序设计的方法1 )手动编制PLC程序2 )用编程工具制作t模式,写入PLC。四、通过上位机读取和写入PLC数据(控制数据的写入、控制数据的读取)1 )通过编程软件(软件: VS2005/VS2008 ),调用OPC服务器库(Interop.ACTMULTILib.dll、Interop.ACTSUPPORTLib.dll ),并使用PLC需要OPC服务器.软件配置: melsoftapplication-。

    4、MX组件-通信实用程序。(OPC服务器还可以访问PLC的数据软件: melsoftapplication-MX组件- plcmonitorutility )图通信实用程序图PLC监视器实用程序1/2监视器图PLC Monitor Utility 2/2设定值2 )通过配置软件,调用OPC Server库,向PLC读取数据(编程设备)并写入数据。(缺点,配置软件不是为了PLC设备,处理速度慢,数据的读写速度慢了几秒。)五、通过vs 008 OPC服务器PLC访问的方法向5.1解决方案中添加opc server dll库Interop.ACTMULTILib.dllInterop.ACTSUPPO。

    5、RTLib.dll5.2程序代码的读写引用/1plc库using ACTMULTILib; 引用/PLC库for PLC MITSUBISHIusing ACTSUPPORTLib; 引用/PLC库for PLC MITSUBISHI/2 PLC站的定义acteasyifclassplc _ station=newcacteasyifclass (); PLC站的定义PLC _ station.actlogicalstationnumber=1; /Set Logic Station Number/3关闭PLC站PLC_Station.Close ();int intRet=PLC_Stati。

    6、on.Open ();/开放式PLC/Check PLC Open ResultPS (内部et=0)/-plcopenok举止/MessageBox.Show(PLC Open OK! );以下else/- AMK举止Tx_RecData.Text=PLC Open NG! 是!返回;/MessageBox.Show(PLC Open NG! );以下读取/4plc控制点值(多个)int int tmp=new int 0,0,0,0 ;if (PLC _ station.readdevicerandom ( X60nx61nx62nx63n ,4,out intTmp0)=0)正确读取tx。

    7、 _ recdata.text=int tmp 0.tostring (), intTmp1.ToString (), intTmp2.ToString (), intTmp3.ToString ();以下Else /读取错误举止读取tx_recdata.text=plc的错误;以下写/5plc控制点(多个)/intRet=PLC_Station.Close ();int int tmp=new int 0,0,0,0 ;string stri=TB _ writevalue.text.trim ().split (;int i=0;for (; i stri.Length; PS )举止int tmp I =int.parse (stri I .trim ();以下string stradd=TB _ write add.text.trim ()/eg.staradd= d100nd 101nd 102nd 103n ; 请注意控制点和数值的数量是一致的/eg. StarAdd=X60nX61n ;intra et=PLC _ station.writedevicerandom (stradd,I,ref intTmp0 );TB_Status.Text=;if (互联网!=0)举止TB_Status.Text=Write PLC Error ;以下读书写字的简单例子。

    展开全文
  • OPC三菱Q系列PLC通信

    千次阅读 2021-01-13 10:52:06
    一、OPC软件配置 安装好KEPServerEX 6 软件,网上资源很多,自己下载。 打开软件: 我电脑上已经配置好了两个连接三菱Q03UDVPLC的通道,两个都可以同时连接,只需要设置不同的端口号就可以了。 再新建一个通道: ...

    OPC与三菱PLC通信

    一、OPC软件配置

    安装好KEPServerEX 6 软件,网上资源很多,自己下载。
    打开软件:
    在这里插入图片描述
    我电脑上已经配置好了两个连接三菱Q03UDVPLC的通道,两个都可以同时连接,只需要设置不同的端口号就可以了。
    再新建一个通道:
    选择三菱网络通信
    在这里插入图片描述
    选择自己电脑的网口作为网络适配器
    在这里插入图片描述
    通道创建完成
    在这里插入图片描述

    点击添加设备,选择Q系列PLC:
    在这里插入图片描述

    ID设置,前面位网址,后面按照这样写就可以了,详细信息可以点击帮助了解。
    在这里插入图片描述
    选择TCP/IP,再设置端口号,PLC配置时需要添加此端口
    在这里插入图片描述
    设备创建完成

    在这里插入图片描述
    添加标记:
    在这里插入图片描述
    标记创建完成
    在这里插入图片描述

    二、PLC网络配置

    设置IP地址
    在这里插入图片描述
    选择TCP,MC协议,设置端口号:
    在这里插入图片描述
    将参数下载到PLC,重启PLC。
    三、通信测试

    打开Quick Client
    在这里插入图片描述
    通信正常,同时另外两个通道也通信正常。
    在这里插入图片描述
    在这里插入图片描述

    四、通过C#程序监控数据

    需要一个OPCAutomation.dll文件,引入这个文件后就可以进行OPC通信编程。
    在这里插入图片描述
    代码如下:

    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 OPCAutomation;//引入OPC命名空间
    using System.Net;
    using thinger.com.Models;
    
    namespace OPC通信
    {
        public partial class MainForm : Form
        {
            public MainForm()
            {
                InitializeComponent();
            }
    
            #region   创建对象
    
            private OPCServer KepServer;//OPC服务器对象
            private OPCBrowser KepBrower;//OPC服务器中的变量集
            private OPCGroups KepGroups;//OPC服务器中的组集合
            private OPCGroup KepGroup;//OPC服务器中组集合内的组
            private Array ServerHandles;//句柄
            private Array ServerErrors;//错误信息
            private int TransactionID = 0;
            private int CancelID = 0;
    
            #endregion
    
            #region  刷新节点列表
            /// <summary>
            /// 刷新节点列表
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnRefresh_Click(object sender, EventArgs e)
            {
                this.cbServerNode.Items.Clear();
                IPHostEntry iphost = Dns.GetHostEntry(Environment.MachineName);//获取计算机名
                if(iphost.AddressList.Length>0)
                {
                    for(int i=0;i<iphost.AddressList.Length;i++)
                    {
                        string host = Dns.GetHostEntry(iphost.AddressList[i]).HostName;//得到计算机名
                        if(!this.cbServerNode.Items.Contains(host))
                        {
                            this.cbServerNode.Items.Add(host);
                        }
                    }
                }
                if(this.cbServerNode.Items.Count>0)
                {
                    this.cbServerNode.SelectedIndex = 0;
                }
            }
            #endregion
    
            #region  获取服务列表
            private void cbServerNode_SelectedIndexChanged(object sender, EventArgs e)
            {
                KepServer = new OPCServer();
                object serverList = KepServer.GetOPCServers(this.cbServerNode.Text);//根据计算机名获取OPC服务器
                foreach (var item in (Array)serverList)
                {
                    if (!this.cbServerName.Items.Contains(item))
                    {
                        this.cbServerName.Items.Add(item);
                    }
                }
                if (this.cbServerName.Items.Count > 0)
                {
                    this.cbServerName.SelectedIndex = 0;
                }
            }
            #endregion
    
            #region   连接与断开
            /// <summary>
            /// 连接与断开
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnConnect_Click(object sender, EventArgs e)
            {
                if(this.btnConnect.Text=="Connect")
                {
                    if(KepServer==null)
                    {
                        KepServer = new OPCServer();
                    }
                    try
                    {
                        KepServer.Connect(this.cbServerName.Text, this.cbServerNode.Text);//连接OPC
                    }
                    catch(Exception ex)
                    {
                        MessageBox.Show("连接失败" + ex.Message);
                        return;
                    }
    
                    //获取所有的变量
                    KepBrower = this.KepServer.CreateBrowser();
                    KepBrower.ShowBranches();
                    KepBrower.ShowLeafs(true);
                    this.lvName.Items.Clear();
    
                    //往lvName中添加变量名
                    foreach(var item in KepBrower)
                    {
                        this.lvName.Items.Add(item.ToString());
                    }
    
                    //通信组集合初始化
                    KepGroups = KepServer.OPCGroups;
                    KepGroups.DefaultGroupDeadband = 0;
                    KepGroups.DefaultGroupIsActive = true;
    
                    //通信组初始化
                    KepGroup = KepGroups.Add("测试组");
                    KepGroup.IsActive = true;//激活
                    KepGroup.IsSubscribed = true;//订阅
                    KepGroup.UpdateRate = 250;
                    KepGroup.IsSubscribed = true;
    
                    KepGroup.AsyncReadComplete += KepGroup_AsyncReadComplete;
    
                    this.btnConnect.Text = "Disconnect";
    
                    //开始读取
                    this.timer1.Enabled = true;
                }
                else
                {
                    KepServer.Disconnect();
                    this.btnConnect.Text = "Connect";
                    //停止读取
                    this.timer1.Enabled = false;
                }
            }
    
            #endregion
    
            #region  双击创建变量
            //创建变量集合
            private List<OPCVariable> OPCVarList = new List<OPCVariable>();
    
            /// <summary>
            /// lvName双击事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void lvName_DoubleClick(object sender, EventArgs e)
            {
                if(this.lvName.SelectedItems!=null)
                {
                    //添加一个变量到集合里
                    OPCVarList.Add(new OPCVariable()
                    {
                        OPCItemID = this.lvName.SelectedItems[0].Text   
                    });
    
                    //OPCVarList>>ServerHander
    
                    //OPCVarList>>NumItems ItemIDS ClientHandles
    
                    //Array和集合的区别 前者索引从1开始 后者索引从0开始
    
                    List<string> ItemIDS = new List<string>();
                    List<int> ClientHandles = new List<int>();
    
                    //初始化
                    ItemIDS.Add("0");
                    ClientHandles.Add(0);
    
                    //变量个数
                    int Count = OPCVarList.Count;
    
                    //循环添加
                    for(int i=0;i<Count;i++)
                    {
                        ItemIDS.Add(OPCVarList[i].OPCItemID);
                        ClientHandles.Add(i + 1);
                    }
    
                    Array ItemID = ItemIDS.ToArray();
                    Array ClientHandle = ClientHandles.ToArray();
    
                    KepGroup.OPCItems.AddItems(Count, ref ItemID, ref ClientHandle, out ServerHandles, out ServerErrors);
                }
            }
            #endregion
    
            #region 定时读取
            /// <summary>
            /// 定时读取事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void timer1_Tick(object sender, EventArgs e)
            {
                //读取变量  服务器 OPCServer->组集合 OPCGroups->组 OPCGroup
    
                //OPC读取三种方式:同步 异步 订阅
                //KepGroup.SyncRead(); 同步
                //KepGroup.AsyncRead(); 异步  
                //KepGroup.DataChange(); 订阅
    
                if (KepServer!=null&& this.OPCVarList.Count > 0)
                {
                    //同步读取
                    //KepGroup.SyncRead();
                    //异步读取
                    KepGroup.AsyncRead(this.OPCVarList.Count, ref ServerHandles, out ServerErrors, TransactionID, out CancelID);
                }
    
            }
    
            /// <summary>
            /// 异步读取完成事件
            /// </summary>
            /// <param name="TransactionID"></param>
            /// <param name="NumItems"></param>
            /// <param name="ClientHandles"></param>
            /// <param name="ItemValues"></param>
            /// <param name="Qualities"></param>
            /// <param name="TimeStamps"></param>
            /// <param name="Errors"></param>
            private void KepGroup_AsyncReadComplete(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps, ref Array Errors)
            {
                //数据解析
                for(int i=1;i<=NumItems;i++)
                {
                    object value = ItemValues.GetValue(i);
                    int clientHandle = Convert.ToInt32(ClientHandles.GetValue(i));
                    for(int j=0;j<this.OPCVarList.Count;j++)
                    {
                        if(j+1==clientHandle)
                        {
                            this.OPCVarList[j].OPCValue = value.ToString();
                            this.OPCVarList[j].Quality = Qualities.GetValue(i).ToString();
                            this.OPCVarList[j].UpdateTime = TimeStamps.GetValue(i).ToString();
                        }
                    }
                }
                this.dgvData.DataSource = null;
                this.dgvData.DataSource = this.OPCVarList;
                
            }
            #endregion
        }
    }
    
    

    由于DLL文件是32位的,所以只能编译为32位的程序,点击运行:
    在这里插入图片描述
    三个通道访问同一个数据都正常。

    五、采用UDP通信

    设置一个UDP通道,设置好端口号。
    在这里插入图片描述
    在PLC参数设置中添加一个UDP通道:
    在这里插入图片描述

    运行Quick Client,通信正常
    在这里插入图片描述
    C#监控程序正常工作。
    在这里插入图片描述

    展开全文
  • ( 组态王与三菱PLC编程软件(GX Developer)的链接(用MX OPC Server 4.20)
  • 三菱FX3U PLC广泛应用于工业控制与自动化领域,是一款用量巨大的PLC,但是,三菱FX3U PLC本身并不支持OPC UA协议,传统的做法是通过OPC UA软件安装在工控机上来与PLC进行通信,这种做法依赖于工控机等高成本的硬件...
  • MX OPC Server 6.04.z01

    2018-11-16 23:39:22
    MX OPC Server 6.04是三菱OPC服务器软件,能适用于三菱全系列FX系列、Q系列PLC的数据采集。
  • MX OPC Server 6.10.part1

    2018-07-31 18:05:23
    MX OPC Server是三菱OPC服务软件,能适用于三菱全系列PLC(可编程逻辑控制器)和组态软件的连接。 三菱PLC OPC服务器支持: PLC类型自动探测 串口波特率自动探测 逐步向导式配置 位写能力,让用户可以改变位开关 ...
  • MX OPC Server 6.04.z02

    2018-11-17 22:33:03
    MX OPC Server 6.04是三菱OPC服务器软件,能适用于三菱全系列FX系列、Q系列PLC的数据采集。
  • MX OPC Server 6.04.z03

    2018-11-18 08:37:40
    MX OPC Server 6.04是三菱OPC服务器软件,能适用于三菱全系列FX系列、Q系列PLC的数据采集。
  • PLC通讯之串口转以太网/WIFI的透传模块(DTU)的专用OPC软件和DLL通讯组件 五、方案优点 1. 高级语言编程与DLL驱动无缝衔接,直接连接DTU模块,无需虚拟串口等其它任何其它软件,保证系统的稳定性,方便软件安装...
  • MX OPC Server 6.04 序列号

    2018-11-18 08:44:52
    MX OPC Server 6.04 SN是三菱OPC服务器软件的序列号,之前上传的安装包分为三个,资源名称MX OPC Server 6.04的后缀名z01是第一个包,压缩资源名称MX OPC Server 6.04.z03的后缀名zip是最后一个包。
  • MX OPC Server 4.20

    热门讨论 2015-03-20 05:47:02
    三菱OPC Server 软件,用于和三菱PLC进行交互的平台,常用于自动化控制。
  • Melsec OPC Server

    热门讨论 2011-10-28 17:40:45
    Melsec opc server (目前最新版本为v3.12)是由日本竹菱公司专门针对三菱PLC开发的OPC,凡支持OPC的组态软件都可通过它来与三菱的PLC进行连接。Melsec opc server支持三菱所有的PLC(FX全系列、A全系列及Q全系列)...
  • Melsec opc server

    2011-10-27 17:31:33
    Melsec opc server (目前最新版本为v3.12)是由日本竹菱公司专门针对三菱PLC开发的OPC,凡支持OPC的组态软件都可通过它来与三菱的PLC进行连接。Melsec opc server支持三菱所有的PLC(FX全系列、A全系列及Q全系列)...
  • MX OPC Server 6.10.part4

    2018-08-01 08:34:49
    MX OPC Server是三菱OPC服务软件,能适用于三菱全系列PLC(可编程逻辑控制器)和组态软件的连接。 三菱PLC OPC服务器支持: PLC类型自动探测 串口波特率自动探测 逐步向导式配置 位写能力,让用户可以改变位开关 ...
  • MX OPC Server 6.10.part3

    2018-08-01 08:32:15
    MX OPC Server是三菱OPC服务软件,能适用于三菱全系列PLC(可编程逻辑控制器)和组态软件的连接。 三菱PLC OPC服务器支持: PLC类型自动探测 串口波特率自动探测 逐步向导式配置 位写能力,让用户可以改变位开关 ...
  • MX OPC Server 6.10.part2

    2018-08-01 08:22:47
    MX OPC Server是三菱OPC服务软件,能适用于三菱全系列PLC(可编程逻辑控制器)和组态软件的连接。 三菱PLC OPC服务器支持: PLC类型自动探测 串口波特率自动探测 逐步向导式配置 位写能力,让用户可以改变位开关 ...
  • 本文介绍如何通过VB代码实现三菱MX OPC的操作。MX OPC是为三菱官方OPC软件,支持三菱全系列PLC产品。
  • 如何实现三菱FX5U PLC和LabVIEW的以太网通信-OPC什么是OPC通信使用的软硬件连接和测试步骤 什么是OPC OPC(OLE for Process Control)技术是指在工业控制设备与控制软件之间建立统一的数据存取规范。应用程序开发者...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 307
精华内容 122
关键字:

三菱opc软件