S7-1200 串行通信概述
- 格式:docx
- 大小:642.25 KB
- 文档页数:12
s7-1200之间通信实验报告一.通信前的准备首先创建新项目,并命名为“s7-1200之间通信”,如下图所示:然后组态设备,选择s7-1200的CPU 1214C DC/DC/RLY,版本号为4.1,如下图所示:打开项目后,选中PLC_1设备视图,选择下面的“属性”选项,再选择“系统和时钟存储器”,在右边的显示出的启用时钟存储器字节的复选框中打上勾,如下图所示:再选中PLC_1设备中以太网口,在以太网地址设置PLC_1的IP地址为:192.168.0.1,如下图所示:然后把PLC_1复制粘贴成PLC_2,同样地在以太网口那里设置PLC_2的IP地址为:192.168.0.2,之前的系统和时钟存储器已经设置好了,PLC_2不用再设了。
具体如下:在设备视图中转到拓扑视图,分别添加交换机和PC端,并将它们按照下图连接起来。
到这里通信前设备设置已经完成了。
二.程序编程在PLC_1项目中选择程序块打开main(OB1),在右边的通信项选择“开放式用户通信”中选择“TSEND_C”指令并拖放到main(OB1)中去并生成背景数据块DB1,名称为:TSEND_C_DB。
如下图所示:选中指令,弹出下面的组态画面,设置如下面所示,在连接类型选择TCP,在连接数据行中,在下拉菜单中选择新建,生成下面所示的画面。
在PLC_1项目中选择程序块打开main(OB1),在右边的通信项选择“开放式用户通信”中选择“TRCV_C”指令并拖放到main(OB1)中去并生成背景数据块DB2,名称为:TRCV_C_DB,如下所示:选中指令,弹出下面的组态画面,设置如下面所示,在连接类型选择TCP,在连接数据行中,在下拉菜单中选择新建,生成下面所示的画面:然后添加全局数据块,命名为send,如下图所示:在打开的全局数据块名称列命名为send,在数据类型选择数组并设置为array[0....99]of string,如下图:在选中send[DB5]中单击右键选择属性,将打勾的去掉。
S7-1200 Modbus RTU 通信概述Modbus具有两种串行传输模式:分别为ASCII和RTU。
Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1 - 247。
Modbus RTU通信以主从的方式进行数据传输,在传输的过程中Modbus RTU主站是主动方,即主站发送数据请求报文到从站,Modbus RTU从站返回响应报文。
S7-1200以下模块支持Modbus RTU通信:注意:1. 使用通信模块CM 1241 RS232作为Modbus RTU主站时,只能与一个从站通讯。
2. 使用通信模块CM 1241 RS485作为Modbus RTU主站时,则允许建立最多与32 个从站的通讯。
3. 使用通信板CB 1241 RS485时,CPU 固件必须为V2.0 或更高版本,且使用软件必须为STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。
S7-1200 Modbus RTU 指令随着TIA PORATL 软件和S7-1200 CPU 固件的不断更新,S7-1200 Modbus RTU 指令也出现了不同的版本。
用户需要根据使用的软件和硬件,正确选择使用符合要求的S7-1200 Modbus RTU 指令来实现Modbus RTU 通信。
软件,硬件要求和指令版本说明如下。
TIA PORTAL 中的S7-1200 Modbus RTU 指令TIA PORTAL 软件中提供了2个版本的Modbus RTU指令。
如下图1 所示:•早期版本的Modbus RTU 指令(图1. 中MODBUS (V2.2))仅可通过CM1241 通信模块或CB1241 通信板进行ModbusRTU 通信。
•新版本的Modbus RTU 指令(图1. 中MODBUS(RTU) V3.0)扩展了Modbus RTU 的功能,该指令除了支持CM1241 通信模块、CB1241 通信板,还支持PROFINET 或PROFIBUS 分布式I/O 机架上的PTP 通信模块实现Modbus RTU 通信。
S7-1200串行通信
通信模板缓存区多包数据超出1024字节
发送多个每包50个字节数据,当数据超过1024字节那包就被丢弃了,前面的可以正常接收,且没有任何报错.在前面数
据被成功接收以后,只要缓存区有空间,后面的数据还可以正常收到。
通信模板缓存区一包数据超出1024字节
如果发送数据一包就大于1024字节时,缓冲区接收到数据到1024字节时,虽然没有收到结束字符,数据由缓存区送给CPU,但会报错16#80E0,如下图。
图14.发送数据一包大于1024字节时,缓存区报错
通信模板缓存区复位
当缓冲区溢出报错时,需要使用Reset指令进行清除缓冲区的操作。
图15.使用Reset指令复位缓存区错误,恢复数据接收
为什么不能使用PC/PPI电缆与S7-1200RS485模块进行串口调试?
答:因为S7-1200RS485模块接口不提供24V电源,不能给PC/PPI电缆供电,所以电缆无法工作。
解决办法:可以将S7-1200RS485与S7-200通信口网络连接,将PC/PPI电缆插在S7-200通信口上总线连接器的
编程口上,对S7-1200RS485进行串口调试。
此时S7-200必须上电并打到停止状态。
连接5GND逻辑地或通信地金属壳-外壳接地。
串行通信简介一、并行通信与串行通信数据传输的两种方式为并行和串行。
并行通信传输中,一组数据的各数据位在多条线上同时被传输,以字或字节为单位并行进行。
并行通信使用的通信线路多、成本高,另外由于线路长度增加时,干扰增加,数据也容易出错,所以并行方式不适宜远距离通信,工业上很少使用。
串行通信使用一条数据线,将数据一位接一位地按顺序依次传输,每一位数据占据一个固定的时间长度,只需要较少的通信线路就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信,工业上广泛使用。
二、同步通信与异步通信串行通信一般又分为同步通信和异步通信。
同步通信收发设备需要使用一根同步时钟信号线,在时钟信号的驱动下双方进行协调,同步数据。
例如,通信中双方通常会统一规定在时钟信号的上升沿(或下降沿)对数据线进行采样。
异步通信则不需要同步时钟信号,而是采用字符同步的方式,字符帧格式如图12-59所示。
图12-59 异步通信的字符帧格式发送的字符由1个低电平起始位、7或8个传送信息数据位、1个奇偶校验位(可以没有)、1或2个停止位组成。
通信双方需要对采用的字符帧格式和数据的传输速率做相同的约定。
异步通信传送的附加位(非有效传送信息)较多,传输效率低,但随着通信速率的提高,可以满足控制系统通信的要求。
S7-1200 PLC采用异步通信方式。
提示:串行通信中,波特率指的是数据传输速率,即每秒传送的二进制位数,其符号为bit/s或bps。
三、单工、半双工与全双工通信单工通信只支持数据在一个方向上传输,不能实现双向通信,例如电视、广播。
半双工通信允许数据在两个方向上传输,但同一时刻只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。
在同一时间只可以有一方接收或发送信息,可以实现双向通信,如对讲机。
全双工通信允许数据同时在两个方向上传输,因此全双工通信是两个单工通信方式的结合。
在同一时间可以同时接收和发送信息,实现双向通信,如电话通信。
S7-1200 和 S7-1200 之间 S7 通信S7-1200 的 PROFINET 通信口可以做 S7 通信的服务器端或客户端(CPU V2.0及以上版本)。
S7-1200 仅支持 S7 单边通信,仅需在客户端单边组态连接和编程,而服务器端只准备好通信的数据就行。
硬件:1.CPU 1214C DC/DC/DC,V2.02.CPU 1214C DC/DC/DC,V4.1软件:1.Step7 V13 SP1所完成的通信任务:1.S7-1200 CPU Clinet 将通讯数据区 DB1 块中的 10 个字节的数据发送到 S7-1200 CPU server 的接收数据区 DB1 块中;2.S7-1200 CPU Clinet 将S7-1200 CPU server 发送数据区 DB2 块中的10 个字节的数据读到 S7-1200 CPU Clinet 的接收数据区 DB2 块中。
S7-1200之间 S7 通讯,可以分2种情况来操作,具体如下:1.第一种情况:两个 S7-1200 在一个项目中操作;2.第二种情况:两个 S7-1200 不在一个项目中的操作。
一. 第一种情况(同一项目中操作)使用 STEP 7 V13 在同一个项目中,新建两个S7-1200站点,然后做 S7 通讯。
1.1 使用 Step7 V13生成项目使用 STEP7 V13 创建一个新项目,并通过“添加新设备”组态 S7-1200 站client V4.1,选择 CPU1214C DC/DC/DC V4.1(client IP:192.168.0.10);接着组态另一个S7-1200站 server v2.0,选择 CPU1214C DC/DC/DC V2.0(server IP:192.168.0.12),如图 1 所示。
图 1 在新项目中插入2个 S7-1200 站点1.2 网络配置,组态 S7 连接在“设备组态”中,选择“网络视图”栏进行配置网络,点中左上角的“连接”图标,连接框中选择“S7连接”,然后选中client v4.1 CPU(客户端),右键选择“添加新的连接”,在创建新连接对话框内,选择连接对象“serverv2.0 CPU”,选择“主动建立连接”后建立新连接,如图 2 所示。
西门子S7-1200与第三方设备自由口通信详解西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。
因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。
1.控制系统原理图1:控制系统原理2.硬件需求S7-1200 PLC目前有3种类型的CPU:1)S7-1211C CPU。
2)S7-1212C CPU。
3)S7-1214C CPU。
这三种类型的CPU都可以连接三个串口通信模版。
本例中使用的PLC硬件为:1)PM1207电源 ( 6EP1 332-1SH71 )2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )3) CM1241 RS232 ( 6ES7 241 -1AH30 -0XB0 )3.软件需求1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)4.组态我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和超级终端通信。
点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:图2:新建S7 -1200项目首先需要选择“Create new project”选项,然后在“Project name:”里输入PTP;在“Path:”修改项目的存储路径为“C:\”;点击“Create”,这样就创建了一个文件PTP的新项目。
创建后的窗口如下图所示:图3:新建项目后点击门户视图左下角的“Project View”切换到项目视图下,如下图:图4:切换到项目视图打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。
选择后如下图:图5:PLC硬件组态插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS232模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS232模块硬件接口参数,选择RS232模块,在其下方会出现该模块的硬件属性配置窗口,在属性窗口里有两个选项,一个是“general”;一个是“RS232 interface”。
S7-1200 串行通信详解S7-1200支持的串行通讯方式
•点对点(PtP)通信
•Modbus 主从通信
•USS 通信
S7-1200 串口通信模块的特征
图1. 串口通信模块
1. 由CPU 供电,不必连接外部电源
2. 端口经过隔离,最长距离1000 米
3. 有诊断LED 及显示传送和接收活动LED
4. 支持点对点协议
5. 通过扩展指令和库功能进行组态和编程
RS485 与RS232 通信模块的LED
诊断LED 灯
•红闪:如果CPU 未正确识别到通信模块,诊断LED 会一直红色闪烁•绿闪:CPU 上电后已经识别到通信模块,但是通信模块还没有配置•绿灯:CPU 已经识别到通信模块,且配置也已经下载到了CPU
发送LED 灯
•代表数据正在通过通信口传送出去
接收LED 灯
•代表数据正在通过通信口接收进来
注意:通信板CB1241 只有发送和接收LED 灯,而没有诊断LED 灯
串口模板支持的协议
•ASCII
•USS
•Modbus RTU Master protocol
•Modbus RTU Slave protocol
ASCII 协议的特点
•报文可以由用户自己定义,便于用户以ASCII 协议为基础开发
•使用简单,可以很好地实现与第三方系统的通讯
•可以进行识别报文结束设置
•可以进行数据流量控制
•缺点:具有简单的校验功能(奇偶校验),低数据安全性;数据传输无确认信息;通讯需要双方协调
S7-1200 的PTP 校验
串口的校验:奇偶校验:用于检验数据传递的正确性,是最简单的检错方法。
图2. 校验设置
•偶校验:如果每字节的数据位中“1”的个数为奇数,则校验位为1,如果个数为偶数,则校验位为“0”,
保证数据位和校验位中“1”的个数是偶数
•奇校验:如果每字节的数据位中“1”的个数为奇数,则校验位为0,如果个数为偶数,则校验位为“1”,
保证数据位和校验位中“1”的个数是奇数
•传号校验:奇偶校验位始终设置为1
•空号校验:奇偶校验位始终设置为0
注意:奇偶校验可以简单的判断数据的正确性,从原理上可看出当一位出错,可以准确判断,当两位或更多位误码就校验不出,但由于其实现简单,仍得到了广泛使用。
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必须上电并打到停止状态。
连接5 GND 逻辑地或通信地金属壳- 外壳接地。