长沙玥励 西门子 6ES7211-1AE40-0XB0 销售中心
S7-1200 串行通信
S7-1200支持的串行通讯方式
点对点(PtP)通信 Modbus 主从通信 USS 通信
名称 | CM 1241 RS232 | CM 1241 RS485 |
---|---|---|
订货号 | 6ES7 241-1AH30-0XB0 | 6ES7 241-1CH30-0XB0 |
通讯口类型 | RS232 | RS485 |
波特率(bps) | 300; 600;1.2 kb; 2.4 kb; 4.8 kb; 9.6 kb;19.2 kb; 28.4 kb; 57.6 kb; 76.8 kb; 115.2 kb; | |
校验方式 | None(无校验) Even(偶校验) Odd(奇校验) Mark(校验位始终置为1) Space(校验位始终为0) | |
流控 | 硬件流控;软件流控 | 不支持 |
接收缓冲区 | 1KB | |
通讯距离(屏蔽电缆) | 10m | 1000m |
电源规范(5V DC) | 220mA |
S7-1200 RS232 和 RS485 通信模块的特征
图1. 串口通信模块
由 CPU 供电,不必连接外部电源端口经过隔离,最长距离1000 米
有诊断 LED 及显示传送和接收活动 LED
支持点对点协议
通过扩展指令和库功能进行组态和编程
RS485 与 RS232 通信模块的LED
诊断 LED 灯
红闪:如果 CPU 未正确识别到通信模块,诊断 LED 会一直红色闪烁 绿闪:CPU 上电后已经识别到通信模块,但是通信模块还没有配置 绿灯:CPU 已经识别到通信模块,且配置也已经下载到了CPU发送 LED 灯
代表数据正在通过通信口传送出去接收 LED 灯
代表数据正在通过通信口接收进来注意:安装于CPU本体上的通信板只有发送和接收 LED 灯,而没有诊断 LED 灯
RS485及RS232两种模板支持的协议
ASCII USS Modbus RTU Master protocol Modbus RTU Slave protocolASCII 协议的特点
报文可以由用户自己定义,便于用户以 ASCII 协议为基础开发 使用简单,可以很好地实现与第三方系统的通讯 可以进行识别报文结束设置 可以进行数据流量控制 缺点:具有简单的校验功能(奇偶校验),低数据安全性;数据传输无确认信息; 通讯需要双方协调S7-1200 的 PTP 校验
串口的校验: 奇偶校验:用于检验数据传递的正确性,是最简单的检错方法。
图2. 校验设置
注意:奇偶校验可以简单的判断数据的正确性,从原理上可看出当一位出错,可以准确判断,当两位或更多位误码就校验不出,但由于其实现简单,仍得到了广泛使用。
PTP 通信的发送信息配置
定义在信息起始发送断点及空闲线
字符中断:当接收到的数据保持为零值的时间大于完整的字符传输时间时,代表字符中断。一个完整字符传输时间定义为传输起始位、数据位、校验位和停止位的时间总和。
图3. 定义在信息起始发送断点及空闲线
常问问题:为什么发送配置中只配了2位字符中断,而通信伙伴却可以正常接收数据?
答:发送配置中设置的字符中断小于等于16位时,系统自动发出16位的字符中断位;设置大于16位时,则发出的中断位与实际设置相符。下图是设置的发送断点及空闲线位及其实际发出的波形图。
波形图 | 断点及空闲线设置 |
图4. 断点及空闲线波形图
PTP 通信接收起始条件
以任意字符开始
以特殊条件开始:
通过断点识别消息开始 通过空闲线识别消息开始 通过单个字符识别消息开始 通过字符序列识别消息开始
图5. 通信接收起始条件
通过字符序列识别消息开始
对于多个起始序列的组态,只要出现其中一个序列,即会满足开始条件。下图右侧即为满足起始条件的字符串。
图6. 通过字符序列识别消息开始
如果选择了多个起始条件,则检查开始条件的顺序如下:
注意:检查多个开始条件时,如果有一个条件没有满足,则 CM 将从第一个所需的条件开始重新启动检查。
PTP 通信接收结束条件
图7.结束条件设置
注意:与多个起始条件的判断不同,检查多个结束条件时,任何一个条件满足,信息接收结束。
消息超时结束条件
消息超时时间从接到符合消息开始条件的第一个字符时开始计算,如下图。
图8.消息超时
响应超时结束条件
响应超时时间从传送结束时开始计算,只要传送成功完成且模块开始接收操作,定时器就会启动。
图9.响应超时
注意:响应超时结束条件不能作为单独的结束条件的设置,否则会在编译时报如下错误:
图10.响应超时作为单独的结束条件报错
从消息中读取信息长度
图11.从消息中读取信息长度的设置
实际收到的数据长度= 长度偏移前的字节数+长度字节大小+读取的实际数据长度+不计入字节长度的字节数
图12.程序中读到的实际数据长度
PTP 通信接收缓存区
缓存区的数据保持
断电后缓存区中的数据全部丢失,不能保持。
通信模板缓存区超出20条信息
如果缓存区中的信息超过20条,后面的信息被 自动丢弃,且不报错。
通信模板缓存区多包数据超出1024字节
发送多个每包50个字节数据,当数据超过1024字节那包就被丢弃了,前面的可以正常接收,且没有任何报错.在前面数据被成功接收以后,只要缓存区有空间,后面的数据还可以正常收到。
通信模板缓存区一包数据超出1024字节
如果发送数据一包就大于1024字节时,缓冲区接收到数据到1024字节时,虽然没有收到结束字符,数据由缓存区送给CPU,但会报错16#80E0,如下图。
图13. 发送数据一包大于1024字节时,缓存区报错
、
图14. 使用RST指令复位缓存区错误,恢复数据接收
注意:缓存区可以存储多条信息,限制是20条信息或最多1024字节。
为什么不能使用 PC/PPI 电缆与S7-1200 RS485 模块进行串口调试?
答:因为 S7-1200 RS485 模块接口不提供24V电源,不能给 PC/PPI 电缆供电,所以电缆无法工作。
解决办法:可以将 S7-1200 RS485 与 S7-200 通信口网络连接,将 PC/PPI 电缆插在 S7-200 通信口上总线连接器的编程口上,对S7-1200 RS485进行串口调试。此时S7-200必须上电并打到停止状态。
PTP 接线方式
CB 1241 RS485 接线 (6ES7 241 1CH30-1XB0)
CB1241 RS485 信号板(安装在CPU机本体上) ,订货号为: 6ES7 241 1CH30-1XB0 接线如图1
图1 CB1241 RS485
注释: 3号针脚--RS485信号 B(+) ;8号针脚--RS485信号A(-);5号针脚--接屏蔽等电位点。
CM1241 RS232 接线 (6ES7 241-1AH30-0XB0)
CB1241 RS232 通讯模块,订货号为: 6ES7 241 1AH30-0XB0 接线如图2
图2 CM1241 RS232
注释: 2号针脚--RS232 信号输入接收。3号针脚--RS232 信号输出发送。 5--接地等电位
CM 1241 RS422/485 接线 (6ES7 241-1CH31-0XB0)
CB1241 RS232 通讯模块,订货号为: 6ES7 241 1CH31-0XB0 接线如图3
图2 CM1241 RS422/485
注释:
RS422 接线方法: 2号与9号针脚 -- RS422 发送信号。 3号与8号针脚 -- RS422 接收信号;SHELL接屏蔽等电位点 。
RS485 接线方法:3号针脚--RS485信号 B(+) ;8号针脚--RS485信号A(-) 1号针脚-电位点。
RS232、422及485 的通讯距离和终端电阻
RS 232 通讯最长距离为 10 米屏蔽电缆 RS 422/R485 通讯最长距离为 1000 米屏蔽电缆(取决于波特率及安装终端电阻)RS 485 终端电阻安装方法及阻值大小,如图4
串口通信编程
发送指令及发送完成位:
图1. 发送完成位
接收指令及接收完成位:
图2.接收完成位
字符串转换
S7-1200字符串结构:
总字符数 | 当前字符数 | 字符1 | 字符2 | ...... | 字符256 |
如上面S7-1200字符串结构,第一个字节是总字符数,第二个字节是当前字符数,所以发送和接收真正的字符内容都应该从字符串的第三个字节开始,因此发送和接收字符串都要进行相应的转换。
发送字符串转换:
要将 DB3.DBB20 中的字符串发送出去,需要经过下列转换:
图3. 发送字符串转换
接收字符串转换:
要将收到的字符串送入 DB3.DBB30 中需要进行以下转换:
图4. 接收字符串转换
轮询编程
通信任务:
主站将 P#DB3.DBX20.0 中的字符串“西门子”(注意发送缓冲区由 P#DB3.DBX22.0 开始,因为字符串前两个字节分别是总字符数和当前字符数)发送给从站的接收缓冲区P#DB3.DBX32.0;从站 P#DB3.DBX22.0 返回“博大精深”给主站 P#DB3.DBX32.0。
主站轮询:
图5. 主站轮询
从站轮询:
图6. 从站轮询
通信结果:
如何通过USS协议实现S7-1200 与G120变频器的通信
推荐文档: 西门子工程师推荐本文档! 文档 涉及产品西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,作为经常与SINAMICS G120系列变频器共同使用的PLC,其USS通信协议的使用一直在市场上有着非常广泛的应用。本文将主要介绍如何使用USS通信协议来实现S7-1200与G120变频器的通信。
1.控制系统原理和接线图
下图是本例中所使用的原理和接线图。
图1:控制系统原理和接线图
2.硬件需求
S7-1200 PLC目前有3种类型的CPU:
1)S7-1211C CPU。
2)S7-1212C CPU。
3)S7-1214C CPU。
这三种类型的CPU都可以使用USS通信协议通过通信模块CM1241 RS485来实现S7-1200与G120变频器的通信。
本例中使用的PLC硬件为:
1)PM1207电源 ( 6EP1 332-1SH71 )
2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )
3) CM1241 RS485 ( 6ES7 241 -1CH30 -0XB0 )
4) 模拟器 ( 6ES7 274 -1XH30 -0XA0 )
本例中使用的G120变频器硬件为:
1) SINAMICS G120 PM240 (6SL3244-0BA20-1BA0)
2) SINAMICS G120 CU240S(6SL3224-0BE13-7UA0)
3) SIEMENS MOTOR (1LA7060-4AB10)
4) 操作面板 ( XAU221-001469)
5) USS 通信电缆 ( 6XV1830-0EH10)
3.软件需求
1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)
4.组态
我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和G120变频器的USS通信。
4. 1 PLC 硬件组态
首先在Step7 Basic V10.5中建立一个项目,如图1所示。
图2: 新建S7 1200项目
在硬件配置中,添加CPU1214C和通信模块CM1241 RS485模块,如图2所示。
图3: S7 1200硬件配置
在CPU的属性中,设置以太网的IP地址,建立PG与PLC的连接,如下图所示。
图4: S7 1200 IP地址的设置
4. 2 G120参数设置
变频器的参数设置如下表所示。
序号 | 功能 | 参数 | 设定值 |
1 | 工厂设置复位 | P0010 | 30 |
2 | 工厂设置复位 | P970 | 1 |
3 | 快速启动设置 | P0010 | 1 |
4 | 电机额定电压 | P0304 | 380V |
5 | 电机额定功率 | P0307 | 5.5KW |
6 | 电机额定频率 | P0310 | 50Hz |
7 | 电机额定转速 | P0311 | 1350r/min |
8 | USS命令源 | P0700 | 5 |
9 | 频率设定源 | P01000 | 5 |
10 | 最小电机频率 | P1080 | 0.0Hz |
11 | 最大电机频率 | P1081 | 50.0Hz |
12 | 启动斜坡时间 | P1120 | 10.0S |
13 | 延迟斜坡时间 | P1121 | 10.0S |
14 | 结束快速启动设置 | P3900 | 1 |
15 | 激活专家模式 | P0003 | 3 |
16 | 参考频率 | P2000 | 50.0Hz |
17 | USS数据传输速度 | P2010 | 9 |
18 | USS从站地址 | P2011 | 1 |
19 | USS PZD长度 | P2012 | 2 |
20 | USS PKW长度 | P2013 | 4 |
21 | 通信监控 | P2014 | 0 |
22 | 在E2PROM 保存数据 | P0971 | 1 |
23 | 激活专家模式 | P0003 | 3 |
24 | 激活参数模式 | P0010 | 30 |
25 | 从G120中传输参数到BOP | P0802 | 1 |
表1 :G120变频器的参数设置
注意:表1中的17,18,19,20 这四项参数值的设置必须使PLC的参数值与变频器的参数值相一致。而19,20这两个参数值必须设置成如表1中的值,否则有可能变频器与S7-1200通信有如下问题:可能不能读出从变频器反馈回来的参数值。
5.USS通信原理与编程的实现
5. 1 S7 1200 PLC与G120 通过USS通信的基本原理
S7 1200提供了专用的USS库进行USS通信,如下图所示:
图5: S7 1200 专用的USS库
USS_DRV 功能块是S7-1200 USS通信的主体功能块,接受变频器的信息和控制变频器的指令都是通过这个功能快来完成的。必须在主 OB中调用,不能在循环中断OB中调用。
USS_PORT功能块是S7-1200与变频器USS通信的接口,主要设置通信的接口参数。可在主OB或中断OB中调用。
USS_RPM功能块是通过USS通信读取变频器的参数。必须在主 OB中调用,不能在循环中断OB中调用。
USS_WPM功能块是通过USS通信设置变频器的参数。必须在主 OB中调用,不能在循环中断OB中调用。
这些专用功能块与变频器之间的控制关系如下图所示:
图6: USS 通信功能块与变频器的控制关系
USS_DRV功能块通过USS_DRV_DB数据块实现与USS_PORT功能块的数据接收与传送,而USS_PORT功能块是S7-1200 PLC CM1241 RS485模块与变频器之间的通信接口。USS_RPM功能块和USS_WPM功能块与变频器的通信与USS_DRV功能块的通信方式是相同的。
每个S7-1200 CPU最多可带3个通信模块,而每个CM1241 RS485通信模块最多支持16个变频器。因此用户在一个S7-1200 CPU中最多可建立3个USS网络,而每个USS网络最多支持16个变频器,总共最多支持48个USS变频器。
5. 2 S7 1200 PLC进行USS通信的编程
1.USS通信接口参数功能块的编程
USS通信接口参数功能块的编程如下图所示。
图7: USS通信接口参数功能块的编程
USS_PORT功能块用来处理USS网络上的通信,它是S71200 CPU与变频器的通信借口。每个CM1241 RS485模块有且必须有一个USS_PORT功能块。
PORT:指的是通过哪个通信模块进行USS通信。
BAUD:指的是和变频器进行通行的速率。 变频器的参数P2010种进行设置。
USS_DB:指的是和变频器通信时的USS数据块。每个通信模块最多可以有16个USS数据块,每个CPU最多可以有48个USS数据块,具体的通信情况要和现场实际情况相联系。每个变频器与S7-1200进行通信的数据块是唯一的。
ERROR:输出错误。
STATUS:扫描或初始化的状态。
S7-1200 PLC与变频器的通信是与它本身的扫描周期不同步的,在完成一次与变频器的通信事件之前,S7-1200通常完成了多个扫描。
USS_PORT通信的时间间隔是S7-1200与变频器通信所需要的时间,不同的通信波特率对应的不同的USS_PORT通信间隔时间。下图列出了不同的波特率对应的USS_PORT最小通信间隔时间。
图8:不同的波特率对应的USS_PORT最小通信间隔时间
USS_PORT在发生通信错误时,通常进行3次尝试来完成通信事件,那么S7-1200与变频器通信的时间就是USS_PORT发生通信超时的时间间隔。例如:如果通信波特率是57600,那么USS_PORT与变频器通信的时间间隔应当大于最小的调用时间间隔,即大于36.1Ms而小于109Ms。S7-1200 USS 协议库默认的通信错误超时尝试次数是2次。
基于以上的USS_PORT通信时间的处理,我们建议在循环中断OB块中调用USS_PORT通信功能块。在建立循环中断OB块时,我们可以设置循环中断OB块的扫描时间,以满足通信的要求。循环中断OB块的扫描时间的设置如下图所示:
图9:循环中断OB块的扫描时间的设置
2.USS_DRV功能块的编程
USS_DRV功能块的编程如下图所示。
图10: USS_DRV功能块的编程
USS_DRV功能块用来与变频器进行交换数据,从而读取变频器的状态以及控制变频器的运行。每个变频器使用唯一的一个USS_DRV功能块,但是同一个CM1241 RS485模块的USS网络的所有变频器(最多16个)都使用同一个USS_DRV_DB。
USS_DRV_DB:指定变频器进行USS通信的数据块。
RUN: 指定DB块的变频器启动指令。
OFF2: 紧急停止,自由停车。 该位为0时停车。
OFF3: 快速停车,带制动停车。 该位为0时停车。
F_ACK: 变频器故障确认。
DIR : 变频器控制电机的转向。
SPEED_SP: 变频器的速度设定值。
ERROR: 程序输出错误。
RUN_EN: 变频器运行状态指示。
D_DIR: 变频器运行方向状态指示。
INHIBIT: 变频器是否被禁止的状态指示。
FAULT: 变频器故障。
SPEED: 变频器的反馈的实际速度值。
DRIVE: 变频器的USS站地址。变频器参数P2011设置。
PZD_LEN: 变频器的循环过程字。 变频器参数P2012设置。
注意:变频器的PKW的长度在这里是特殊需要注意的,在使用USS通信时必须是4,如果改成3或者127都将不能读取反馈回来的过程值。
3.USS_RPM功能块的编程
USS_RPM功能块的编程 如下图所示。
图11:USS_RPM功能块的编程
USS_RPM功能块用于通过USS通信从变频器读取参数。
REQ: 读取参数请求。
DRIVE: 变频器的USS站地址。
bbbbb: 变频器的参数代码。
INDEX: 变频器的参数索引代码
USS_DB: 指定变频器进行USS通信的数据块。
DONE: 读取参数完成。
ERROR: 读取参数错误。
STATUS: 读取参数状态代码。
VALUE: 所读取的参数的值。
注意:进行读取参数功能块编程时,各个数据的数据类型一定要正确对应。如果需要设置变量读取参数时,注意该参数变量的初始值不能为0,否则容易产生通信错误。
4.USS_WPM功能块的编程
USS_WPM功能块的编程如下图所示。
图12:USS_WPM功能块的编程
USS_WPM 功能块用于通过USS通信设置变频器的参数。
REQ: 读取参数请求。
DRIVE: 变频器的USS站地址。
bbbbb: 变频器的参数代码。
INDEX: 变频器的参数索引代码。
EEPROM:把参数存储到变频器的EEPROM。
VALUE: 设置参数的值。
USS_DB: 指定变频器进行USS通信的数据块。
DONE: 读取参数完成。
ERROR: 读取参数错误状态。
STATUS: 读取参数状态代码。
注意:对写入参数功能块编程时,各个数据的数据类型一定要正确对应。如果需要设置变量进行写入参数值时,注意该参数变量的初始值不能为0,否则容易产生通信错误。
5. 3 S7 1200 PLC进行USS通信的调试
S7-1200 PLC 通过CM1241 RS485模块与变频器进行USS通信时,需要注意如下几点:
当同一个CM1241 RS485 模块带有多个(最多16个)USS变频器时,这个时候通信的USS_DB是同一个,USS_DRV功能块调用多次,每个USS_DRV功能块调用时,相对应的USS站地址与实际的变频器要一致,而其它的控制参数也要一致。 当同一个S7-1200 PLC 带有多个CM1241 RS485模块(最多3个)时,这个时候通信的USS_DB相对应的是3个,每个CM1241 RS485模块的USS网络使用相同的USS_DB,不同的USS网络使用不同的USS_DB。 当对变频器的参数进行读写操作时,注意不能同时进行USS_RPM和USS_WPM的操作,并且同一时间只能进行一个参数的读或者写操作,而不能进行多个参数的读或者写操作。在S7-1200 PLC 与变频器的USS通信的实际使用过程中,需要根据网络的现场情况,对问题进行具体的解决。
关键词
USS 协议,S7-1200,G120,变频器