1. 硬件列表
2. 组态和配置
1) 新建项目
2) 创建CPU300站点
3) 组态ET200S 1SI
4) 设置协议ASCII
3. 编写通信程序
1) 逻辑地址的填写
2) 调用发送接收功能块FB3、FB2
3) 创建发送DB块和接收DB块
4. 设备连接
5. 通信测试
1) 设置串口调试调试软件
2) ET200S 1SI 与调试软件测试通信数据
设备名称 |
设备型号 |
|
PS 307 |
6ES7 307-1EA00-0AA0 |
|
CPU 317-2PN/DP |
6ES7 317-2EK14-0AB0 |
|
MMC |
6ES7 953-8LG11-0AA0 |
|
ET200S 接口模块 | 6ES7 151-1BA01-0AB0 | |
PM-E电源模块 | 6ES7 138-4CA00-0AA0 | |
1SI串口模块 |
6ES7 138-4DF01-0AB0 |
|
功率模块的终端模块 | 6ES7 193-4CD20-0AA0 | |
|
6ES7 193-4CA40-0AA0 |
1、打开STEP7,点击File->New...创建一新项目,项目名称为 et200s ASCII,如图 1 所示。
图1 新建项目对话框
2、用鼠标右键点击项目名称,选择Insert New Object->SIMATIC 300 Station,更改站的名称为317-2PN/DP ,如图 2 所示。
图2 插入S7-300站
3、双击Hardware进入硬件组态界面,插入机架、CPU和ET200S标准从站模块,如下图 3 所示,注意所选串行接口模块为32字节的1SI ASCII (这里仅考虑数据传输的吞吐率,不考虑占用的I/O存储区的大小)。
图3 组态硬件
4、双击1SI ASCII模板,点击Parameter,配置串口通信参数,如图 4 所示。
图4 参数分配
本例中,“Interface”设为RS232C接口,勾选断线诊断,流量控制:无。通信波特率:9.6kb/s,数据位:8位,停止位:1位,奇偶效验:无,字符延迟时间:4ms,其他的参数都采用默认设置。
注意:设定的参数要和通讯伙伴的相同。
部分参数说明:
1).接口的选择
图5 接口设置
三种接口中:RS232C和RS422接口可以选择“断线检测”和“数据流量控制” 的功能, RS485/422可以设置“接收线路的初始化状态”。
2).字符桢的格式:支持10位和11位的字符桢格式,包括数据传输的波特率,数据位,停止位和奇偶校验位。
3).接收字符桢结束判断条件
图6 结束判断条件
On expiration of character delay time: 以固定的字符延迟时间为每帧数据的结束方式;
On receipt of end-of-text character: 以结束字符作为每帧数据的结束方式;
On receipt of fixed number of characters: 以固定的字符长度作为每帧数据的结束方式。
4).缓冲区处理方式
图7 缓冲区设置
Dynamic Message frame buffer:如果勾上,模块就可以缓冲多个不同长度的消息;
Prevent message frame buffer overwrite:如果勾上,防止接收到的新消息覆盖缓冲区中的消息桢,这可以防止丢失以前接收到的消息桢;
Delete receive buffer during CPU startup:如果勾上,当CPU的工作模式从STOP切换到RUN(CPU启动)时,模块的接收缓冲区自动清空。
更多关于串口接口模块的组态和参数设置,请参考手册《ET 200S 串行接口模块》第2.9章节的内容,手册链接请参考本文档第5章节。
1、双击OB1,打开OB1编程画面,从库Libraries -> ET200s SI -> ET200S Serial Interface -> ET200s SI中调用功能块,调用发送 FB3(S_SEND)和接收 FB2(S_RCV),并为其分配背景数据块分别为DB30和DB20,将块参数LADDR设为硬件组态中1 SI模块的起始逻辑地址256,如图 8 所示。
注意:STEP 7 软件中不包含ET200s 1SI模块做串口通讯的功能块,需要安装“ET200S 1SI 串行接口模块的函数块、实例和用户手册”的软件,链接请参考本文档第5章节。
图8 ET200S串口模块的逻辑地址
2、创建发送数据块DB1和接收数据块DB2,如图 9 所示。
图9 发送/接收数据块DB1/DB2
3、调用发送功能块,设置参数,如图 10 所示。
图10 调用FB3 S_SEND
ET200S 1SI 的发送功能块FB3 S_SEND的参数设置,如下表。
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串行接口模块手册获得相应的说明 |
4、调用接收功能块,设置参数。
图11 调用FB2 S_RCV
ET200S 1SI的接收功能块FB2 S_RCV的参数设置,如下表。
LADDR |
硬件组态中串口模块的起始逻辑地址,本例中为256 |
DB_NO |
接收数据块号,本例中为2(DB2) |
DBB_NO |
接收数据的起始地址,本例中为0(DB2.DBB0) |
LEN |
接收数据的长度,本例中为MW4,只有在接收到数据的当前周期,此值不为0 ,需要编程读出 |
EN_R |
使能接收位,本例中为M0.1 |
R |
取消通讯,本例中不用 |
COM_RST |
如果为1 ,重新启动FB,本例中为M0.2 |
NDR |
接收完成位,接收完成并没有错误时为TRUE |
ERROR |
错误位,为TRUE时说明有错误 |
STATUS |
状态字,标识错误代码,查看ET200S串行接口模块手册获得相应的说明 |
以RS232C的方式接线为例说明,ET200S 1SI 模块按照RS232C的接线方式连接到电脑的232口,连接示意图,如图 12 所示。
图12 硬件结构和接线示意图
使用串口调试软件来测试ET200S 1SI和计算机的通信,步骤如下。
1、参数分配:串口选择COM1(默认),传输波特率为9.6Kb/s, 8位数据位,无校验,1位停止位,这些参数要和ET200s中1SI ASCII模块设置一致,同时将串口调试软件打开,如图 13 所示。
图13 串口调试软件参数设置
2、ET200S 1SI发送数据,调试软件接收数据
首先将硬件配置和程序下载到PLC,将DB1中前10个字节设为十六进制的01 02 03 04 05 06 07 08 09 10 ,然后将FB3的M0.0从FALSE置成TRUE,ET200S将发送数据10个字节数据,可以从串口调试软件的接收字符窗口中看到收到的数据(十六进制),测试结果如图 14 所示。
图14 ET200S 1SI发送数据调试软件接收数据测试结果
3、调试软件发送数据,ET200S 1 SI接收数据
将FB2的M0.1设为TRUE,使能ET200S 接收。在PC机的串口软件打开,在发送字符输入窗口输入16进制数据11223344556677889900,然后点击“手动发送”按钮发送数据,则在PLC侧DB2的前10个字节能接收到数据,接收的长度为10,测试结果如图 15 所示。
图15 调试软件发送数据ET200S 1SI接收数据测试结果