C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器

这篇具有很好参考价值的文章主要介绍了C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、打开仿真工具,创建PLC,注意创建完成后不要关闭

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 注意,这个IP地址必须与西门子虚拟网卡的IP地址及虚拟机的网卡IP地址同一网段

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

2、打开博途V15,创建项目,命名为Lan项目

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

3、添加1500系列CPU1513

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

4、设置设置IP地址及属性

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 5、添加通信模块MB_SERVER

找到程序块main,找到右边的指令,找到通信,找到其它,拖到MB_SERVER到程序段1中

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 重点看mb_hold_reg和connect参数,disconnet为false表示被动连接,意思是说服务器等待客户机来连接,而不是服务器主动连接客户机,也就是说要客户机主动来连接服务器,到时候客户机通过IP地址和端口来连接服务器,所以连接服务器肯定要通过CONNECT这个引脚,连接成功后客户机需要数据,就需要MB_HOLD_REG引脚来回复数据。

现在这里是???,先别管,保存项目,继续下面的,因为还没有设置好其他

6、添加一个全局数据块DB2,创建一个数据类型为TCON_IP_v4的变量,用于匹配CONNECT

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

图中各引脚定义:

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信  其中id和localport可以自己定,但那个interfaceid是64,这个不能随便改,因为读取设备有个ID号,这个参数是隐含的,也要确保与设备保持一致,如图

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 至于那个remoteport是表示哪些外部的IP可以连接本服务器,默认情况下是全部的IP,一般不要修改,除非有特别要求,所以这里保持默认,即允许任何IP地址连接本服务器,至于ID可以理解为进程ID,范围是1-4095,不能为0,每个连接ID必须独立,本案例为1(修改起始值为1);

DB2编译一下,成功

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

7,添加一个全局数据块DB3,用于匹配功能块“MB_SERVER”的管脚参数“MB_HOLD_REG”

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 添加若干个变量,这里是8个,你可以根据实际情况

     C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 设置块属性

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 编译成功,可以看到变量的偏移量

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 8,设置MB_HOLD_REG引脚参数

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 MB_HOLD_REG就是保持寄存器的意思,在Modbus协议中就是03功能码

双击引脚,填写“P#DB3.DBX0.0 BYTE 20”,这里我重点讲下这个引脚是怎么配置,P表示指针的意思,DB3是因为上面第10步中,我添加的数据块名称是DB3,你要根据自己添加的数据块实际名称来改,然后0.0 BYTE 20表示从0到20个字节,为什么是20了,看下面图

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

word是一个字,占一个寄存器,占2个字节,real是两个字,占2个寄存器,占4个字节,因此第一个变量m1-speed的地址是0,1,8个变量的占的字节分别是:

m1-speed:0,1
m1-duaror:2,3
m1-level:4,5
m1-temp:6,7,8,9
m2-speed:10,11
m2-duaror:12,13
m2-level:14,15
m2-temp:16,17,18,19

从0到19共20个字节,字节就是用BYTE表示的啊,要明白这个意思,所以是0.0 BYTE 20,这里不能乱写,写错了就读不到变量的值,这里很多人容易搞错,要根据你的变量的字节范围来写,只能少,不能多,比如0.0 BYTE 22,就不对,因为没有22个字节,只有20个字节,不过,可以是0.0 BYTE 16,这就表示只读取前面7个变量,第8个变量不读取,除非你是这样的要求,当然后面可以添加很多个变量,

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 如上又添加了2个变量,字节范围24个字节(0---23),但是我的指针是P#DB3.DBX0.0 BYTE 20,就只会读取前面20个字节,即前面8个变量的值,后面的9,10变量不会读取,特别要理解这个地方,很多文章没有讲清楚,搞得一套糊涂,很多人也没有搞明白这里到底要怎么写。引脚MB_HOLD_REG的含义就是指向哪个数据块的哪个范围的字节来响应外部程序或设备的MODBUSTCP请求,这个字节范围只是少于等于,不能大于数据块的范围。

9,设置CONNECT引脚参数

这个引脚的含义就是指用哪个数据块来响应外部连接本服务器,因为MODBUSTCP连接时,需要指定服务器的IP地址及端口,如图

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 这个"tcp_connector".Connector,不就是指DB2数据块中的变量Connector吗?

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 前面第6步创建数据块2,创建变量Connector,就是起这个作用的,各位大佬,各位长佬,明白了不?

 10、编译main程序块,成功

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 11,下载程序到PLC

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

 12、针对DB3进行监控变量

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信

13、小结

 到此,PLC搭建成MODBUSTCP服务器完成,后面写C#程序,基本过程是:创建Plc,创建项目,设置设备IP地址,添加mb_server模块,添加2个数据块,数据块中添加变量,设置引脚参数,编译下载程序到PLC。

下载成功后,就意味着modbustcp服务器已经启动了,已经准备好等待客户机连接,读取保存寄存器的数据值了,不需要额外什么操作。

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器,C#上位机开发笔记,MODBUSTCP,PLC,西门子,TCP,通信文章来源地址https://www.toymoban.com/news/detail-667996.html

到了这里,关于C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C#通过ModbusTcp协议读写西门子PLC中的浮点数

    MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。 Modbus

    2024年02月09日
    浏览(56)
  • 编写C#程序实现和西门子1500PLC进行Modbus Tcp通讯仿真

    前言 本文章的主题是介绍Modbus Tcp通讯仿真,其中C#编写的程序充当客户端(Client),西门子1500PLC充当的服务器端(Server),有关Modbus Tcp协议的具体内容在此也不再赘述,大家可以自行阅读官方文档。 注:在实现其基本功能的条件下,本文的代码编写以及软件配置均简化。

    2024年02月11日
    浏览(44)
  • 西门子PLC1500大型程序fanuc机器人焊装 包括1台 西门子1500PLC程序

    西门子PLC1500大型程序fanuc机器人焊装 包括1台 西门子1500PLC程序,2台触摸屏TP1500程序  9个智能远程终端ET200SP Profinet连接  15个Festo智能模块Profinet通讯  10台Fanuc发那科机器人Profinet通讯  3台G120变频器Profinet通讯  2台智能电能管理仪表PAC3200  4个GRAPH顺控程序  图尔克RFID总线模

    2024年01月18日
    浏览(38)
  • 西门子大型程序fanuc机器人焊装 包括1台 西门子1500PLC程序,2台触摸屏TP1500程序

    西门子大型程序fanuc机器人焊装  包括1台 西门子1500PLC程序,2台触摸屏TP1500程序,9个智能远程终端ET200SP Profinet连接 15个Festo智能模块Profinet通讯 10台Fanuc发那科机器人Profinet通讯 3台G120变频器Profinet通讯 2台智能电能管理仪表PAC3200 4个GRAPH顺控程序 图尔克RFID总线模组通讯 和ME

    2024年02月02日
    浏览(33)
  • 西门子PLC S7-1500系列CPU与西门子PLC S7-300系列的通讯模块CP343-1进行TCP通讯的方法

    西门子PLC S7-1500系列是西门子新一代PLC产品,它通过多方面的创新,为用户提供了更高性价比的产品,提高了用户的工程实施效率。西门子PLC S7-1500为用户在自动化控制系统中提供了更高的运行能力,而且简单易用,节省了大量的系统开发时间,西门子PLC S7-1500系列有很强的通

    2023年04月08日
    浏览(79)
  • 使用IOT-Tree Server连接西门子PLC S7-300/1200/1500

    IOT-Tree Server是个开源物联网软件,可以作为组态软件成为自动化系统的上位软件。她提供了接入、数据组织管理、控制逻辑和人机交互多个方面的功能。从版本0.99开始,IOT-Tree Server新增了西门子以太网驱动,能够通过以太网的方式直接访问S7-300/1200/1500. S7-200 smart好像也支持

    2024年02月03日
    浏览(40)
  • 西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)

    第一部分:组态配置 具体步骤可参考以下内容 : 如下图所示,新建一个项目后,添加一个安全型PLC,这里以1516F-3 PN/DP为例进行说明, 如下图所示,添加CPU完成后,可以看到左侧的项目树中比普通的PLC多了几个选项和模块, 如下图所示,我们选中该CPU后进入属性画面,在“

    2024年02月06日
    浏览(61)
  • 使用浏览器访问西门子S7-1200PLC_Web服务器设置

    平常都是用触摸屏或者上位机监控在线查看PLC的数据,在西门子S7-1200中,可以使用博途配置web服务器,通过浏览器进行登录,访问PLC的运行状态及需要监控的数据信息。 打开博途,新建一个项目,选择一个常用的PLC型号,进入编程界面,上述步骤不再赘述;右击mian,点击属

    2024年02月16日
    浏览(78)
  • C#和西门子PLC使用Udp通信

    目录 一、PLC程序工程创建 1、硬件配置 2、程序编程 3、添加监控表 二、C#程序工程创建 1、界面UI 2、代码编写 (1)创建本地Udp (2)读PLC的线程函数 (3)定时器 (4)上位机写寄存器操作 (5)StringToByte()方法封装 (6)窗口关闭 3、C#和PLC测试 (1)C#上位机写操作1 (2)C#上位

    2024年02月04日
    浏览(33)
  • C#上位机与西门子PLC数据交互

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

    2024年02月13日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包