如何用Visual Studio C#编程实现上位机电脑与PLC的modbus tcp通讯

技术文章    |      2024

article_11

在工控方面有专门的上位组态软件,比如触摸屏组态软件和电脑版组态软件,都有丰富的通讯功能,可以方便地与各种主流PLC通讯.但是有一些项目中要用到自己开发的电脑软件与工控方面的PLC通讯.比如,我就碰到过一个医疗设备的开发项目要用到工控方面的PLC来控制两轴的步进电机,一轴用来控制水平移动,一轴用来控制转台旋转.当时我做的PLC的程序,PLC使用的是西门子的200SMART系列ST20.上位软件是医疗设备厂家的程序员做的,用的是Visual Studio编程软件.两者通过modbus tcp协议通讯.后来我想自己编程实现这样的通讯.电脑编程我只懂一点点,通过摸索终于做出了一个通讯测试软件.下面来说一下我如何实现的.
首先,需要在电脑上安装微软的Visual Studio编程软件,可以从以下链接下载.(https://visualstudio.microsoft.com/zh-hans/)下载完了安装,安装过程中可能遇到一些问题,自己查资料解决吧,这里就不详细介绍.我安装的是Visual Studio Community 2015版,你可以安装更高版本的,也是可以的.您需要有一定的编程经验,程序不是特别复杂.
一开始想用VB来做这个事,也找到了两个VB通讯的源程序,后来发现不行,因为VB太古老了,不适合现在的系统了.而且是老版的VB工程,要转换成现在用的Visual Studio比较费劲了,所以就放弃了用VB编程的想法.
后来找了一个modbusTCP通讯类库,是C#编写的,比较合适,于是就将这个项目升机改造一下.这个里面实际是有两个项目的.一个项目是ModbusClassTCP,是类库,版本是VS2003.另一个项目是ModbusSampleCommon,是调用这个类库来通讯的测试程序,版本是VS2008.我将这两个项目升机到VS2015.
用你的Visual Studio编程软件打开ModbusSampleCommon.sln解决方案,你会发现这个解决方案已经包含了那两个项目.点菜单生成>生成解决方案,就生成了可执行程序.找到文件夹中的ModbusTester.exe文件运行.如下图,出现一个IP地址,这就是需要连接的modbusTCP服务器地址.下面就需要用PLC建立这个服务器,所以先关掉这个软件.

我找了一个西门子CPU 1215C DC/DC/DC,做好了PLC程序.你用博图V16以上打开”西门子1200PLC做modbus tcp服务器.ap16”这个项目文件就是程序.程序很简单就是使用了MB_SERVER这个指令,设置好参数,下到PLC里就行了.你不必找和我一样的PLC,随便找个PLC,做为modbusTCP服务器就可以了,你甚至可以用触摸屏和其它电脑来作modbusTCP服务器.
装备好PLC,用网线把电脑和PLC连接起来,注意设置好电脑的IP地址.运行ModbusTester.exe程序,输入正确的IP地址,点击连接,如果连接成功就出现通讯数据设置区,可设置地址,数据量,数据类型等.有八个按钮,分别是读线圈,读保持寄存器,写单线圈,写多线圈,读离散输入,读输入寄存器,写单寄存器,写多寄存器.设置好寄存器地址,数据量,数据类型后,点相应的按钮就可以实现通讯.

如下图所示,用博图监控PLC程序,MB_SERVER指令正常.这样就实现了上位机软件与PLC的通讯.当然这个程序只是一个示例程序,真正要使用的话,还要加上定时采集,数据处理等功能.

 

获取详细资料,点击下面链接:

https://item.taobao.com/item.htm?ft=t&id=856479829397&spm=a21dvs.23580594.0.0.52de2c1bMKC1ty