文档库 最新最全的文档下载
当前位置:文档库 › 西门子PLC 自由口通讯

西门子PLC 自由口通讯

西门子PLC 自由口通讯
西门子PLC 自由口通讯

1.自由口通讯基本概念

1.1 自由口通信概述

1.2 自由口通信要点

1.3 发送和接收指令

2.自由口通信使用指南

2.1 通讯口初始化

2.2 发送数据:

2.3 接收数据

2.4 自由口通信例程

1.自由口通讯基本概念

1.1 自由口通信概述

S7-200PLC的通讯口支持RS485接口标准。采用正负两根信号线作为传输线路。

工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。

数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。

传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。

字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。

字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。字符传输时间取决于波特率。数据发送可以是连续的也可以是断续的。所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。

示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端

口管脚3/8之间的电压,波形如下图1.:

图1.两个字符(16#55和16#EE)的波形图

示例说明:

16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。如图所示,当数据线上没有字符发送时总线处于空闲状态(高电平),当PLC发送第一个字符16#55时,

先发送该字符帧的起始位(低电平),再发送它的8个数据位,依次从数据位的最低位开始发送(分别为1、0、1、0、1、0、1、0),接着发送校验位(高电平或低电平或无)和停止位(高电平)。因为本例

中PLC连续的发送两个字符,所以第一个字符帧的停止位结束后便立即发送下一个字符帧的起始位,之

间数据线没有空闲状态。假如PLC断续的发送这两个字符,那么当PLC发送完第一个字符帧的停止位后,数据线将维持一段时间空闲状态,再发送下一个字符帧。

字符传输的时间取决于波特率,如果设置波特率为9.6k,那么传输一个字符帧中的一位用时等于

1/9600*1000000=104us,如果这个字符帧有11位,那么这个字符帧的传输时间等于

11/9600*1000=1.145ms.

自由口通信协议是什么?

顾名思义,没有什么标准的自由口协议。用户可以自己规定协议。

已知一个通信对象需要字符(字节)传送格式有两个停止位,S7-200是否支持?

字符格式是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持上述格式。

S7-200是否支持《S7-200系统手册》上列明的通信波特率以外的其他特殊通信速率?

通信速率是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持没有列明在手册上的通信速率。1.2 自由口通信要点

应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。用户程

序通过特殊存储器SMB30(对端口0)、SMB130(对端口1)控制通信口的工作模式。

CPU通信口工作在自由口模式时,通信口就不支持其他通信协议(比如PPI),此通信口不能再与编程

软件Micro/WIN通信。CPU停止时,自由口不能工作,Micro/WIN就可以与CPU通信。

通信口的工作模式,是可以在运行过程中由用户程序重复定义的。

如果调试时需要在自由口模式与PPI模式之间切换,可以使用SM0.7的状态决定通信口的模式;而

SM0.7的状态反映的是CPU运行状态开关的位置(在RUN时SM0.7="1",在STOP时SM0.7="0")自由口通信的核心指令是发送(XMT)和接收(RCV)指令。在自由口通信常用的中断有"接收指令结束中断"、"发送指令结束中断",以及通信端口缓冲区接收中断。与网络读写指令(NetR/NetW)类似,用户程序不能直接控制通信芯片而必须通过操作系统。用户程序使用通信数据缓冲区和特殊存储器与操作系统交换相关的信息。 XMT和RCV指令的数据缓冲区类似,起始字节为需要发送的或接收的字符个数,随后是数据字节本身。如果接收的消息中包括了起始或结束字符,则它们也算数据字节。调用XMT和RCV指令时只需要指定通信口和数据缓冲区的起始字节地址。

XMT和RCV指令与NetW/NetR指令不同的是,它们与网络上通信对象的"地址"无关,而仅对本地的通信端口操作。如果网络上有多个设备,消息中必然包含地址信息;这些包含地址信息的消息才是XMT和RCV指令的处理对象。

由于S7-200的通信端口是半双工RS-485芯片,XMT指令和RCV指令不能同时有效。

1.3 发送和接收指令

XMT(发送)指令的使用比较简单。RCV(接收)指令所需要的控制稍多一些。

RCV指令的基本工作过程为:

● 1.在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态

● 2.监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态

● 3.如果满足了设置的消息结束条件,则结束消息,然后退出接收状态

所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。

所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。

在《S7-200系统手册》中关于XMT和RCV指令的使用有一个例子。这个例子非常经典,强烈建议学习自由口通信时先做通这个例子。

S7-200 CPU提供了通信口字符接收中断功能,通信口接收到字符时会产生一个中断,接收到的字符暂存在特殊存储器SMB2中。通信口Port0和Port1共用SMB2,但两个口的字符接收中断号不同。每接收到一个字符,就会产生一次中断。对于连续发送消息,需要在中断服务程序中将单个的字符排列到用户规定的消息保存区域中。实现这个功能可能使用间接寻址比较好。

对于高通信速率来说,字符中断接受方式需要中断程序的执行速度足够快。

一般情况下,使用结束字符作为RCV指令的结束条件比较可靠。如果通信对象的消息帧中以一个不定的字符(字节)结束(如校验码等),就应当规定消息或字符超时作为结束RCV指令的条件。但是往往通信对象未必具有严格的协议规定、工作也未必可靠,这就可能造成RCV指令不能正常结束。这种情况下可以使用字符接收中断功能。

2.自由口通信使用指南

2.1 通讯口初始化

SMB30(对于端口0)和SMB130(对于端口1)被用于选择波特率和校验类型。SMB30和SMB130可读可写。见表1.

表1.特殊存储器字节SMB30/SMB130

示例:定义端口0为自由口模式,9600波特率,8位数据位,偶校验,程序如下图2.:

图2.通讯口初始化程序

2.2 发送数据:

发送指令XMT能够发送一个字节或多个字节的缓冲区,最多为255个。使用边沿触发。

发送缓冲区格式:第一个字节为字符个数,其后为发送的信息字符。

示例:如果PLC连续发送2个字符16#55和16#EE,程序如下图3.:

图3.发送指令程序

示例说明:PLC通过数据块写入数据。XMT指令中TBL缓冲区首地址VB200写入发送字符的个数,

VB201和VB202分别写入发送字符。通讯口波形图如图1.

判断发送完成的方法

方法一:发送完成中断。通过连接中断服务程序到发送结束事件上,在发送完缓冲区中的最后一个字符时,则会产生一个中断。对通讯口0为中断事件9,对通讯口1为中断事件26。连接中断程序到中断事件示

例如下图4.:

图4.建立发送完成中断的程序

方法二:发送空闲位。当port0发送空闲时,SM4.5=1。当port1发送空闲时,SM4.6=1.

示例:如果PLC断续的发送2个字符16#55和16#EE.

方法一:利用发送完成中断,在主程序中建立中断事件,执行XMT发送16#55,发送完成后,进入发送完

成中断程序中,执行XMT发送16#EE。波形图如图5.

图5.字符波形图

方法二:利用发送空闲位。当执行XMT发送完16#55后,利用SM4.5/4.6的上升沿(确保发送的字符帧

发送完成),往XMT的TBL缓冲区写入新字符16#EE,并再次触发发送。波形图如图6.

图6.字符波形图

两种方法均断续发送字符,即两个字符之间有空闲状态。注意:由于SM4.5/4.6的使用受程序扫描周期的影响,编程中推荐使用发送完成中断。

Break断点

Break状态:持续以当前波特率传输16位数据,且一直维持"0"状态。

产生方式:把字符数设置为0并执行XMT指令,可以产生一个Break状态。

Break用途:可以作为接收的起始条件。

示例:通过XMT指令发送一个Break断点。偶校验,8个数据位,9.6K。程序如下图7.:

图7.发送一个断点的程序

Break状态的波形图如下图8.

图8.一个断点波形图

如果通过接收方为上位机或者S7-200PLC,那么它们接收到的字符为16#00.

那么通过发送一个Break断点接收到的16#00与发送一个字符帧16#00有什么不同呢?Break状态是传输16位数据一直为0。而发送一个字符16#00(帧格式为1个起始位,8个数据位,偶校验和停止位)则传输11位该字符帧。如下图9.

图9.一个断点和字符0的波形图

2.3 接收数据

接收指令RCV能够接收一个字节或多个字节的缓冲区,最多为255个。使用边沿触发或第一个扫描周期触发。

接收缓冲区格式:第一个字节表示接收的字符个数,其后为接收的信息字符。

RCV使能会将TBL缓冲区中的字符个数清零。

示例:如果发送方给PLC发送2个字符16#55和16#EE,PLC的接收程序如下图10.:

图10.接收指令程序

示例说明:RCV指令TBL缓冲区的首地址VB200保存的是接收字符个数,其后是信息字符。

判断接收完成的方法:

方法一:接收完成中断。通过连接中断服务程序到接收信息完成事件上,在接收完缓冲区中的最后一个字符时,则会产生一个中断。对端口0为中断事件23,对端口1为中断事件24。连接中断程序到中断事件示例如下图11.:

图11.建立接收完成中断的程序

方法二:接收状态字节。SMB86(port0),SMB186(port1)。

当接收状态字节为0,表示接收正在进行。

当接收状态字节不为0,表示接收指令未被激活或者已经被中止。见下表2.

表2.接收状态字节SMB86(port0)/SMB186(port1)

接收指令起始和结束条件

接收指令使用接收信息控制字节(SMB87或SMB187)中的位来定义信息起始和结束条件。必须为接收信息功能操作定义一个起始条件和一个结束条件(最大字符数)。如下图12.

图12.接收控制字节SMB87(port0)/SMB187(port1)

接收指令起始条件

接收指令支持几种起始条件:

1.空闲线检测

定义:在传输线上一段安静或空闲的时间。

当接收指令执行时,接收信息对空闲线时间进行检测。在空闲线时间到之前接收的字符,被忽略且按照SMW90/190给定的时间重新启动空闲线定时器。在空闲线时间到之后,接收的字符存入信息缓冲区。空闲时间的典型值为在指定波特率下传输3个字符的时间。

示例:PLC接收的起始条件定义为空闲线检测(设置SMB87中的il=1,sc=0,bk=0,空闲线超时时间SMW90=10ms);接收的结束条件定义为最大字符个数SMB94=10。程序如下图13.

图13.空闲线检测程序

示例说明:

(紫色部分:)当启动接收指令后,PLC对空闲线时间进行检测,如果在SMW90中设定的空闲线时间

到之前,已经接收到了字符1,则字符1被忽略,并且按照SMW90中设定的时间重新启动空闲定时器。(橙色部分:)同样的,如果在SMW90中设定的空闲线时间到之前,已经接收到了字符2,则字符2也

被忽略且空闲线定时器重新启动。

(绿色部分:)如果在SMW90中设定的空闲线时间到之后,接收到字符3,则字符3作为第一个信息字

符存入接收缓冲区。见下图14.

图14.用空闲时间检测来启动接收指令

2.起始字符检测

当接收到SMB88/188指定起始字符后,接收信息功能将起始字符作为信息的第一个字符存入接收缓冲区。起始字符之前的字符被忽略,起始字符和其后的所有字符存入接收缓冲区。

示例:PLC接收的起始条件定义为起始字符检测(设置SMB87中的il=0,sc=1,bk=0,起始字符

SMB88=16#55);接收的结束条件定义为最大字符个数SMB94=4。程序如下图15.

图15.起始字符检测程序

示例说明:PLC接收总线上传来的一串字符,16#01、16#02、16#03、16#55、16#AA、16#BB、

16#CC,当PLC检测到起始字符16#55后,开始接收并将16#55作为第一个信息字符存入接收缓冲区,起始字符之前的3个字符被忽略。如下图16.

图16.用起始字符检测来启动接收指令

3.空闲线和起始字符

接收指令执行时,先检测空闲线条件,在空闲线条件满足后,检测起始字符。如果接收的字符不是起始字符,则重新检测空闲线条件。

在空闲线条件满足和接收到起始字符之前接收的字符被忽略。起始字符和字符串一起存入缓冲区。

适用于通讯连接线上有多个设备的情况。

示例:PLC接收的起始条件定义为空闲线和起始字符(设置SMB87中的il=1,sc=1,bk=0,空闲线检测时间SMW90=10ms,起始字符SMB88=16#55),结束条件为最大字符个数2.

示例说明:PLC接收总线上传来的数据,分几种情况:

当空闲线条件不满足,即使空闲后出现起始字符,PLC也不开始接收。如图17.

图17.

当PLC先检测到起始字符,再检测到空闲线条件满足,PLC不启动接收。或者当PLC检测到空闲线条件满足后,接收到除起始字符之外的任意字符,PLC也不启动接收。如图18.

图18.

只有当PLC检测空闲线条件满足后,接收到起始字符,PLC才启动接收,在空闲线条件满足和接收到起始字符之前接收的字符被忽略。起始字符和字符串一起存入缓冲区,缓冲区首地址VB200。如图19.

图19.用空闲线和起始字符来启动接收指令

4.断点检测

大于一个完整字符传输时间的一段时间内,接收数据一直为0.

在断点之前接收的字符被忽略,在断点之后接收的字符存入信息缓冲区。

示例:PLC接收的起始条件定义为断点检测(设置SMB87中的il=0,sc=0,bk=1),结束条件为最大字符个数8。

示例说明:PLC接收总线上传来的一串字符和断点,依次为16#0016#00(连续的两个字符间没有空闲)、16#0016#00(断续的两个字符间有空闲)、第一个Break断点、16#55、第二个Break断点、16#EE。当PLC检测到第一个断点状态后,启动接收,接收的字符存入信息缓冲区(第二个断点),第一个断点之前的字符被忽略。接收缓冲区起始地址为VB200。如下图20.

图20.用断点检测来启动接收指令

5.断点和起始字符

在断点条件满足后,检测起始字符。

在断点条件满足后,如果收到除起始字符外的任意字符,重新检测新的断点。

在满足断点和起始字符之前接收的字符将被忽略,起始字符和字符串一起存入信息缓冲区。

示例:PLC接收的起始条件定义为断点和起始字符(设置il=0,sc=1,bk=1,起始字符SMB88=16#55)。结束条件为最大字符个数8.

示例说明:PLC接收总线上传来的一串字符和断点,依次为16#55、break、16#AA、16#55、break、16#55、16#EE、16#FF. 分几种情况理解:

当PLC先检测到起始字符再检测到断点,PLC不启动接收。(SC+BK)

当PLC检测到断点后,接收到除起始字符外的任意字符,PLC不启动接收。(BK+Char+SC)

只有当PLC检测到断电后,紧接着检测到起始字符,才启动接收并且将起始字符和字符串一同存入信息缓冲区,断点和起始字符之前接收的字符将被忽略。(BK+SC)如图21.

图21.用断点和起始字符检测来启动接收指令

6.任意字符。

任意字符接收是空闲线检测的特例。

设置方式:il=1,sc=0,bk=0,空闲线时间SMW90/190=0。

接收指令一执行,立即接收任意字符,并把所有接收字符存入信息缓冲区。

允许使用信息定时器监控接收是否超时。当接收指令执行时,信息定时器启动,如果没有其他终止条件满足,信息定时器超时会接收接收功能。

接收指令结束条件

接收指令支持以下一种或几种组合的结束条件:

1.结束字符检测

在起始条件之后,接收指令检查接收的所有字符,如果检测到结束字符,则将其存入缓冲区,结束接收。示例:PLC接收的结束条件定义为结束字符检测(设置SMB87中的ec=1,定义结束字符

SMB89=16#55),接收起始条件定义为起始字符检测(起始字符16#AA)。

示例说明:PLC接收总线上传来的一串字符,依次为16#AA、16#BB、16#CC、16#55、16#EE、

16#FF。当PLC检测到起始字符16#AA后,启动接收,当检测到结束字符16#55后,结束接收并将接收的所有字符存入信息缓冲区。如下图22.

图22.用结束字符检测来结束接收指令

2.字符间隔定时器

字符间隔时间定义:从一个字符的结尾(停止位)到下一个字符的结尾(停止位)之间的时间。

接收到字符后,字符间隔定时器重新启动。

两个字符之间的间隔时间超过SMW92/192则结束接收。

示例:PLC接收的结束条件定义为字符间隔定时器(设置SMB87中的c/m=0,tmr=1,信息超时时间SMW92),接收起始条件定义为起始字符检测。

示例说明:PLC接收总线上传来的一串字符,当PLC满足接收条件后启动接收,接收完一个字符的停止位后,重新启动字符间隔定时器,如果检测到下一个字符帧停止位时SMW92时间未到,则重新启动字符间隔定时器,如果当SMW92时间到时还未检测到下一个字符帧的停止位,则结束接收。如下图23.

图23.用字符间隔定时器来结束接收指令

3.信息定时器

当接收启动条件一满足,信息定时器就启动,当时间超过SMW92/192指定的时间,信息定时器时间到结束接收。

示例:PLC接收的结束条件定义为信息定时器(设置SMB87中的c/m=1,tmr=1,信息超时时间

SMW92),接收起始条件定义为起始字符检测。

示例说明:PLC接收总线上传来的一串字符,当PLC满足接收条件后启动接收,信息定时器启动,当SMW92时间到时,结束接收。如图24.

图24.用信息定时器来结束接收指令

4.最大字符计数

当接收字符个数达到或超过最大字符个数(SMB94/SMB194),接收功能结束。

由于接收指令需要知道接收信息的最大长度,以保证信息缓冲区之后的数据不被覆盖,所以即使不被用作接收结束条件,也必须指定最大字符个数。

如果没有指定最大字符个数,则SM86.6/186.6=1(输入参数错误或丢失启动或结束条件)

5.校验结束

当接收字符的同时出现硬件信号校验错误时,接收指令会自动结束。

只有在SMB30/130中使能校验位,才有可能出现校验错误。没有办法禁止此功能。

6.用户结束。

通过程序结束接收功能:将SM87.7或SM187.7置为0,且需边沿触发RCV接收指令。

以上内容是通过发送和接收指令实现S7-200PLC的自由口通讯。另外,S7-200PLC还提供了通讯口字符接收中断功能。见下文。

如何人为结束RCV接收状态?

接收指令控制字节(SMB87/SMB187)的en位可以用来允许/禁止接收状态。可以设置

SM87.7/SM187.7为"0",然后对此端口执行RCV指令,即可结束RCV指令。

字符中断

使用字符中断方式接收数据,接收每个字符时都会产生中断。在执行与接收字符事件相连的中断程序前,接收的字符存入SMB2寄存器中,校验状态存入SM3.0。 SMB2、SM3.0都是只读的。

Port0/Port1共用SMB2/SMB3。Port0对应于中断事件8。Port1对应于中断事件25。

SMB2使用条件:RCV指令不使能,通讯端口为自由口模式,且建立中断事件8/25。

字符中断使用方法:

以端口0接收字符为例:如图25.

图25.字符中断程序

当CPU通过端口0接收到一个字符后,会将该字符存入接收字符缓冲区SMB2,然后进入相连接的中断

程序中。

注意:对于这段程序,如果在中断程序中不作任何编程,那么当CPU接收n个字符时,中断程序将被执

行n次,SMB2寄存器存储接收到的最后一个字符。

如上位机通过串口调试软件给CPU发送3个字符16#AA、16#BB和16#CC,如下图26.

图26.通过串口调试软件发送字符

那么与接收字符事件相连的中断程序将被执行3次,SMB2中只能保存最后一个接收到的字符16#CC。

如下图27.

图27.状态表监控SMB2

用SMB接收多个字符,如何编程?

由于SMB2只能存储一个字符(一个字节),如果要想接受多个字符,则应当在CPU接收下一个字符之前,在中断程序中通过指针编程将SMB2中存储的字符移出来,以便下一次接收字符。以一个例程说明:如图28.

图28.接收多个字符的程序

VD0作为地址指针指向VB100,当端口0接收到第一个字符,将第一个字符存入SMB2,进入接收中断,将SMB2中的字符复制到指针VD0指向的地址字节VB100中,指针地址加1,VD0指向下一个字节

VB101。当接收第二

个字符,将字符存入SMB2,进入接收中断,将SMB2中的第二个字符复制到指针VD0指向的地址字节VB101中,指针地址加1,VD0指向下一个字节VB102。当接收第三个字符时以此类推。

另外,如果需要接收n个字符就结束接收,或者需要接收n个字符后循环接收,可以在中断程序中设置一个标志位,下面我们试举例说明:

例程1,接收到5个字符就结束接收的程序:如图29.

图29.程序

例程2,接收到5个字符后循环接收的程序:如图30.

图30.程序

注意,程序中的的指针不要选择累加器AC,因为累加器不能在主程序和中断程序中传递参数。

字符中断和RCV指令之间有什么关系?

简单地说,当RCV指令使能时,接收字符不进入SMB缓冲区。

分析实验如下:

在主程序中我们既定义PLC执行RCV接收指令的起始结束条件(起始条件为起始字符16#AA,结束条件为结束字符16#BB),又建立字符中断事件8,上升沿条件触发RCV指令。

上位机通过串口调试软件给CPU发送字符。如图31.。

图31.通过串口调试软件发送字符

程序如下图32.:

西门子PLC的以太网通讯及OPC通讯介绍

西門子PLC的以太網通訊及OPC通訊介紹 1.以太網通訊 CAL有很多地方用到以太網通訊,L2,焊機與PLC間通訊等,表檢的成像原理為:在金屬板帶表面沒有缺陷時,反射的光在明視場下很強,而在暗視場的散射光很弱;如有缺陷,則明視場的光強減弱,而暗視場的光強增加。根據這個原理,通過檢測攝像頭裡光強的變化,可檢測出材料表面上的一些物理缺陷。CAL 僅僅用到了它的檢測破孔這一個功能。 下面再來看西門子的以太網通訊,使用以太網通訊處理器可能的連接方式: 我們可以看到不同的通訊方式在PLC裏面需要調用不同的功能塊。 像S7-Connection方式連接的,需要調用SFB12/FB12等來讀取發送數據息,而TCP等連接的,需要FC5等來讀取發送數據。 下面簡單介紹下每種連接特點: Send/receive: iso 連接:ISO傳輸服務通過組態連接提供SEND/REVEICE interface服務在以太網上傳輸數據,此時服務使用的是ISO協議。此通訊速度較快,可是不能實現網絡路由,只能用於局域網通訊。 Send/receive: iso-On-TCP 連接:突破了局域網的限制,可以路由到公網上去;數據重發功能和基於第2層的CRC校驗保證了數據傳輸的完整性和可靠性。 Send/receive: TCP 連接:TCP/IP提供面向連接的數據通訊,數據並不會被打包因而並沒有數據包確認位,在這TCP服務提供了統一的sccket接口到每一個終

端,因而數據塊可以整體發送,這裡區別於iso-On-TCP 連接。 Send/receive: UDP連接:UDP提供簡單數據傳輸,無需確認,與TCP同屬第4層協議。與TCP相比,UDP屬於無連接的協議,數據報文無需確認。 S7通信:S7協議是西門子S7家族的標準通信協議,使用S7應用接口的通信不依賴特定的總線系統(Ethernet,PROFIBUS,MPI)。接口位於ISO-OSI參考模型的第7層,下面圖模型各層的通信方式。 那麼根據表檢的通訊協議規定: Transmission mode:TCP protocol (not S7), PLC will always be the client , Gauge will always be the server. Byte order: use PLC Byte Order ( not x86 byte order ). 我們建立通訊就需選擇send/receive中的TCP連接。 因此,在PLC中做如下配置: 1.打開硬件配置->點擊網絡組態:

西门子S7—200PLC自由口通讯的两种Delphi实现方法

西门子S7—200PLC自由口通讯的两种Delphi实现方法 【摘要】本文介绍了PC机与PLC实现自由口通信的两种方法。上位机采用的是PC机,利用Delphi6.0编写应用程序,详细对其中的两种方式做了详细说明。下位机采用西门子公司的S7-200PLC,文中列出了相应的程序说明。 【关键词】计算机通信;PLC;Delphi;自由口通信 1.引言 随着大规模和超大规模集成电路等微电子技术的迅猛发展,PLC作为一种新型高能的控制器已经越来越广泛地用于工业现场控制的各个领域,它有着高可靠性、低能耗、易操作、易安装等优点。但是,由于PLC的人机交互能力差,独立的PLC不能完成工业控制流程的实时和动态监控,PC机与PLC的通讯就愈加显得重要。通过PLC与PC机的通讯,使得个人计算机和其他智能控制设备交换数字信息,使系统形成一个统一的整体,方便实现分散控制和集中管理。 2.S7-200的通信与PC机的通信机理 S7-200 PLC的CPU支持多种通信协议,包括:点到点接口协议(PPI)、多点接口协议(MPI)、Profibus协议、自由通信接口协议和USS协议。自由通讯口模式是S7-200PLC一个很有特色的功能,用户可以通过用户程序对通信口进行操作并且自己定义通信协议。应用该通信方式,S7-200可以方便地和任何通信协议已知、具有串口的智能设备和控制器进行通信。 通过设定特殊存储字节SMB30(端口0)或SMB130(端口1)允许自由口模式,设置它的波特率、奇偶校验和数据位数。用发送指令(XMT)和接收指令(RCV)对数据进行通信操作。值得注意的一点是:只有在CPU处于RUN 模式时才允许自由口模式,当CPU处于STOP模式时自由口模式将自动转换为PPI协议模式。用反应CPU模块上的工作方式的特殊存储器位SM0.7来控制自由口通讯方式的进入,当SM0.7为1时CPU处于RUN模式,可将通信口置为自由口模式。 在PC机与PLC的通讯过程中,主要是由PC机发送信息来强制控制PLC 的状态,接收PLC发送过来的信息来显示控制状态。PLC发送信息通过检测SM4.5来每半分钟发送有关PLC状态的信息,以使PC机信息更新。 3.下位机(PLC)实现 对PLC的通信编程就是对串口进行设置。当CPU处于RUN模式时,进行自由口通信。 3.1 端口的初始化

S7_200PLC与PC自由口通讯的多种实现方法

S7-200PLC与PC自由口通讯的多种实现方法 1 引言 西门子S7-200PLC是德国西门子公司生产小型PLC。S7-200以其高可靠性、指令丰富、内置功能丰富、强劲通讯能力、较高性价比等特点,工业控制领域中被广泛应用。S7-200PLC突出特点之一是自由口通讯功能。如何实现 S7-200PLC与个人计算机互联通信,是S7-200PLC应用技术关键。 可编程控制器与计算机之间通讯一般是RS-422口或RS-232C口进行,信息交换方式为字符串方式,运用RS-232C或RS-422通道,容易配置一个与计算机进行通信系统,将所有软元件数据和状态用可编程控制器送入计算机,由计算机采集这些数据,进行分析及运行状态监测。用计算机改变可编程控制器设备初始值和设定值,实现计算机与可编程控制器直接控制,一旦确定了可编程控制器控制指令,就能很方便与计算机连接。 2 S7-200自由口通讯模式 S7-200支持多种通讯模式,如点点接口(PPI)、多点接口(MPI)、Rrofibus DP等。PPI等通讯协议主要用于西门子系列产品之间通讯以及对PLC编程。自由口模式下,可由用户控制串行通讯接口,实现用户自定义通讯协议。用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。自由口模式下,通信协议完全由梯形图程序控制。

S7-200CPU上通信口是与RS-485兼容9针D型连接器,PLC还提供了实现RS-485与PC机上RS-232C相连接PC/PPI电缆,利用它可以方便实现S7-200系列PLC与PC之间硬件连接。 S7-200编程软件为STEP7-Micro/WIN32,该软件有STL、FBD和Ladder三种编程模式,有SIMATIC指令和IEC131-3指令两种指令。本文所给出范例是使用SIMATIC指令STL编程。 3 S7-200 PLC端通讯程序实现 PLC程序分为主程序和中断程序。主程序完成初始化通信口、开中断、判断、发送数据等功能,中断程序完成接收和发送数据功能。接收指令(RCV)启动或终止接收信息功能,必须为接收操作指定开始和结束条件。发送指令(XMT)自由口模式下依靠通讯口发送数据。 3.1 控制字选取 反映CPU工作方式模式开关当前位置特殊存储器位为SM0.7,它控制自由端口模式进入。当SM0.7为0时,模式开关处于TREM位置;当SM0.7为1时模式开关处于RUN位置。而当模式开关位于RUN位置时,才允许进行自由口通讯。SMB30是自由口模式控制字节,用来设定校验方式、通讯协议、波特率等通讯参数(其它控制字设定参阅有关书籍)。 3.2 程序一些简单介绍 NETWORK1

西门子以太网通讯设置

西门子以太网通讯 一、功能: S7-200做客户机(主站), S7-300做服务器(服务器) 二、硬件配置: 1.CP243-1 2.CPU224 3.CPU314 4.CP343-1 三、设置步骤: 第一步打开S7-200编程软件MicroWIN,在工具栏中选择以太网向导

第二步读取CP243-1【以太网模块】。注意:PC与S7-200连接正常才能读取到 第三步选择以太网模块

第四步输入【 CP243-1 】的IP地址 192.168.0.50 注意 IP设置与S7-300侧要在同一个网段 第五步配置连接数【最多连接8路】以太网模块要占用地址,建议放在最后插槽连接数:根据实际的连接数配置

第六步 1.选择客户机连接【s7-200为客户机】 2.【03.02】----03:单边通信 02: S7-300CPU模块的插槽号 【10:00】 ----1:固定 0:连接号 00:s7-200CPU模块的位置 3. 输入CP343-1的IP地址【在S7-300的硬件组态中设置】 4. 单击“数据传输”,进入配置窗口。 注意:连接号一定要记住,在编程的时候会应用到

第七步 1.选择向服务器读取数据 2.选择读取数据的大小【最大212个字节】 3.数据的对应关系。【把S7-300“DB10.DBB0开始的10个字节”的数据读取到本地“VB0开始的10个字节”中】 4.配置完后点击【新转输】 注意:传输号要记住,在编程中要应用到

第八步 1. 选择向服务器写入数据 2. 选择写入数据的大小【最大212个字节】 3. 数据的对应关系。【把本地“VB10开始的10个字节”的数据写入到S7-300“DB10.DBB10开始的10个字节”中】 4.配置完后点击确认 注意:传输号要记住,在编程中要应用到

西门子自由口通讯

一、串口特性设置 SMB30: ppdb bbmm pp:奇偶校验选择,00=不校验,01=偶校验,10=不校验,11=奇校验; d:每个字符的数据位,0=8位/字符,1=7位/字符; bbb:自由口通讯波特率(bit/s) 000=38400,001=19200,010=9600,011=4800,100=2400,101=1200,110=115.2K,111=57.6K;mm:协议选择,00=PPI/从站模式,01=自由端口协议,10=PPI/主站模式,11=保留(默认设置为00=PPI/从站模式); 二、报文接收的状态字 SMB86:nre0 0tcp; n=1:通过用户禁止命令终止报文接收。 r=1:接收报文终止,输入参数错误或无起始或结束条件。 e=1:收到结束字符。 c=1:接收报文终止,超出最大字符数。 t=1:接收报文终止,超时。 p=1:接收报文终止,奇偶校验错误。 三、报文接收的控制字 SMB87:报文接收的控制字,en,sc,ec,il c/m,tmr,bk,0; en:0=禁止报文接收,1=允许报文接收,每次执行RCV指令时检查允许/禁止接收报文位。sc:0=忽略SMB188,1=使用SM1B188的值检查报文的开始。 ec:0=忽略SM189,1=使用SM189的值检查报文的结束。 il:0=忽略SMW190,1=使用SMW190的值检测空闲状态。 c/m:0=定时器是字符间超时定时器,1=定时器是报文定时器。 tmr:0=忽略SMW192,1=超过SMW192中设置的时间时终止接收。 bk:0=忽略break(间断)条件,1=用break条件来检测报文的开始。 报文接收控制字节位用来定义识别报文的标准,报文的起始和结束标准均需定义。 SMB88=报文的起始字符 SMB89=报文的结束字符 SMW90=以ms为单位的空闲线时间间隔。空闲线时间结束后接收到的第一个字符是最新报文的起始字符。 SMW92=字符间/报文间定时值(用ms表示),如果超时停止接收报文。 SMW94=接收最大字符数(1-255),即使不用字符数计算来终止报文,这个值也应按希望的最大缓冲区来设置 四、接收指令的参数设置 RCV指令允许选择报文开始和结束的条件,SMB86-SMB94用于端口0,SMB186-SMB194用于端口1。

如何实现S7200SMART自由口通讯

如何实现S7-200SMART自由口通讯 自由口通讯协议的关键条件 定义开始接收消息和停止接收消息的条件。 1、空闲线检测:设置il=1,sc=0,bk=0,smw90/smw190>0 空闲线条件定义为传输线路上的安静或者空闲的时间。SMW90/SMW190中是以ms为单位的空闲时间。在该方式下,从执行接收指令开始起动空闲时间检测。在传输线空闲的时间大于等于SMW90/SMW190中设定的时间之后接收的第一个字符作为新信息的起始字符。接收消息功能将会忽略在空闲时间到达之前接收到的任何字符,并会在每个字符后面重新启动空闲线定时器。 空闲线时间应大于以指定波特率传送一个字符所需要的时间。空闲线时间的典型为以指定的波特率传送3个字符所需要的时间。传输速率为19200bit/s时候,可设置空闲时间为2ms。对于二进制协议,没有特定起始字符的协议或指定了消息之间最小时间间隔的协议,可以将空闲线检测用作开始条件。 2、起始字符检测:设置il=0,sc=1,bk=0,忽略smw90/smw190 起始字符是消息的第一个字符,以SMB88/SMB188中的起始字符作为接收到的消息开始的标志。接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存储在消息缓冲区中。起始字符检测一般用于ASCII协议。 3、空闲线和起始字符:设置il=1,sc=1,bk=0,SMW90/SMW190大于0 满足空闲线条件之后,接收消息功能查找指定的起始字符。如果接收到的字符不是 smB88/smb188指定的起始字符,将开始重新检测空闲线条件。在满足空闲线条件之前接收到的以及起始字符之前接收到的字符都将会被忽略。这种方式尤其适合用于通讯链路上有多台设备的情况。 4 、break检测:设置il=0,sc=0,bk=1,检测smw90/smw190和smb88/smb188以接收到的break(断开)作为接收消息的开始。当接收到的数据保持为0的时间大于完整字符(包含起始位,数据位,奇偶校验位和停止位)传输的时间,表示检测到break。断开条件之前接收到的字符将忽略,断开条件之后接收到的任意字符都会存储在消息缓冲区中。 5、break和起始字符:il=0,sc=1,bk=1,忽略smw90/smw190 断开条件满足后,接收消息功能将查找指定的起始字符。如果接收到的字符不是起始字符,将重新搜索断开条件。所有在断开条件满足之前在接收到起始字符之前接收的字符都会忽略。起始字符和所有后续字符一起存入消息缓冲区 6、任何字符开始接受:设置il=1,sc=0,bk=0,smw90/smw190=0 忽略smb88/smb188中的起始字符。应为smw90/smw190中的空闲线时间为0,接收指令已经执行,便将立即开始强制接收所有的任意字符,并将存入消息缓冲区。 7、任意字符开始,消息定时器超过则结束接收消息:令il = 1,sc = 0,bk = 0,smw90/smw190 = 0,忽略smb88/smb188中的起始字符。以上设置用于实现从任意字符开始接收消息。 此外设置c/m = 1,tmr =1,用smw92/smw192设置以ms为单位的消息超时时间,用消息定时器监视接收是否超时。如果未满足其他结束条件,在消息定时器超时的时候,将会终止接收消息功能。这对自由口协议的主站是非常有用的。 1.SMB30定义 定义通讯的传输速度和模式 SMB30=16#05=2# 00 0 001 01

西门子S7-200自由口通信心得

西门子S7-200 PLC自由口通信学习摘要 本文以s7-200 PLC与智能电表通信为范例(电表波特率为1200bps,偶校验,8位数据位) 一、PLC自由口协议初始化 1、根据智能设备通信时使用的波特率、校验方式、起始位等参数配置PLC自由口,即将上述参数用MOVB指令写入SMB30,SMB30格式如下图所示: 初始化子程序如下:

二、声明中断 发送数据和接收完数据都能链接到中断程序,发送完中断与接收完中断的中断号分别为9和23,中断可在初始化子程序中声明

三、编写自由口要发送的报文子程序 严格按智能设备报文格式,将相应命令,将指令长度(字节)MOV到任意的字节单元,例如vb10。再用MOV_B或MOV_W等指令传送到vb11开始后连续的字节中。 报文子程序

上图为读取电表标识编码为9010(即正向有功总电能)的指令 四、用XMT指令发送报文 XMT指令需指定两个参数,第一个为要发送的报文的起始地址(本例为VB10),第二个为使用的通信口(本例为0口)。可以用定时器控制某一CPU内部触点来控制报文发送的周期。要注意的是,XMT指令必须用上升沿“—|P|—”触发,否则CPU将会报错,CPU将认为有多个XMT/RCV指令同时执行,这是不允许的! 发送报文子程序 五、利用发送完中断启动接收数据指令 当报文用XMT发送完毕,会产生9号中断。我们可以利用中断子程序捕捉相应的中断,并在中断程序中编写相应事件!在步骤1中已经声明了9号中断连接到中断子程序“发送完中断”。因为此我们在“发送完中断”中断子程序中使用RCV指令即可接收到由通信口返回的数据。即将数据送到VB100. “发送完中断”中断子程序

西门子S7-200 自由口通信实用文档

主题:应用探讨—S7-200 自由口通信—发帖整理 强大而灵活的自由口通信能力,是S7-200系统的一个重要特点。S7-200 CPU 的RS485通信口提供了建立在串行通信基础上的“自由”通信能力,数据传输协议完全由用户程序决定。通过自由口方式,S7-200可以与串行打印机、条码阅读器等通信。而S7-200的编程软件也提供了一些通信协议库,如USS协议库和MODBUS RTU从站协议库,它们实际上也使用了自由口通信功能。 开设本话题的目的,在于澄清自由口通信的基本概念,强调使用中的要点,讨论应用的常见问题。经过此次集中交流,解决了如下一些问题: 1. 自由口通信基本概念 2. 自由口通信编程指令的使用和技巧 3. 自由口通信常见问题 4. 产品功能建议 更多信息请参考下面文档。 “下载中心”参考文档: 文档编号“1109582”——S7-200《可编程控制器系统手册》 文档编号“A0136”——《西门子 S7-200?LOGO!?SITOP参考》 以下为本次探讨的发帖整理,查看原始交流内容请点击此处。 1.自由口通信基本概念(1楼——5楼) 2.自由口通信编程指令的使用和技巧(6楼——15楼) 3.自由口通信容易犯的错误(16楼——24楼) 4.产品功能建议(25楼——27楼)

quote: 以下是引用BABU在2011-01-20 15:17:08的发言: 我回来了,项目终于做完了,可以回家过年了,:)。 自由口通信真是折腾的我好惨啊,简单回顾一下,希望对像我这样的菜鸟有些借鉴作用。 先感谢一下西门子论坛和热线,没少骚扰他们。 在完全没有准备的情况下甲方又加进一个仪表,做什么自有口通信,晕阿!没办法,迎着上吧! 网上搜资料,看手册,越看越糊涂!时间紧迫,还是直接上手做吧。 首先是把PLC和仪表连接起来,可仪表的口是rs232的,热线工程师告诉我得做rs232/485的转换,打车到市场上买个转换器(打车钱比设备钱还多,可见现场多么偏僻阿),听卖转换器的老板给我分析了一下每种的区别——不光是价格的区别,说实在的,当时非常惭愧,老板懂的比我多多了。 买回来后自己动手焊线,一个人费了九牛二虎之力,焊的那个惨样就不用说了,还好有壳可以包装一下。 焊好了,实验一下效果吧,不知到怎么做了,打电话。 热线工程师告诉我找个串口调试工具,连接到pc机上测试。 在串口调试工具上发一串数,在200上收,ok!高兴坏了,没白忙活。 硬件上应该没问题了,接下来开始做程序了。 先得理解仪表的协议,弄清了仪表先要收到请求数据的命令,然后根据命令做出响应。 同样,先用串口调试工具和仪表连接进行通信测试,还算聪明吧,:)! 然后开始在200里编写收发程序,开始时整个思路都是乱的,无从下手。就把200手册上的例子程序整个抄上,在cpu224的两个接口间进行通信实验。 经过不停的实验,终于一点一点地理解了控制字节、控制参数的含义,怎么设置接收结束条件,怎么使用中断、怎么控制接收和发送等等。

西门子PLC自由通信协议

----在自由口模式下,通信协议是由用户定义的。用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。在自由口模式下,通信协议完全由梯形图程序控制。 指令格式定义 计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明: 起始字符 ----起始字符标志着指令的开始,在本例中被定义为ASCII码的“g”,不同的PLC从站可以定义不同的起始字符以接收真对该PLC的指令。 指令类型 ----该字节用来标志指令的类型,在本例中05H代表读操作,06H代表写操作。 目标西门子PLC站地址 ----目标PLC站地址占用指令的B2、B3两个字节,以十六进制ASCII码的格式表示目标西门子PLC的站地址。 目标寄存器地址 ----在西门子PLC内部可以用4个字节来表示一个寄存器的地址(但不能表示一个位地址)。前两个字节表示寄存器类型,后两个字节表示寄存器号。 读/写字节数M ----当读西门子plc的命令时,始终读回从目标寄存器开始的连续8个字节的数据(转换为十六进制ASCII码后占用16个字节),可以根据自己的需要取用,M可以任意写入。 ----当写命令时,M表示的是要写入数据的十六进制ASCII码所占用的字节数。例如要写入1个字节的数据,数据在指令中以十六进制ASCII码表示,它将

占用2个字节,此时应向M中写入“02”。同理,如果要写入5个字节的数据,M中应写入“0A”。 要写入的数据 ----要写入西门子plc的数据在指令中以十六进制ASCII码的格式表示,占用指令的 B14-B29共16个字节。数据区必须填满,但只有前M个字节的数据会被写入目标寄存器。一条指令最多可以写入8个字节的数据(此时M中应写入“10”,代表十进制的16) 艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有 10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。 如需进一步了解相关PLC产品的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城https://www.wendangku.net/doc/6f1899133.html,。

西门子PLC 自由口通讯

1.自由口通讯基本概念 1.1 自由口通信概述 1.2 自由口通信要点 1.3 发送和接收指令 2.自由口通信使用指南 2.1 通讯口初始化 2.2 发送数据: 2.3 接收数据 2.4 自由口通信例程 1.自由口通讯基本概念 1.1 自由口通信概述 S7-200PLC的通讯口支持RS485接口标准。采用正负两根信号线作为传输线路。 工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。 数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。 传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。 字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。 字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。字符传输时间取决于波特率。数据发送可以是连续的也可以是断续的。所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。 示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端

口管脚3/8之间的电压,波形如下图1.: 图1.两个字符(16#55和16#EE)的波形图 示例说明: 16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。如图所示,当数据线上没有字符发送时总线处于空闲状态(高电平),当PLC发送第一个字符16#55时, 先发送该字符帧的起始位(低电平),再发送它的8个数据位,依次从数据位的最低位开始发送(分别为1、0、1、0、1、0、1、0),接着发送校验位(高电平或低电平或无)和停止位(高电平)。因为本例 中PLC连续的发送两个字符,所以第一个字符帧的停止位结束后便立即发送下一个字符帧的起始位,之 间数据线没有空闲状态。假如PLC断续的发送这两个字符,那么当PLC发送完第一个字符帧的停止位后,数据线将维持一段时间空闲状态,再发送下一个字符帧。 字符传输的时间取决于波特率,如果设置波特率为9.6k,那么传输一个字符帧中的一位用时等于 1/9600*1000000=104us,如果这个字符帧有11位,那么这个字符帧的传输时间等于 11/9600*1000=1.145ms. 自由口通信协议是什么? 顾名思义,没有什么标准的自由口协议。用户可以自己规定协议。 已知一个通信对象需要字符(字节)传送格式有两个停止位,S7-200是否支持? 字符格式是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持上述格式。 S7-200是否支持《S7-200系统手册》上列明的通信波特率以外的其他特殊通信速率? 通信速率是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持没有列明在手册上的通信速率。1.2 自由口通信要点 应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。用户程 序通过特殊存储器SMB30(对端口0)、SMB130(对端口1)控制通信口的工作模式。 CPU通信口工作在自由口模式时,通信口就不支持其他通信协议(比如PPI),此通信口不能再与编程 软件Micro/WIN通信。CPU停止时,自由口不能工作,Micro/WIN就可以与CPU通信。

西门子S7-200PLC自由口实例代码

1 引言 为了达到和通讯协议已知的控制设备进行数据交换,以提高自动化控制系统的灵活性,很多plc制造商都相继的开发出了方便、灵活的自由口通讯方式,例如三菱公司的fx2系列plc,omron公司的cjm1系列的plc,西门子公司的s7-200系列plc等都提供了自由口通讯模式。自由口通讯是指plc提供了串行的通讯硬件,和用于定制通讯协议的相关指令,在控制系统中,当要和plc连接的控制设备的通讯协议已知时,可以在plc中进行编程定制通讯协议,和控制设备进行数据通讯。本文主要介绍西门子s7-200的自由口和计算机的串口进行的通讯,计算机中采用visual basic进行编程,从而实现计算机与可编程控制器的直接控制。该通讯方式具有效率高、容易实现、通讯硬件简单、容易配置等特点在工业控制领域中被广泛应用。 2 s7-200通讯指令及特殊字节 采用自由口通讯方式时,s7-200上的rs485口完全由用户控制,可以与任何协议已知的设备进行通讯,在这种情况下通讯协议完全由用户制定,为此,s7-200提供了用于进行通讯协议定制的特殊标志位以及相关的通讯指令。 2.1 特殊标志字节 s7-200用于自由口通讯模式定义的特殊标志字节有smb30和smb130,smb30用于s7-200的端口0的通讯,smb130用于s7-200的端口1的通讯,两者的格式一样,下面我们以smb130为例,介绍其组成。smb130各位的含义如下: pp:两位用于选择通讯的校验方式当这两位的组合是: 00无校验01 偶校验10 无校验11 奇校验 d:这一位用于选择通讯的数据位数d=1时7个数据位,d=0时8个数据位 bbb:用于选择自由口通讯是的波特率,这三位的组合和通讯波特率的关系如下: 000 ——38400bps 001 ——19200bps 010 ——9600bps 011 ——4800bps 100 ——2400bps

西门子以太网通讯模块调用

西门子S7300/400以太网连接程序数据交换方法 一、对于343-1的专门以太网连接模块做通讯的项目由于模块支持较多通讯协议,故推荐使 用使用通讯功能块FC5/FC50 和FC6/FC60 编程 ? TCP 连接 ? ISO-on-TCP 连接 (RFC 1006) ? ISO 连接 ? UDP 连接 ? FDL 连接 通讯功能块FC5 “AG_SEND”和FC6 “AG_RECV”的特点 ? FC5 和 FC6 是异步通讯功能块。 ? FC5 和 FC6 的运行需要几个 OB1 周期。 ? FC5 由输入参数 "ACT" 使能。 ?通讯任务结束由“DONE”或“ERROR”指示。 ? AG_LSEND 和 AG_LRECV 可以通过一个连接同时通讯。 ?可以在 SIMATIC_NET_CP 库"CP 300 > Blocks" 里找到通讯功能块 FC5 "AG_SEND" 和 FC6 "AG_RECV"。 首先在STEP7中的NETCONFIG中进行网络配置,设置好IP后,点需要配置连接的PLC,按 添加一个新的网络连接:在选择好伙伴PLC后添加IS0-on-TCP connection协议 然后再对选择好后的协议进行配置,注意下图中标注的地方按默认就可以

再在程序中调用FC5/FC6块,注意在引脚ID和LADDR处填入上面标识处的参数 如果FC5和FC6的块在原程序中已经被占用,新调入的AG_SEND和AG_RECEIVE需重新命名,其中需填入的参数为: ACT—激活该块工作直到ACT信号消失,BOOL变量 ID—网络配置后主机与伙伴机之间的网络地址,特别注意发射、接收块的ID,主机与伙伴机的ID需相同 LADDR—网络配置后生成的特殊标识,WORD变量 SEND/RECV—指针型位变量,表示从该位开始以后的数据数量,以BYTE为单位 LEN—所传送数据长度,10进制数,以BYTE为单位 DONE/NDR—数据发送/接收成功标志位 ERROR—块运行错误标识,显示的是16进制数,根据代码可以查询故障原因 STATUS—状态标识字,表示块运行状态

西门子,三菱自由口

除了S7-200系列PLC之间可以进行自由口通信,S7-200系列PLC还可以与其他品牌的PLC、变频器、仪表和打印机等进行通信,要完成通信,这些设备应有RS-232C或者RS-485等形式的串口。西门子S7-200与三菱的FX系列通信时,采用自由口通信,但三菱公司称这种通信为“无协议通信”,内涵实际上是一样的。 以下以CPU 226CN与三菱FX2N-32MR自由口通信为例,讲解S7-200系列PLC与其他品牌PLC或者之间的自由口通信。 【例2-4】有两台设备,设备1的控制器是CPU 226CN,设备2的控制器是FX2N-32MR,两者之间为自由口通信,实现设备1的10.0启动设备2的电动机,设备1的10.1停止设备2的电动机的转动,请设计解决方案。 (1)主要软硬件配置 ①1套STEP7-Micro/WIN V4.0 SP7和GX Developer 7.0; ②1台CPU 226CN和1台FX2N-32MR; ③1根屏蔽双绞电缆(含1个网络总线连接器); ④1台FX2N-485-BD; ⑤1根PC/PPI电缆。 两台CPU的接线如图2-29所示。 【关键点】网络的正确接线至关重要,具体如下。 ①CPU 226CN的PORTO口可以进行自由口通信,其9针的接头中,1号管脚接地,3号管脚为RXD+/TXD+(发送+/接收+)公用,8号管脚为RXD-/TXD-(发送一胺收-)公用。 ②FX2N-32MR的编程口不能进行自由口通信,因此本例配置了一块FX2N-485-BD模块,此模块可以进行双向RS-485通信(可以与两对双绞线相连),但由于CPU 226CN只能与一对双绞线相连,因此FX2N-485-BD模块的RDA(接收+)和SDA(发送+)短接,SDB(接收.)和RDB(发送一)短接。 ③由于本例采用的是RS-485通信,所以两端需要接终端电阻,均为I10Q,CPU 226CN 端未画出(由于和PORTO相连的网络连接器自带终端电阻,有关内容在后面会详细讲解),若传输距离较近时,终端电阻可不接入。 图2-29 接线图 (2)编写CPU 226CN的程序

西门子以太网(S7协议)通讯

西门子以太网(S7协议)通讯 一、概述 西门子支持多种协议,包括DP协议,FMS协议,S7协议,当使用力控通过以太网S7协议访问设 备时,需要安装西门子SIMATIC NET5.0的相应软件。 二、硬件配置 安装网卡 1、硬件安装:请参照西门子说明书,注意地址设置。 2、板卡软件设置:打开PG/PC界面,(“开始”菜单或“控制面板”中),点击INSTALL按钮,弹 出Install/Remove Interface对话框,在Selection的选项中,选择相应的板卡,点击Install 安装。安装完成后,可在控制面板的系统项中检查是否有冲突。 三、通讯配置 运行SIMATIC NET PB soft s7中的COML S7,生成新的.TXT文件 1、在network type中选择TCP/IP 2、在name栏中,键入一个S7 连接名,此名代表一个PLC站点,比如testtcp。 3、在VFD栏中,键入REQ(或VFD)

4、在Remote Addr键入需要访问的PLC的IP地址,比如202.168.0.1。 5、Local TSAP键入1.00(缺省) 6、Remote TSAP为四位16进制数字,中间以“.”隔开。第二位数字表示远程站点的类型:2-OS, 1-PG,0-PS;第三位数字表示PLC的CPU的RACK号,第四位数字表示CPU的SLOT号,一般为:02.02。如下图: 7、在File菜单中,选择 Generate Binary DB As 生成二进制数据库。见下图:

四、网卡的配置 重新进入PG/PC界面。选择相应的网卡为S7ONLINE (STEP 7) -→TCP/IP-→******方式。如下图: 点击Properties弹出Propeities界面: 在SAPI S7 (Protocol)页中,点击Search,查找并选择在COML S7中生成的相应的 *.ldb文件。 图形如下:

kepserver与西门子plc通信配置方法

KepServer软件与西门子PLC通信配置方法 (串口或以太网) 一、PLC采用自由口通讯配置方法 1. KepServer配置 (a). 在KepServerEx中新建一个空白工程,添加1个通道,在“Device driver”中选择 【Siemens S7-200】; 说明:如下图,【Siemens S7 MPI:指PLC300】、【Siemens S7-200:指PLC200】、【Siemens TCP/IP Ethernet:PLC200和PLC300均可】。 然后设置与PLC通讯的电脑串口,其它基本采用默认即可,根据需要可调整设置;

(b) 添加一个设备,在“Device Model”选择【S7-200】; 在设置“Device ID”时一定要注意,这个值对应于PLC程序里“通讯”->“远程ID”;如果不对应,将无法通讯;

(c). 添加tsg标签,注意IO地址的格式与以太网方式有点区别,其数据类型必须要在“Data type”中设置才行,同样在上位机配置OPC驱动时也要注意IO点的数据类型;

(d). 配置好后,可以用KepServerEx自带的quick client来调试与PLC通讯是否正常,配置是否正确; 2. iFix组态上位机OPC驱动配置 (a). 打开OPC Tool配置工具,新建空白工程文件,添加opc server、group、Item,注意 所有的Enable均要打勾; 注意:可以用添加多个IO项的方式快速设置;

(b). 配置完成后,点击1:Start按钮,然后点击2:Statistics来进行状态监视,检查通 讯配置是否正常。

西门子S7200PLC自由口实例代码

1 引言 plc,omron公司的cjm1系列的plc,西门子公司的s7-200系列plc等都提供了自由口通讯模式。自由口通讯是指plc提供了串行的通讯硬件,和用于定制通讯协议的相关指令,在控制系统中,当要和plc连接的控制设备的通讯协议已知时,可以在plc中进行编程定制通讯协议,和控制设备进行数据通讯。本文主要介绍西门子s7-200的自由口和计算机的串口进行的通讯,计算机中采用visual basic进行编程,从而实现计算机与可编程控制器的直接控制。该通讯方式具有效率高、容易实现、通讯硬件简单、容易配置等特点在工业控制领域中被广泛应用。 2 s7-200通讯指令及特殊字节 采用自由口通讯方式时,s7-200上的rs485口完全由用户控制,可以与任何协议已知的设备进行通讯,在这种情况下通讯协议完全由用户制定,为此,s7-200提供了用于进行通讯协议定制的特殊标志位以及相关的通讯指令。 2.1 特殊标志字节 s7-200用于自由口通讯模式定义的特殊标志字节有smb30和smb130,smb30用于s7-200的端口0的通讯,smb130用于s7-200的端口1的通讯,两者的格式一样,下面我们以smb130为例,介绍其组成。smb130各位的含义如下: pp:两位用于选择通讯的校验方式当这两位的组合是: 00无校验01 偶校验10 无校验11 奇校验 d:这一位用于选择通讯的数据位数d=1时7个数据位,d=0时8个数据位 bbb:用于选择自由口通讯是的波特率,这三位的组合和通讯波特率的关系如下: 000 ——38400bps 001 ——19200bps 010 ——9600bps 011 ——4800bps 100 ——2400bps 101 ——1200bps 110 —— 600 bps 111 —— 300 bps mm: 用于通讯协议的选择,当这两位的组合是: 00 ppi从站模式01 自由口通讯模式10 ppi主站模式

西门子以太网通讯设置

西门子以太网通讯一、功能: S7-200做客户机(主站),S7-300做服务器(服务器) 二、硬件配置: 1.CP243-1 2.CPU224 3.CPU314 4.CP343-1 三、设置步骤: 第一步打开S7-200编程软件MicroWIN,在工具栏中选择以太网向导

第二步读取CP243-1【以太网模块】。注意:PC与S7-200连接正常才能读取到

第三步选择以太网模块 第四步输入【CP243-1 】的IP地址192.168.0.50 注意IP设置与S7-300侧要在同一个网段

第五步配置连接数【最多连接8路】以太网模块要占用地址,建议放在最后插槽连接数:根据实际的连接数配置 第六步

1.选择客户机连接【s7-200为客户机】 2.【03.02】----03:单边通信02: S7-300CPU模块的插槽号【10:00】----1:固定0:连接号00:s7-200CPU模块的位置 3. 输入CP343-1的IP地址【在S7-300的硬件组态中设置】 4. 单击“数据传输”,进入配置窗口。 注意:连接号一定要记住,在编程的时候会应用到

第七步 1.选择向服务器读取数据 2.选择读取数据的大小【最大212个字节】 3.数据的对应关系。【把S7-300“DB10.DBB0开始的10个字节”的数据读取到本地“VB0开始的10个字节”中】 4.配置完后点击【新转输】 注意:传输号要记住,在编程中要应用到 第八步 1. 选择向服务器写入数据 2. 选择写入数据的大小【最大212个字节】 3. 数据的对应关系。【把本地“VB10开始的10个字节”的数据写入到S7-300“DB10.DBB10开始的10个字节”中】 4.配置完后点击确认 注意:传输号要记住,在编程中要应用到

西门子PLC串行通讯方式有几种

西门子PLC串行通讯方式有几种? 西门子PLC串行通讯方式有:RS485串口通信、PPI通信、MPI通信、PROFIBUS-DP通信、以太网通信 一、PPI通讯 PPI协议是S7-200CPU最基本的通信方式,通过原来自身的端口(PORT0或PORT1)就可以实现通信,是S7-200 CPU默认的通信方式。 PPI是一种主-从协议通信,主-从站在一个令牌环网中。在CPU内用户网络读写指令即可,也就是说网络读写指令是运行在PPI协议上的。因此PPI只在主站侧编写程序就可以了,从站的网络读写指令没有什么意义。 二、RS485串口通讯 第三方设备大部分支持,西门子S7 PLC可以通过选择自由口通信模式控制串口通信。最简单的情况是只用发送指令(XMT)向打印机或者变频器等第三方设备发送信息。不管任何情况,都必须通过S7 PLC编写程序实现。 当选择了自由口模式,用户可以通过发送指令(XMT)、接收指令(RCV)、发送中断、接收中断来控制通信口的操作。 三、MPI通讯 MPI通信是一种比较简单的通信方式,MPI网络通信的速率是19.2Kbit/s~12Mbit/s,MPI 网络最多支持连接32个节点,最大通信距离为50M。通信距离远,还可以通过中继器扩展通信距离,但中继器也占用节点。 MPI网络节点通常可以挂S7-200、人机介面、编程设备、智能型ET200S及RS485中继器等网络元器件。 西门子PLC与PLC之间的MPI通信一般有3种通信方式: 1、全局数据包通信方式 2、无组态连接通信方式 3、组态连接通信方式 四、以太网通讯 以太网的核心思想是使用共享的公共传输通道,这个思想早在1968年来源于厦威尔大学。1972年,Metcalfe和David Boggs(两个都是著名网络专家)设置了一套网络,这套网络把不同的ALTO计算机连接在一起,同时还连接了EARS激光打印机。这就是世界上第一个个人计算机局域网,这个网络在1973年5月22日首次运行。Metcalfe在首次运行这天写了一段备忘录,备忘录的意思是把该网络改名为以太网(Ethernet),其灵感来自于“电磁辐射是可以通过发光的以太来传播”这一想法。1979年,DEC、Intel和Xerox共同将网络标准化。 1984年,出现了细电缆以太网产品,后来陆续出现了粗电缆、双绞线、CATV同轴电缆、光缆及多种媒体的混合以太网产品。以太网是目前世界上最流行的拓朴标准之一,具有传传播速率高、网络资源丰富、系统功能强、安装简单和使用维护方便等很多优点。 五、PROFIBUS-DP通讯 PROFIBUS-DP现场总线是一种开放式现场总线系统,符合欧洲标准和国际标准。PROFIBUS-DP通信的结构非常精简,传输速度很高且稳定,非常适合PLC与现场分散的I/O设备之间的通信。

相关文档
相关文档 最新文档