回复:串口服务器 Modbus-RTU 主站库 (基于OUC之UDP协议)

已锁定

yanxiao

版主

  • 帖子

    12143
  • 精华

    46
  • 被关注

    183

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2023-04-12 00:32:29

10楼

展开查看
以下是引用不欲勿施在2023-04-12 00:23:50的发言 >9楼

2、这个库程序,只负责通讯的,不包括数据如何处理。12个位,字节内其它4位置0,由用户程序自己处理;

这就有点勉强了,官方的指令可不是这样处理的。


3、从站忙是从站响应的,这个如果从站有错误码6,你可以看到。从站忙到 无响应,那是超时错误。

官方的从站忙6号错误,不是从站发回的。

以下是引用yanxiao在2023-04-12 00:11:55的发言 >7楼:1、如果是CRC校验...

引用7楼详细内容:

1、如果是CRC校验错误,直接就扔了该条信息,因为不确定该条信息是从站回应的。

不过,这个CRC错误,可以开放出来,错误码定为16。

2、这个库程序,只负责通讯的,不包括数据如何处理。12个位,字节内其它4位置0,由用户程序自己处理;

3、从站忙是从站响应的,这个如果从站有错误码6,你可以看到。从站忙到 无响应,那是超时错误。

4、优先策略,是主程序的事。你可以让所有的REP=0,也就是不自动循环轮询。要通讯的参数块的REQ=1,它就进入通讯,完了自动复位REQ,等待下一次置位。

5、掉站。我记得 芳季 说过,那一个站掉了,程序还能无事一样运行。

超时时间是每个通讯单独设置的,当然可以统一为100ms之类的。让掉站影响最小,可为每一个通讯具体计算一个合适的超时时间。

每个参数块内有两个计数器,分别为通讯成功 和通讯 失败。掉站可以由主程序来监控判断。


总之一点,这个库程序不做全部的事,但是开放一些必要的数据接口供主程序进一步处理。

以下是引用不欲勿施在2023-04-11 23:49:25的发言 >:楼主,仔细看我的提...

引用详细内容:

楼主,仔细看我的提问

1、程序没有CRC校验错误反馈。不是说你的程序没有CRC校验,我说的是没有CRC校验错误反馈。

2、当执行功能15时,也就是写数字量输出时,比如向从站写12个位,那个第二个字节的高4位会置0吗?

3、程序里没有Modbus正在忙于其它请求反馈。也就是官方指令的错误6.

4、实现指令轮询很简单,我是用户,我没法用你的指令实现写优先,掉站等功能

1、这个库,和官方库没得比。走的路线就不一样。


2、关于从站忙:

的确是从站响应的。

应对这个响应,状态字节给出的错误码为16#A6,根据 D 0 E ErrCode结构,低5BIT为错误码,所以这个6号码是可以见到 的。


另外,库指令不设重发机制,因为可以自动循环,一旦出错,下次轮到再通讯。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8936条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。