您现在的位置:e-works > 百味书屋 > 书籍列表 > 西门子PLC高级应用实例精解 > 自由口通信

第四章 PLC的通信及其通信模块的应用

第三节 自由口通信

4.3.1  自由口通信简介

    西门子S7-200 PLC拥有自由口通信功能,顾名思义,就是没有标准的通信协议。用户可以自己规定协议。第三方设备大多支持RS-485串口通信,西门子S7-200 PLC可以通过自由口通信模式控制串口通信。最简单的使用案例就是只用发送指令(XMT)向打印机或者变频器等第三方设备发送信息。不管任何情况,都通过S7-200 PLC编写程序实现。
    自由口通信的核心就是发送(XMT)和接收(RCV)两条指令,以及相应的特殊寄存器控制。由于S7-200 CPU通信端口是RS-485半双工通信口,因此发送和接收不能同时处于激活状态。RS-485半双工通信串行字符通信的格式可以包括一个起始位 、7或8位字符(数据字节)、一个奇/偶校验位(或者没有校验位)、一个停止位 。
    自由口通信速波特率可以设置为1200、2400、4800、9600、19200、38400、57600或112500。凡是符合这些格式的串行通信设备,理论上都可以和S7-200 CPU通信。自由口模式可以灵活应用。Micro/WIN的两个指令库(USS和Modbus RTU)就是使用自由口模式编程实现的。
    对于自由口模式设置来说,S7-200 CPU使用SMB30(对于Port0)和SMB130(对于Port1)定义通信口的工作模式,有关说明参见图4-5及其说明。

1.发送指令

    以字节为单位,XMT向指定通信口发送一串数据字符,要发送的字符以数据缓冲区指定,一次发送的字符最多为255个。
    发送完成后,会产生一个中断事件,对于Port0口为中断事件9,而对于Port1口为中断事件26。当然也可以不通过中断,而通过监控SM4.5(对于Port0口)或者SM4.6(对于Port1口)的状态来判断发送是否完成,如果状态为1,说明完成。

    XMT指令缓冲区格式见表4-8。
 


 

2.接收指令

    以字节为单位,RCV通过指定通信口接收一串数据字符,接收的字符保存在指定的数据缓冲区,一次接收的字符最多为255个。
    接收完成后,会产生一个中断事件,对于Port0口为中断事件23,而对于Port1口为中断事件24。当然也可以不通过中断,而通过监控SMB86(对于Port0口)或者SMB186(对于Port1口)的状态来判断发送是否完成,如果状态为非零,说明完成。SMB86和SMB186含义见表4-9,SMB87和SMB187含义见表4-10。

    RCV指令缓冲区格式见表4-11。

分页


4.3.2  S7-200 PLC之间的自由口通信

    以下以两台S7-200 CPU之间的自由口通信为例介绍S7-200 PLC之间的自由口通信的编程实施的方法。
    【例4-4】有两台设备,控制器都是CPU 226CN,两者之间为自由口通信,实现设备1的I0.0启动设备2的电动机的星-三角启动控制,设备1的I0.1终止设备2的电动机的转动,反过来设备2的I0.2启动设备1的电动机的星-三角启动控制,设备2的I0.3终止设备1的电动机的转动。
    【解】
 

1.主要软硬件配置

    ①1套STEP7-Micro/WIN V4.0。
    ②2台CPU 226CN。
    ③1根PROFIBUS网络电缆(含2个网络总线连接器)。
    其硬件配置如图4-31所示。
 

    【关键点】自由口通信的通信线缆最好使用PROFIBUS网络电缆和网络总线连接器,若要求不高,为了节省开支可购买市场上的DB9接插件,再将两个接插件的3和8角对联即可,如图4-32所示。
 

2.编写设备1的程序

    设备1的主程序如图4-33所示。

    设备1的子程序0如图4-34所示。

    设备1的子程序1如图4-35所示。
 

    设备1的中断程序0如图4-36所示。

   

分页


    设备1的中断程序1如图4-37所示。

    设备1的中断程序2如图4-38所示。

3.编写设备2的程序

    设备2的主程序如图4-39所示。

    设备2的子程序0如图4-40所示。
 

    设备2的子程序1如图4-41所示。