串口通讯之ET200S 1SI模块进行ASCII通讯
1. 概述
串口模块ET200S 1SI(订货号:6ES7 138-4DF01-0AB0)是一款用于ET200S上的串口模块,支持两种软件协议(ASCII和3964(R)),通过接线区分可支持三种硬件接口(RS232C、RS422和RS485)。
在Step 7硬件组态中选择模块时,硬件目录中有以下六种版本的模块:
• ASCII (4B)
• ASCII(8B)
• ASCII(32B)
• 3964(R) (4B)
• 3964(R) (8B)
• 3964(R) (32B)
4/8/32字节代表数据传输的吞吐率大小,字节数越大,吞吐率越大,即数据传输越快,但是在ET200S机架上占用的I/O存储区也越多,如果从传输速率考虑,选择32B最快,如果从占用的I/O区最小考虑,选择4B占用最少,根据具体应用要求选择。
模块信息及指示灯含义,如下图1所示。
串口通讯之ET200S 1SI模块进行ASCII通讯
图1 模块指示灯含义 RS232C、RS422和RS485三种接口通讯的终端模块端子分配和电缆连接,如下图2/3/4所示。
串口通讯之ET200S 1SI模块进行ASCII通讯
图2-1 RS232C接口终端模块端子分配
串口通讯之ET200S 1SI模块进行ASCII通讯
图2-2 RS232C接口终端模块电缆连接
串口通讯之ET200S 1SI模块进行ASCII通讯
图3-1 RS422接口终端模块端子分配
串口通讯之ET200S 1SI模块进行ASCII通讯
图3-2 RS422接口终端模块电缆连接
串口通讯之ET200S 1SI模块进行ASCII通讯
图4-1 RS485接口终端模块端子分配
串口通讯之ET200S 1SI模块进行ASCII通讯
图4-2 RS485接口终端模块电缆连接 注意:RS485接口内部已经短接,不需要外部短接处理,只要直接连接1,2,8。
2. 软件环境
2.1 STEP7 V5.4 SP5
用于编写S7-300/400程序,此软件需要从西门子购买,本文档中的部分代码使用Step7 V5.4 SP5的软件编写。 2.2 ET200S 1SI 串行接口模块的功能块
STEP 7 软件中不包含ET200s 1SI模块做串口通讯的功能块,需要单独安装一个软件,然后在Libraries下才有ET200sSI的库,功能块可供通讯调用,该软件从以下的链接下载。25358470 2.3 串口调试器
第三方提供的串口调试工具,可以从互联网上免费下载,可用于测试串口通讯。
3. 硬件列表和接线
3.1 硬件列表 CPU | CPU317-2PN/DP | 6ES7 317-2EK14-0AB0 | ET200S | 接口模块 | 6ES7 151-1BA01-0AB0 | | 功率模块 | 6ES7 138-4CA00-0AA0 | | 1 SI串口模块 | 6ES7 138-4DF01-0AB0 | 功率模块的终端模块 | TM-P15S23-A0 | 6ES7 193-4CD20-0AA0 | 电子模块的终端模块 | TM-E15C24-01 | 6ES7 193-4CA30-0AA0 |
表1 硬件设备 3.2 硬件接线示意图
以RS232C的方式接线为例说明,1 Si 模块按照RS232C的接线方式连接到电脑的232口,连接示意图如下所示。
串口通讯之ET200S 1SI模块进行ASCII通讯
图5 硬件结构和接线示意图
4.组态设置和编程
4.1 组态和配置 1.打开STEP7,点击File->New...创建一新项目,项目名称为et200s ASCII。
串口通讯之ET200S 1SI模块进行ASCII通讯
图6新建项目对话框 2.用鼠标右键点击项目名称,选择Insert New Object->SIMATIC 300 Station,更改站的名称为 317-2PN/DP ,如下图7所示。
串口通讯之ET200S 1SI模块进行ASCII通讯
图7 插入S7-300站 3. 在硬件组态中按订货号和硬件安装次序依次插入机架、CPU和ET200S标准从站模块,如下图8所示,注意所选串行接口模块为32字节的1SI ASCII (这里仅考虑数据传输的吞吐率,不考虑占用的I/O存储区的大小)。
串口通讯之ET200S 1SI模块进行ASCII通讯
图8组态硬件 4.双击1 SI ASCII 模块,点击Parameter选项,配置串口通信 参数。
串口通讯之ET200S 1SI模块进行ASCII通讯
图9 参数分配 本例中,“Interface”设为RS232C接口,勾选断线诊断,流量控制:无。通信波特率:9.6kb/s,数据位:8位,停止位:1位,奇偶效验:无,字符延迟时间:4ms,其他的参数都采用默认设置。注意:设定的参数要和通讯伙伴的相 同。 部分参数说明: 1.接口的选择
串口通讯之ET200S 1SI模块进行ASCII通讯
图10 接口设置 三种接口中:RS232C和RS422接口可以选择“断线检测”和“数据流量控制” 的功能, RS485/422可以设置“接收线路的初始化状态”。
2.字符桢的格式:支持10位和11位的字符桢格式,包括数据传输的波特率,数据位,停止位和奇偶校验位。
3.接收字符桢结束判断条件
串口通讯之ET200S 1SI模块进行ASCII通讯
图11 结束判断条件 On expiration of character delay time: 以固定的字符延迟时间为每帧数据的结束方式;
On receipt of end-of-text character: 以结束字符作为每帧数据的结束方式;
On receipt of fixed number of characters: 以固定的字符长度作为每帧数据的结束方式。
4.缓冲区处理方式
串口通讯之ET200S 1SI模块进行ASCII通讯
图12 缓冲区设置 Dynamic Message frame buffer:如果勾上,模块就可以缓冲多个不同长度的消息;
Prevent message frame buffer overwrite:如果勾上,防止接收到的新消息覆盖缓冲区中的消息桢,这可以防止丢失以前接收到的消息桢;
Delete receive buffer during CPU startup:如果勾上,当CPU的工作模式从STOP切换到RUN(CPU启动)时,模块的接收缓冲区自动清空。
更多关于串口接口模块的组态和参数设置,请参考手册《ET 200S 串行接口模块》第2.9章节的内容,手册链接:9260793 4.2 编程 4.2.1 PLC侧编程 1.程序调用:从库Libraries -> ET200s SI -> ET200S Serial Interface -> ET200s SI中调用功能块,调用发送 FB3(S_SEND)和接收 FB2(S_RCV),并为其分配背景数据块分别为DB30和DB20,将块参数LADDR设为硬件组态中1 SI模块的起始逻辑地址256。
串口通讯之ET200S 1SI模块进行ASCII通讯
图13 ET200S串口模块的逻辑地址
2.创建发送数据块DB1和接收数据块DB2
串口通讯之ET200S 1SI模块进行ASCII通讯
图14发送/接收数据块DB1/DB2 3.调用发送功能块
ET200S 1SI 的发送功能块FB3 S_SEND 的参数设置见下表2。 LADDR | 硬件组态中串口模块的起始逻辑地址,本例中为256 | DB_NO | 发送数据块号,本例中为1(DB1) | DBB_NO | 发送数据的起始地址,本例中为0(从DB1.DBB0开始) | LEN | 发送数据的长度,本例中为10 | REQ | 发送数据触发位,上升沿触发,本例中为M0.0 | R | 取消通讯,本例中不用 | COM_RST | 如果为1 ,重新启动FB,本例中为M0.2 | DONE | 发送完成位,发送完成且没有错误时为TRUE, | ERROR | 错误位,为TRUE说明有错误 | STATUS | 状态字,标识错误代码,察看ET200S串行接口模块手册获得相应的说明 |
表2 FB3 S_SEND 的参数定义
串口通讯之ET200S 1SI模块进行ASCII通讯
图15 在程序中调用FB3 S_SEND 4.调用接收功能块
ET200S 1SI的接收功能块FB2 S_RCV的参数设置见下表3。 LADDR | 硬件组态中串口模块的起始逻辑地址,本例中为256 | DB_NO | 接收数据块号,本例中为2(DB2) | DBB_NO | 接收数据的起始地址,本例中为0(DB2.DBB0) | LEN | 接收数据的长度,本例中为MW4,只有在接收到数据的当前周期,此值不为0 ,需要编程读出 | EN_R | 使能接收位,本例中为M0.2 | R | 取消通讯,本例中不用 | COM_RST | 如果为1 ,重新启动FB,本例中为M0.2 | NDR | 接收完成位,接收完成并没有错误时为TRUE | ERROR | 错误位,为TRUE时说明有错误 | STATUS | 状态字,标识错误代码,查看ET200S串行接口模块手册获得相应的说明 |
表3 FB2 S_RCV的参数定义
串口通讯之ET200S 1SI模块进行ASCII通讯
图16 在程序中调用FB2 S_RCV 4.2.2 PC机参数设置
参数分配:串口选择COM1(默认),传输波特率为9.6Kb/s, 8位数据位,无校验,1位停止位,这些参数要和ET200s中1SI ASCII模块设置一致,同时将串口调试软件打开。
串口通讯之ET200S 1SI模块进行ASCII通讯
图17 串口调试软件参数设置 4.3 通讯测试 1.ET200S 1SI发送数据,调试软件接收数据
首先将硬件配置和程序下载到PLC,将DB1中前10个字节设为十六进制的01 02 03 04 05 06 07 08 09 10 ,然后将FB3的M0.0从FALSE置成TRUE,ET200S将发送数据10个字节数据,可以从串口调试软件的接收字符窗口中看到收到的数据(十六进制),结果如下图18所示。
串口通讯之ET200S 1SI模块进行ASCII通讯
图18 ET200S 1SI发送数据调试软件接收数据测试结果 2.调试软件发送数据,ET200S 1 SI接收数据
首先将硬件配置和程序下载到CPU中,将FB2的M0.1设为TRUE,使能ET200S 接收。在PC机的串口软件打开,在发送字符输入窗口输入16进制数据1122334455667788 9900,然后点击“手动发送”按钮发送数据,则在PLC侧DB2的前10个字节能接收到数据,接收的长度为10,测试结果如下。
串口通讯之ET200S 1SI模块进行ASCII通讯
图19调试软件发送数据ET200S 1SI接收数据测试结果
5.总结
本文档以串口模块ET200S 1SI和PC机之间的通讯简单介绍了ASCII协议的组态设置和编程
|