作者 | 主题 |
---|---|
WWCWWC 至圣 经验值: 72865 发帖数: 8234 精华帖: 145 |
楼主 2016-11-26 10:10:08
主题:说说西门子200smart modbus自由口通讯的那些事 说说西门子200smart modbus自由口通讯的那些事 一直来,经常在论坛看到一些网友提问,关于200smart modbus自由口通讯的问题。我结合那时自己初学的经历,肤浅地写一些对于modbus 自由口通讯的认识,望能够帮助到需要的同行。 西门子200smart PLC本机集成有一个基于RS485口,该口可以通过特殊控制字节SMB30设置为PPI通讯(默认值)或者自由口,当然该字节的设置还包含通讯频率、通讯数据位、校验等参数的设置内容。如果系统需要增加2个通讯口,西门子200 smart还提供扩展的通讯信号板,订货号:6ES7 288-5CM01-0AA0。所对应的控制字节是SMB130,与之前的200 prot1口有些相似。 对SMB30(SMB130)控制字节的描述: 该控制字节的具体8个位分别: b0 b1:通讯协议 0 0 :PPI/从站模式 0 1 :自由口通讯模式 1 0 :保留 1 1 :保留 b2 b3 b4:通讯频率 0 0 0 :38400 0 0 1 :19200 0 1 0 :9600 0 1 1 :4800 1 0 0 :2400 1 0 1 :1200 1 1 0 :115200 1 1 1 :57600 b5 :数据位 0 :8位 / 字符 1 :7位 / 字符 b6 b7:校验 0 0 :无校验 0 1 :偶校验 1 0 :无校验 1 1 :奇校验 根据上诉控制字节每一个位的含义,设置通讯口是编写通讯程序中容易理解的一件事情。 假设,需要设置一个集成在cpu本机上的通讯口,通讯频率9600 bps;8位数据位;无校验,根据通讯要求选择: 得SMB30的数据值:0 1 0 0 1 0 0 1,转换为16# 数为 49。 这样,在初始化通讯参数时,只需要由SM0.1把16 # 49用MOV_B指令写入SMB30,集成的通讯口设置就完成了,图示: 所以,有时候看到论坛上有网友提问,尽管无论如何设置(通讯电缆是好的)通讯参数,与200或者200smart PLC就是无法连接,就有可能该口已经被设置了。如果是原200cpu只需要把运行开关拨至STOP模式,系统自动退回到PPI通讯模式。但200smart 没有了此开关的硬件配置,改为软件设置cpu运行模式,图示分别是:cpu运行、cpu停止、程序编译按钮 检查该口是否被设置,只需要检查程序中是否调用了SMB30或者SMB130就明白了。 另外,需要注意200smart关于cpu运行的问题是,在“系统块”中增加了一个“启动”的选项,分别为: STOP模式(默认值):CPU 在上电或重启后始终应该进入 STOP 模式 RUN模式:CPU 在上电或重启后始终应该进入 RUN 模式 LAST模式:CPU 应进入上一次上电或重启前存在的工作模式 在实际应用中,需要先设置好这个“启动”选项,保存并下载项目到cpu中。 说到这个通讯频率的问题,在通讯实例中往往会关系到一个数据就是空闲线时间设置的参数SMW90,所谓空闲线设置的依据是根据2条信息报文间隔时间,一般设置为大于3个信息报文间的时间作为空闲线时间,也是基于起始符、停止符后,另一个标志着通讯字符间隔。 假设,通讯频率为9600 bps,即每秒通讯速率是9600个位信息/秒,等同于9.6个位信息/mS。设置大于3个字符间隔的含义是:一个字符一般包含11个位信息(起始位、停止位、(7)8个数据位、校验位)。发送或者接收一个字符所需要的时间大概是1.145mS,大于3个字符间隔时间:1.145 * 3 = 3.437mS,取整后为4.0mS。所以我们常常看到SMW90被设置位4.0(mS)的依据也在此,这个空闲线间隔时间参数与通讯频率有关,具体启用这个空闲线定时器时间由SM87.3 = 1和SM87.4 = 1中设置。 上面说到了起始符和停止符,又是这么一会事情? 一条信息报文的开始或者结束往往需要用一个标志性字符来界定,西门子200smart PLC一般常常在SMB88(起始符);SMB89(结束符)将任意一个字符写入这些标志字节中来判断信息报文的开始和结束。考虑到任意字符作为起始或者结束符时,可能会与实际的信息字符会重合,不利于区分,一般常常用标志符“:”(16#3A)和回车“LF”(16#0A),当然,也允许用户自定义字符作为信息报文的开始和结束,只要在通讯数据中不曾出现的字符。这些标志性字符由SMB87控制字节内容来确定,其中启用起始符由SM87.6 = 1;结束符由SM87.5 = 1赋值。同理,如果采用信号板(SB),则在SMB187中设置相关参数。 西门子200smart PLC modbus自由口通讯作为信息的开始和结束,一般分为3种方式,即起始符、结束符;空闲线定时器时间;2者均采用,用户允许选择一种或多种方式来判断通讯信息报文的结构,图示是SMB87控制字节的说明: 另一个比较重要的参数是SMB94(SMB194)发送或者接收字符总数,最多允许发送或者接收255个字符,如果没有设置这个参数通讯将无法正常实现。有几次网友提问的附件中也看到了这个问题,更有意思的也有网友把这个字符总数设置成SMB94,那是2个概念的问题了。 |
WWCWWC 至圣 经验值: 72865 发帖数: 8234 精华帖: 145 |
8楼 2016-12-16 13:07:54
主题:回复:说说西门子200smart modbus自由口通讯的那些事 我之所以要写这个,有2个原因。 1)上次受坛主厚爱,奖了一台200smartPLC,总欠坛主一点东西,一时想不出来什么可以写写。因为之前西门子官方已经总结了非常经典的移植说明等高、大、上的视频、文章。 2)感觉自由口通讯无论是官方视频还是资料相对比较少,所以想结合自己以前做过和自己对该通讯模式的理解,很是笨拙的写了一点,请包涵。 |