编辑: 于世美 | 2019-07-09 |
更多实用资料请登录方正智芯官网:www.founderchip.com 作者:北岛李工 上一篇文章我们介绍了西门子S7-300的CP340/CP341串口模块,今天我们来聊聊分布式系统ET200S的串口模块1 SI. ET200S的串口模块1SI 有两种型号: 第一种(订货号:6ES7 138-4DF01-0AB0)支持RS232\RS422\RS485的电气接口,两种软件协议:ASCII和9346R,下图 是博途v13硬件组态中对该模块的描述: 第二种(订货号:6ES7 138-4DF11-0AB0)支持RS232\RS422\RS485的电气接口,两种软件协议:Modbus和USS,博途v13的硬件描述如下图: 也就是说,两种1 SI模块支持的电气接口都是一样的,但是软件的协议不同.还记得在CP340系列中,西门子根据电 气接口的不同,分成了三种模块,CP340-RS232,CP340-20mA-TTY,CP340-RS422\RS485,但是ET200S的1 SI串行 模块可以同时适应三种电气的接口,你只需要根据不同的电气接口要求,连接不同的端子就可以了.但是要注意,接线 完成后,必须在硬件组态中设置相应的接口类型.至于怎么设置我们将在下文的硬件组态中介绍, 先来看下1 SI串口模 块的芳容: RS232C电气接口的端子定义如下(注意:和我们以前讲的9针D型串口的定义是不一样的): 端子1:发送数据 端子2:请求发送数据 端子3:数据终端就绪 端子4:数据载波检测 端子5:接收数据 端子6:允许发送 端子7:数据发送就绪 端子8:信号地 最简单的RS232接线方式可以把端子1(TxD)与通信伙伴的RxD相连,把端子5(RxD)与通信伙伴的TxD相连,然后把端 子8(PE)与通信伙伴的信号地(PE)相连接.下图是两个模块的RS232电气连接示意图: 如果你需要了解流控制的相关知识,请看前面我写过的文章"工业串口通信之有话好好说". 如果你需要用该模块进行RS422通信(全双工),请看下图: 端子1:发送数据(-) 端子2:发送数据(+) 端子5:接收数据(-) 端子6:接收数据(+) 端子8:信号地 如果你使用该模块进行RS485通信(半双工),端子定义如下: 注意:对于RS422和RS485,若通信的距离超过50米,建议增加一个330欧姆左右的终端电阻以保证通信的效果. 介绍完电气如何接线,接下来我们介绍下硬件的组态和软件的编程: 在Step7的硬件组态中,1 SI的目录有18个选项,如下图: 如下图: 以ASCII为例,可选项包括:
1 SI ASCII (32 Byte)
1 SI ASCII (4 Byte)
1 SI ASCII (8 Byte) 这里括号里的字节表示数据吞吐率,字节数越大,吞吐率越大,数据传输的速度越快,但同时在ET200S上占用的I/O 存储区也越多.32 Byte 传输速率最大;
4 Byte占I/O存储区最小.鱼与熊掌不可兼得,具体怎么用视现场实际情况而 定. 博途v13中该模块的组态在"Communications modules"-"1 SI"中,只有两种可以选择: 可以在"Adress area"中选择占用的I/O字节数,即上面提到的吞吐率;
在"protocol"中选择使用的软件协议:ASCII或3964R;
第二种模块(订货号:6ES7 138-4DF11-0AB0)可以选择Modus协议或USS协议,如下图: 前面我们提到过需要在硬件组态中设置电气接口的类型,Step7中在1SI模块的属性Interface中选择,如下图: 在博途v13中你需要首先选择通信协议(protocol),然后在下面的协议中选择接口类型(interface),比如选择ASCII协议,在ASCII中就会有Interface的选项,如下图: 接口配置好之后,还需要设置通信协议的具体参数,比如ASCII协议中的波特率,数据位,停止位等等,这里我们就不 再赘述了,如果你不太清楚的话,可以参考我们之前的文章的相关介绍. 硬件组态完成后,还需要在软件中调用相应的功能块完成通信.下面我们以博途v13为例介绍如何调用1 SI的串口通信 功能块. 首先新建一个功能块,然后在右边的指令列表中找到"通信处理器(Communication processor)"-"ET200S serial interface",这里面有1SI模块的很多通信功能块,如下图: 数据接收: 功能块S_RCV用来接收数据,它能接收ET200S 1SI模块的数据并把数据存到指定数据库(DB)的指定位置,该功能块的 调用界面如下图: 输入参数(Input): EN_R:使能数据接收,布尔量 R:取消请求,停止接收数据,布尔量 LADDR: ET200S 1SI 的硬件地址,整形变量 DB_NO:接收数据块的编号,整形变量,不能为0 DBB_NO:接收数据库的字节地址,整形变量 输出参数(Output): NDR:成功接收到新数据并且没有错误,布尔量 ERROR:接收过程中发生错误,布尔量 LEN:接收到的数据的长度,整形变量 STATUS:状态字 COM_RST:重启功能块,布尔量 数据发送 功能块S_SEND用来发送数据,该功能块从指定数据块(DB)的指定位置(DBB)传输指定长度(LEN)的数据到 ET200S 的1SI模块,并将数据通过1SI模块发送到通信线路中,功能块的调用界面如下图: 输入参数(Input): REQ:请求发送数据,上升沿,布尔量 R:取消发送请求,布尔量 LADDR: ET200S 1SI 的硬件地址,整形变量 DB_NO:发送数据块的编号,整形变量,不能为0 DBB_NO:发送数据块的字节地址,整形变量 LEN:发送的长度,整形变量 输出参数(Output): DONE:数据发送成功且没有错误,布尔量 ERROR:发送不成功,有错误产生,布尔量 STATUS:状态字,当有错误时,存放错误代码 COM_RST:重启功能块,布尔量 发送和接收的参数说明: 对于S7 300/400 的CPU,DBB_NO+LEN的范围为大于等于0,小于8190 对于S7-1500的CPU,DBB_NO+LEN的范围为大于等于0,小于等于DB块的大小 输出参数LEN的范围:大于等于1,小于等于224 到这里我们就把ET200S的串口模块1SI给大家介绍完了,从硬件接线,组态到软件的编程,你是否对这个模块有了更 深一步的理解了呢?如果你有什么问题,可以直接给公众号留言,我们进一步交流.下一篇文章我们将介绍紧凑型PLC S7-1200的串口模块,敬请期待. 扫描下面的二维码或登录www.founderchip.com,关注"方正智芯"的原创文章,提供工业控制领域(PLC,单片 机,嵌入式,工业通信)的技术和经验的分享,持续关注,持续进步.