上一篇文章我们介绍了西门子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的串口模块,敬请期待。
扫描下面的二维码,关注“方正智芯”的原创文章,提供工业控制领域(PLC,单片机,通信)的技术和经验的分享,持续关注,持续进步。
来源:本站| 大小:549 KB| 下载次数:1714次
发表评论