加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线18475208684
公司新闻
超详细讲解 PLC自由口通讯——以S7-200为例。
发布时间: 2024-06-15 09:51 更新时间: 2024-11-25 08:00

主要内容:

  • S7-200 PLC串口通讯概览

  • S7-200 PLC自由口通讯基础

  • S7-200 PLC自由口通讯指令

  • S7-200 PLC自由口通讯常问问题

  • (1)概览

    S7-200串口通讯主要包括:
    1)Modbus—S7-200PLC与支持Modbus RTU协议的第三方设备通讯

  • RTU Master-Protocol(RTU主站协议)

  • RTU Slave-Protocol(RTU从站协议)

  • 2)USS—S7-200PLC与SIEMENS驱动设备的通讯(如MM440等)
    3)自由口通讯—S7-200PLC与自由协议的第三方设备间的通讯

    S7-200系列PLC可以方便地同计算机、打印机、变频器、扫描仪等其它的第三方设备进行无障碍通讯。

    图片


    Modbus通讯和USS通讯是自由口通讯的特例。


    图片

    对于S7-200系列的PLC而言,本体上存在着一个或两个485通讯接口,这种接口即可实现S7-200串口通讯的功能,这类串口既可以做编程和监控,也可以做自由口通讯。但在其运行自由口通讯程序时,无法对其进行监控。这是因为对于同一个口而言在同一个时刻只能支持一种协议,而编程与下载的协议对于S7-200PLC而言是PPI协议,所以一旦在程序运行过程中使得它做自由口通讯的状态则无法对其监控和下载。


    下表是Modbus、USS以及自由口通讯的一些参数:

    图片

    图片

    对于OSI七层模型而言,Modbus通讯、USS通讯和自由口通讯所处的位置可从上图中看到。

    (2)自由口通讯
  • S7-200 CPU的通信口可以设置为自由口模式。选择自由口模式后,用户程序就可以完全控制通信端口的控制,通信协议也完全受用户程序控制。

  • 所谓的自由口通讯,就是通讯协议是由用户自由定义的。

  • 对于S7-200 PLC而言,基于本体自带的485端口的网络所应用的协议,除了PPI协议以外,其他都是自由口协议。例如USS协议、Modbus协议等等都是特定的自由口通讯协议。

  • 1)自由口通讯硬件

    西门子S7 -200系列PLC的自由口是基于RS485的硬件,采用正负两根信号线作为传输线路。两线间的电压差为+2V~6V表示逻辑"1":两线间的电压差为-2V~-6V表示逻辑"0"。

    西门子串口的插头是九针标准插头,其中各个针脚的定义在下表中得以体现,Zui重要的两根线是表中红线标出的3号脚和8号脚,也就是通常说的"3正8负",其中3对应信号B,8对应信号A,其它的引脚可以完成一些额外的功能,比如24V直流电的供应,5V直流电的供应以及发送请求等。但是对于Zui基本的串口通讯而言,3脚和8脚两根线就足够了,所以下面将着重介绍这两根线的逻辑。

    图片

    对于一根线上通过这两根线就可以完成如此复杂的通讯过程,它的传输逻辑一个是"1"一个是"0",对于一个完整的报文帧而言,它的格式从下图中可以看出,首先包括一位起始位,中间是7或8位数据位,接下来是一位校验位或者没有校验位,Zui后附上一个停止位,从起始位到停止位是一个报文的全部内容,起始位在传输过程当中被永远定义为逻辑0,7或8位数据位0或1的逻辑状态完全取决于数据等于多少,校验位可有可无,如果有的话还分为奇校验和偶校验,它Zui终的逻辑是取决于前面数据位的组合关系,停止位固定为1。在整个报文帧之外的范围内,线上的状态为1,即为空闲状态。

    图片


    2)自由口通讯基本格式


  • 一个数据帧的组成

  • 图片

    对于一个数据帧的组成而言,它是由若干个待发生的字符组成的,从字符1、2到字符n;


  • 一个传输字符的格式:

  • 图片

    对于每一个字符的传输格式,它具有1位起始位,7或8位的数据位,0或1位的校验位以及1位停止位;


  • 一个传输字符的485电平:

  • 图片

    对于每一个传输字符的485电平,起始位固定为0,数据位和校验位是随机的,停止位固定为1。

    自由口同心速波特率可以设置为1200、2400、4800、9600、19200、38400、57600或112500 bit/s。

    关于端口协议的选择,字符传输格式,以及波特率的设定需通过设置SMB30(Port0)/SMB130(Port1)来完成。(具体可参照S7-200系统手册)


    3)发送指令的使用

    自由口的指令一共有两条,一条是发送指令,一条是接收指令。我们在谈及发送或接收的时候往往会对立地去看读或写两个概念,但是读与写,发送与接收并不是相同的概念,一般在谈及读或写的时候往往是基于一些相对gaoji的通讯,比如主从之间的通讯,主站可以对从站进行读或写的操作。相对于读和写的概念而言,发送和接收指令更为基本,例如A和B两个通讯对象,A发送一个报文给B,这是一个发送的过程,B接收到A发送给它的报文,这是接收的过程。而对于读和写则复杂的多,例如A作为主站想要读取B的数据内容,则需要A首先发一个读请求给B,B接收到了A发送过来的读请求之后作出判断,从而将A想要的数据由B再发送给A,由A接收到这个数据从而完成一次读的过程。所以相对读和写,发送和接收的过程要基本的多,而自由口通讯用到的指令就是发送和接收指令。

    图片

    发送的指令叫做XMT指令(如上图),可以想见它的激活条件必须是一个沿触发,得到沿的时机即为发送指令,向外发送数据的时机。PORT代表的是哪个口向外发数据,CPU224 XP以上的S7-200系列PLC有两个通讯口,PORT=0的时候表示由0口向外发送数据,PORT=1的时候表示由1口向外发送数据。对于TBL而言,这是一个标示着发送数据的地址位,发送的数据格式如下表所示:


    图片


    4)接收指令的使用

    在TBL所指的数据区的第一个数据指的是待发送缓冲区的数据长度,从TBL+1开始则是被发送的数据,被发送数据的长度Zui多为255个。在上面的程序中,TBL=VB100,VB100当中存的就是待发送数据的数据长度,以字节为单位,例如如果VB100=5,则被发送的数据是VB101~VB105,VB100本身并不会被发送出去,它仅仅标示被发送数据的长度和位置


    在应用自由口通讯时,发送的过程往往比较简单,几乎所有和协议有关的东西都在接收程序里。


    图片

    接收的指令叫做RCV指令(如上图),该指令同样使用沿触发,PORT同样表示使用0口还是1口,TBL定义的是已经接收了的数据的长度,从TBL+1开始则是已经接收到的数据,n同样是小于255。


    图片


    例如在上面的程序中,若VB100=5,则已经接收到的数据是VB101~VB105。

    在接收过程当中,可以通过SMB86(PORT0)/SMB186(PORT1)来监视接收状态。SMB86/SMB186=0时,表示接收正在进行,否则表示接收已终止。



    联系方式

    • 电  话:13922889745
    • 经理:向小姐
    • 手  机:18475208684
    • 微  信:18475208684