德国西门子(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型号。本文将从创建,设置,连接,交互等多方面介绍使用方法。
如图所示,通过三个步骤,可以成功创建西门子S7模块;需要注意的是下面的西门子S7Smart是为了兼容VM老版本的方案,实际可以使用,但是S7模块中的型号选择选项中也能选择该版本的西门子S7型号。
如图所示,VM提供了很多PLC的通信参数选项,本文将一一介绍。
首先开启VM与西门子的连接按钮,此时已经成功与PLC进行连接。
接着点击红框所在表格的任意一个,新建一个交互地址,左侧为地址参数,根据用户不同的需求进行设置。
根据上文介绍,笔者设置了一个四个寄存器大小的地址,数据类型为32bit。根据如图所示的三步操作,可以成功将一个四位的int值发送至PLC。
为了验证是否发送成功,可以点击数据同步(接收),去检验PLC发送过来的数据是否为 2,147,483,647.
如上图所示,接收到的数据为:“FF FF 7F FF”,而 2,147,483,647的十六进制为"7F FF FF FF",这是什么原因呢,如上图所示,字节顺序为CDAB,所以输出为显示的值。如果打开数据转换使能,则显示的值如图所示:
【重要】如果发送string呢?
论坛里见过这样的帖子:VM4.3/4.4的西门子S7系列发送string失败,需要额外发送两个字节的数据才能正常。
造成这个问题的根本原因是:
正是这个原因,导致了S7发送字符串失败。而VM5.0解决了这个问题,在发送X个字节的string数据时,VM将在string前面多发送两个字节,即第一个字节是PLC配置的这个字符串的长度X,第二个字节是此次发送的字符串的真实长度。当接收数据时,为了排除前两个无用数据的影响,将接收从第二个数据开始的数据。情况如图所示:
其实发送ABCD,实际上发送的是六个字节:06 04 41 42 43 44
接收数据接收的其实是41 42 43 44 00 00【两个00为后面两个地址数据】
需要注意的是,需要的软元件点数要比实际要发送的数据多两个字节:如图发送ABCD,实际需要创建6个软元件点数。
如上图所示,如果在六个软元件点数的地址中,发送五个字节ABCDE,将发送失败。
另外,如果设置字符串反转使能为开启,则发送数据的字符数据,按每两位进行反转,如下图所示:
字符串结束符使能开启时,将在字符串后加一个’\0’,需要注意的是,这个也占一个字节,所以设置软元件点数需要考虑到这个字节。
如图所示,在接收数据模块中选定PLC、地址,点击执行即可获取数据。
如上图所示,绑定好PLC、地址和数据源(图中使用的是全局变量)
用接收数据模块确认一下
用文本解析举例,设置分隔符为;可以把数据分成两部分。
简单地用脚本接收一下协议解析的结果,验证一下可行性。