VM5.0全局通信西门子S7操作
全局通信是VisionMaster软件一个重要的组成部分,它能够与工业PLC进行连接并通信。我们可以通过VM发送模块、接收模块与PLC进行交互。本文将着重介绍VM与西门子S7系列PLC交互的过程。

西门子S7系列PLC介绍

德国西门子(SIEMENS)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金、化工、印刷生产线等领域都有应用。西门子(SIEMENS)公司的PLC产品包括S7-200、S7-1200、S7-300、S7-400、S7-1500等。 西门子S7系列PLC体积小、速度快、标准化,具有网络通信能力,功能更强,可靠性高。S7系列PLC产品可分为微型PLC(如S7-200),小规模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。

VisionMaster的全局通信模块中支持与西门子PLC的交互,包括S200、S200SMART、S300、S400、S1200、S1500型号。本文将从创建,设置,连接,交互等多方面介绍使用方法。

与西门子PLC的连接

新建西门子PLC通信模块

1.png

如图所示,通过三个步骤,可以成功创建西门子S7模块;需要注意的是下面的西门子S7Smart是为了兼容VM老版本的方案,实际可以使用,但是S7模块中的型号选择选项中也能选择该版本的西门子S7型号。

西门子PLC通信模块的通信参数设置

2.png3.png

如图所示,VM提供了很多PLC的通信参数选项,本文将一一介绍。

  • 通信方式
    西门子PLC只支持Tcp的方式连接
  • 目标IP/端口
    用于设置目标PLC的IP地址和端口号
  • 型号选择
    在VM中,可供选择的型号包括S200、S200SMART、S300、S400、S1200、S1500
  • 机架号/槽号
    西门子PLC的参数
  • 轮询间隔
    轮询功能开启时,每次轮询之间的时间间隔。
  • 自动重连
    如果VM和PLC出现断开连接的问题,将自动重连。
  • 数据转换/字节顺序/字符串反转/字符串结束符
    数据的特殊处理,将在后文讲解
  • 自动关联
    轮询的功能,一般开启
  • 多地址发送
    西门子S7部分型号PLC支持的功能,能在多地址发送时批量发送,提高发送的效率。

与西门子PLC进行交互

首先开启VM与西门子的连接按钮,此时已经成功与PLC进行连接。

4.png

接着点击红框所在表格的任意一个,新建一个交互地址,左侧为地址参数,根据用户不同的需求进行设置。

5.png

  • 软原件类型
    VM支持I、Q、M、DB四种寄存器类型。用户可以根据自己的需求,指定寄存器类型。
  • 块号
    M不支持该选项,其他三种寄存器都支持该选项。块号对应西门子PLC设置的块号,从1开始计数。默认设置为0是为了适配不支持块号的M寄存器,实际使用其他三种寄存器时,需要用户手动设置。
  • 数据类型
    数据类型包括16bit[-32768,32767]、32bit[-2147483648,2147483647]、bool、float、string。分别表示两字节整数、四字节整数、bool、浮点数和字符串类型。
  • 软元件地址
    比如选1,对应VM表格的第一个格子,与PLC设置的相对应。
  • 位地址
    只有在数据类型被设置为bool的时候才能被设置,可以从0设置到7,即一个字节的七位。
  • 软元件点数
    即设置的寄存器长度,用户需要根据PLC实际需求以及发送数据需要长度自行设定。举个例子,如果数据类型设置为16bit(2字节),则长度至少为2个寄存器(2*1=2个字节)。如果设置的寄存器长度不够,则在发送数据时报错。
  • 超时时间
    发送报文和接收报文之间的超时时间,超过则报错。
  • 关联地址、轮询读取
    轮询功能使用
  • 数据上传
    关闭后接收到数据不在上传给界面但会传递到接收事件去处理。

与西门子PLC的发送接收

根据上文介绍,笔者设置了一个四个寄存器大小的地址,数据类型为32bit。根据如图所示的三步操作,可以成功将一个四位的int值发送至PLC。
6.png

为了验证是否发送成功,可以点击数据同步(接收),去检验PLC发送过来的数据是否为 2,147,483,647.

7.png

如上图所示,接收到的数据为:“FF FF 7F FF”,而 2,147,483,647的十六进制为"7F FF FF FF",这是什么原因呢,如上图所示,字节顺序为CDAB,所以输出为显示的值。如果打开数据转换使能,则显示的值如图所示:

8.png

【重要】如果发送string呢?
论坛里见过这样的帖子:VM4.3/4.4的西门子S7系列发送string失败,需要额外发送两个字节的数据才能正常。
造成这个问题的根本原因是:

  1. 写string类型的时候,真实数据前多2个字节数据,第一个字节是PLC配置的这个字符串的长度X,第二个字节是此次发送的字符串的真实长度
  2. 读String的时候,协议返回的前2个字节是定义长度和真实数据长度,并且他包含在请求的长度中

正是这个原因,导致了S7发送字符串失败。而VM5.0解决了这个问题,在发送X个字节的string数据时,VM将在string前面多发送两个字节,即第一个字节是PLC配置的这个字符串的长度X,第二个字节是此次发送的字符串的真实长度。当接收数据时,为了排除前两个无用数据的影响,将接收从第二个数据开始的数据。情况如图所示:

9.png

其实发送ABCD,实际上发送的是六个字节:06 04 41 42 43 44

10.png

接收数据接收的其实是41 42 43 44 00 00【两个00为后面两个地址数据】

需要注意的是,需要的软元件点数要比实际要发送的数据多两个字节:如图发送ABCD,实际需要创建6个软元件点数。

12.png

如上图所示,如果在六个软元件点数的地址中,发送五个字节ABCDE,将发送失败。

另外,如果设置字符串反转使能为开启,则发送数据的字符数据,按每两位进行反转,如下图所示:
11.png

字符串结束符使能开启时,将在字符串后加一个’\0’,需要注意的是,这个也占一个字节,所以设置软元件点数需要考虑到这个字节。

VM模块与西门子S7的交互

接收数据

如图所示,在接收数据模块中选定PLC、地址,点击执行即可获取数据。

13.png

发送数据

14.png

如上图所示,绑定好PLC、地址和数据源(图中使用的是全局变量)

15.png
用接收数据模块确认一下

协议解析

16.png
17.png

用文本解析举例,设置分隔符为;可以把数据分成两部分。

脚本接收

18.png

简单地用脚本接收一下协议解析的结果,验证一下可行性。

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

3DLPSDK如何获取网络丢包数等信息

下一篇
已经是最后一篇啦~
评论请先登录 登录
全部评论 0
Lv.0
0
关注
0
粉丝
0
创作
0
获赞
相关阅读
  • 一文带你入门RCS4.X-(4.2.8单独档)【任务编排】(四)
    2025-06-23 浏览 0
  • 秒懂VisionMaster!「VM助手」上线,有问必答的AI导师来了!
    2025-06-26 浏览 0
  • AMR助手,你的技术外挂,上线啦!
    2025-07-03 浏览 0
  • HCT整理的笔记
    2025-07-10 浏览 0
  • 魔都车展,海康机器人携最新“眼”技报道!
    2025-07-04 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器