上位机通过c#调用MX component实现与三菱PLC通讯。附源代码
2018-01-05 15:48
2361 查看
由于本人在工业自动化行业做机器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业机器人进行通信。上一篇写了c#通过TCP与川崎机器人通讯,链接:c#链接川崎机器人。
在自动化项目中,除了视觉系统直接与机器人通信外,还有一种常用的就是上位机与PLC通信,再由PLC对机器人进行控制,这适用于整个项目比较复杂的情况。下面就介绍如何利用MX component实现与三菱PLC的通信。
首先当然是MX component这个软件的安装与设置。下载安装好软件后,需要进行一些设置才能通信,网上一下就能搜到。这里就简单讲一下。
这里用以太网连接FX5U的CPU为例,选好接口和CPU
如果是PC直接连接PLC则勾选,并选择PC的网卡,但有些时候要通过交换,则需要把勾选去掉,然后按“Find CPU on network”自动获得所选型号的CPU的IP地址。博主一开始先输入了IP地址然后再寻找CPU,一直出错,很是苦恼了一段时间。
设置完成之后测试连接,成功后就可以用C#来调用了。
接下来是c#里面的程序。首先将dll添加引用:
图片4
然后private AxActUtlTypeLib.AxActUtlType axActUtlType1 = null;声明一个对象,以及this.axActUtlType1 = new AxActUtlTypeLib.AxActUtlType();(程序里忘加上去了)在程序里就可利用这个axActUtlType1 进行读写等操作。
首先要建立PLC连接,建立连接后,就可以对PLC进行读、写操作了。
写PLC则是iReturnCode = axActUtlType1.WriteDeviceBlock2(szDeviceName, iNumberOfData, ref theReadData1);
关键语句并不复杂,都是(设备名称,数量,值),如iReturnCode = axActUtlType1.ReadDeviceBlock2(M100, 1, out arrDeviceValue[0]);如果读取操作成功,则iReturnCode
等于0,arrDeviceValue就是读取的值。写操作也是类似。需要注意的是一些逻辑判断上的问题,比如说怎么判断上升沿,写入之前先判断当前值,写入是否成功的判断等。这些在源代码相应的部分都有注释,就不过多赘述了。
最后附上源代码下载:C#连接PLC源代码下载
在自动化项目中,除了视觉系统直接与机器人通信外,还有一种常用的就是上位机与PLC通信,再由PLC对机器人进行控制,这适用于整个项目比较复杂的情况。下面就介绍如何利用MX component实现与三菱PLC的通信。
首先当然是MX component这个软件的安装与设置。下载安装好软件后,需要进行一些设置才能通信,网上一下就能搜到。这里就简单讲一下。
这里用以太网连接FX5U的CPU为例,选好接口和CPU
如果是PC直接连接PLC则勾选,并选择PC的网卡,但有些时候要通过交换,则需要把勾选去掉,然后按“Find CPU on network”自动获得所选型号的CPU的IP地址。博主一开始先输入了IP地址然后再寻找CPU,一直出错,很是苦恼了一段时间。
设置完成之后测试连接,成功后就可以用C#来调用了。
接下来是c#里面的程序。首先将dll添加引用:
图片4
然后private AxActUtlTypeLib.AxActUtlType axActUtlType1 = null;声明一个对象,以及this.axActUtlType1 = new AxActUtlTypeLib.AxActUtlType();(程序里忘加上去了)在程序里就可利用这个axActUtlType1 进行读写等操作。
首先要建立PLC连接,建立连接后,就可以对PLC进行读、写操作了。
textBox1.Text = "开始连接PLC"; axActUtlType1.ActLogicalStationNumber = 1;//填设置的逻辑站号和密码 axActUtlType1.ActPassword = ""; iReturnCode = axActUtlType1.Open();//尝试连接PLC,如果连接成功则返回值为0 if (iReturnCode == 0) { textBox1.Text = "连接PLC成功..."; } else { textBox1.Text = "连接PLC不成功..."; }读取PLC用到的是iReturnCode = axActUtlType1.ReadDeviceBlock2(szDeviceName, iNumberOfData, out arrDeviceValue[0]);
写PLC则是iReturnCode = axActUtlType1.WriteDeviceBlock2(szDeviceName, iNumberOfData, ref theReadData1);
关键语句并不复杂,都是(设备名称,数量,值),如iReturnCode = axActUtlType1.ReadDeviceBlock2(M100, 1, out arrDeviceValue[0]);如果读取操作成功,则iReturnCode
等于0,arrDeviceValue就是读取的值。写操作也是类似。需要注意的是一些逻辑判断上的问题,比如说怎么判断上升沿,写入之前先判断当前值,写入是否成功的判断等。这些在源代码相应的部分都有注释,就不过多赘述了。
最后附上源代码下载:C#连接PLC源代码下载
相关文章推荐
- C#通过委托和异步调用实现窗体间的通讯
- C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)
- C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)
- 《转》用C#通过反射实现动态调用WebService 告别Web引用
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯-异步通讯篇[转]
- 在c#中通过http对象编程实现webservice调用
- C# 中通过程序调用命令行Ping 网络的实现
- C# 反射-通过继承接口实现创建对象并调用方法
- C#.NET dll封装(包含UI和实现函数),通过反射调用dll实现控件的快速加载(PrimPointList.cs)
- 用C#通过反射实现动态调用WebService 告别Web引用
- Lua的系统学习(杂)_通过Lua调用C#方法(热更新最直观的原理理解)_简单的随机数实现
- C#.NET dll封装(包含UI和实现函数),通过反射调用dll实现控件的快速加载(PrimPointListCreator.cs)
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯-同步通讯篇
- 通过COM组件方式实现java调用C#写的DLL文件 转
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯-同步通讯篇
- C#实现P2P网络通讯程序源代码与演示
- C#调用C++生成的类(通过CLR类库实现)
- 通过COM组件方式实现java调用C#写的DLL文件
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯 --异步通讯篇
- 通过COM组件方式实现java调用C#写的DLL文件