ET200S 1 SI 通讯模块 FB3 S_RECV_SI 声明变量表中各个参数的详细含义

小弟在使用ET200S 1 SI ASCII 通讯模块调用的接收功能块FB3 S_RECV_SI有很多不解。EN_R是启动模块接收。NDR表示请求结束且没有错误。我不明白是当EN_R为1时,NDR什么时候为1呢?谁能解释一下S_RECV_SI声明变量表中每个参数的详细含义,和具体用法。尤其是NDR什么时候为1 ,又什么时候变为0的。

问题补充:
既然模块一直在接收数据,那么模块是怎么知道NDR “作业已完成且无错/数据已接受”的呢?还有模块本次接收完数据后NDR=1,是永远等=1,还是只产生一个正向沿呢?还有模块是如何启动下一次接收的呢?NDR的状态是多少?

最佳答案

1、FB S_RCV:从通讯伙伴接收到的数据 :
S_RCV FB 将数据从 ET 200S 1SI 模块传输到 S7 数据存储区(由 DB_NO 和 DBB_NO 参数指定)。为了进行数据传输,将循环调用 S_RCV FB,或者在时间控制的程序中静态(无条件)调用 S_RCV FB。
EN_R 参数的(静态)信号状态为“1”时会启用检查,以确定是否从 ET 200S 1SI 模块读取
数据。EN_R 参数处的信号状态为“0”可以取消活动的传输事件。取消的接收作业终止,且生
成错误消息(STATUS 输出)。只要 EN_R 参数处的信号状态为“0”,就会禁用接收。根据
数据量的大小,数据可能通过多次调用(程序周期)进行传输。
如果功能块检测到“R”参数处的信号状态为“1”,则将取消当前的传输作业并将 S_RCV FB 
复位为其初始状态。只要 R 参数处的信号状态为“1”,就会禁用接收。如果信号状态返回
“0”,则从头重新开始接收已取消的消息帧。
要寻址的 ET 200S 1SI 模块的地址在 LADDR 参数中指定。
NDR 输出指示“作业已完成且无错/数据已接受”(已读取所有数据),ERROR 指示是否发
生了错误。在 STATUS 中,如果出现错误将显示错误编号。如果接收缓冲区的 2/3 以上区域已
满,则在每次调用 S_RCV 后 STATUS 都包含警告。如果未出现错误或警告,则状态值为
“0”。
当复位 S_RCV FB(LEN 参数 == 16#00)时,还将输出 NDR 和 ERROR/STATUS。如果出现错误,则复位二进制结果。如果块终止且无错,则二进制结果的状态为“1”
2、详见下述文档中 2.10.3 FB2 S_RCV 功能块 :
ET 200S 串行接口模块,下载:
http://www.ad.siemens.com.cn/products/as/download/pdf/ET%20200S%20%20%B4%AE%D0%D0%BD%D3%BF%DA%20%C4%A3%BF%E9%20%B2%D9%D7%F7%CB%B5%C3%F7%20%B0%E6%B1%BE%202005-08.pdf

提问者对于答案的评价:
谢谢你,要是再帮忙解决一下我的问题补充就更好了。呵呵

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc302350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐