打印

请问 斑竹 modbus里读取线圈状态指的是啥呀?啥线圈呀?

[复制链接]
12829|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rockingliu|  楼主 | 2007-8-22 21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
来自 2楼
chunyang| | 2007-8-23 14:47 | 只看该作者

楼主的理解还没有到位,大致谈一下协议的层次

    通讯协议从层次上讲可分为3层,最低的物理层协议和最高的应用层协议,中间的则是传输层协议,层次越高越严格。就拿上网举个例子。
    Modem的信号传输本身是有协议的,不同Modem的协议是不同的,ADSL、Cable Modem、电话线Modem等都不同,即使同类Modem也有不同版本号,具体内容也不同,所以,很大程度上这个层次的协议是不兼容的,这就是物理层协议的特点,这一层次的协议首先要基于传输手段和载体,不兼容是物理需要的结果。
    再上一层的是TCP/IP,到这个层次就已经可能是统一的了,这是传输层协议的特点,至少在某一类应用上传输层协议可能是兼容的,比如Internet这个应用,但不同的应用如局域网的TCP/IP就可能有不同了,早期的局域网就是如此。
    到了应用层,只要应用相同就必须兼容,如不同操作系统下的各种浏览器、电子邮件等等,这一层次的协议如果涉及到完全不同的平台也要求严格兼容。当然,能否做到兼容就是另一回事了,至少兼容是目标。
    在应用上,高层次的协议往往依附在低层次的协议上,层与层之间则是“透明”的。从复杂性上讲,层次越高的协议会越复杂。
    Modbus论层次仅仅属于传输层协议,而USB则是物理层协议、传输层协议和应用层协议的整合,所以你会看到Modbus在不同应用中有截然不同的结构,但USB只要它叫USB并且版本相同,不论在什么设备上都是兼容并可互连的,层次在这是决定因素。

使用特权

评论回复
板凳
chunyang| | 2007-8-23 00:29 | 只看该作者

这是因为在国内Modbus主要用于电力行业

电力输配电设备里的接触器线圈。不过Modbus本身并非为电力行业设计,而是通用的。

使用特权

评论回复
地板
rockingliu|  楼主 | 2007-8-23 09:00 | 只看该作者

2th

oh,那定义自己的应用时,对应的命令代号 比如这个 01(他是读线圈) ,可不可以自己定应成别的应用含义?  这样算不算不符合 modbus规范??

TKS 斑竹

使用特权

评论回复
5
chunyang| | 2007-8-23 13:00 | 只看该作者

如果不需要与别人的产品在通讯上互连,自己可以随便定义

    可以说,10余年来,我一直在宣扬Modbus的理念,在21IC也这么做了数年,我设计的有线/无线网络方面的应用,很多就是采用了Modbus的协议结构,但均为Modbus的变形,而且随需求的不同而各有不同。
    思想是根本,形式则要适应应用,电力行业已有其标准,那就得遵守,毕竟那是有“讲究”的,也是经过大量实践验证、修正后的结果,但非电力行业或自成体系的应用自然就不必拘泥于形式了,可靠性和效率应当兼顾。搞技术,标准一定要遵守,但教条主义则要坚决反对。

使用特权

评论回复
6
rockingliu|  楼主 | 2007-8-23 13:49 | 只看该作者

呵呵

多谢春帮主的留言。

个人感觉,modbus协议还不是一个很严格的协议,至少不像Usb协议那样细致严格.他还算不上一种通用标准。because他的回旋余地还很大。
看到很多资料上都提到"它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络"之类的话。感觉也是在夸大。

1.比如说对于 function code的定义,即便是在的电力行业,除了1-21是公共标准,其余的包括异常应答code,都是没有一个统一的标准的,这给不同的使用者以很大的发挥空间,这显然就造成了 modbus的不标准。还有比如像那个crc校验,虽然modbus有规定使用16bit crc, 但16bit_crc,本身就有 crc16和crc CCITT 两种生成多项式之分。对于这些不确定性,不同宣称使用modbus的厂家的东西如何互联呢??除非这几个厂家事先约定好。不然 我看只有本厂家和本厂家的产品可以互联。

so,modbus 终究不是 Usb,Usb也不是 Modbus!

hehe.
个人的一些看法。

使用特权

评论回复
7
rockingliu|  楼主 | 2007-8-23 17:17 | 只看该作者

3th

物理层当然可以不统一,但在往上的每层起码应该是双方可见的吧?(对等层通信双方规约统一),否则根本通信不上呀。
就算modbus 属于传输层,那我想问帮主, 假定有个厂家甲的modbus产品A,和一个厂家乙的modbus的产品B。 A 产品的校验用的是CRC-16,B产品的校验用的是CRC-CCITT。A 和B 如何进行通信互联?

使用特权

评论回复
8
chunyang| | 2007-8-23 19:40 | 只看该作者

这里的CRC已属于具体应用的范畴了

    Modbus规范的仅仅是格式,这是传输层协议的特点。传输层协议没有应用层协议严格,这是正常的,就像两个人讨论一件事,首先得发出音频(物理层),然后是语言(传输层),最后是事情本身(应用层)。声波远不仅仅是人类可听的频谱,语言也多种多样,但要实现交流,3个层次都必须兼容,设备的互连也同样。在这个例子中,如果没有特定的话题(相当于具体的应用),即使交流的双方都是人,都说的是很标准的国语,试问这两个人一定能互相交流吗?

使用特权

评论回复
9
dafei| | 2007-8-31 11:53 | 只看该作者

线圈状态实际上就是开关量

使用特权

评论回复
10
aixiaofan1314| | 2010-5-5 13:00 | 只看该作者
受教~~~~~~~~~~~~~~~~~

使用特权

评论回复
11
haolaishi| | 2011-9-22 10:59 | 只看该作者
:lol

使用特权

评论回复
12
xiongb89127| | 2011-10-3 20:03 | 只看该作者
受教受教.....

使用特权

评论回复
13
yoghen| | 2012-11-27 15:50 | 只看该作者
我就是看了这帖子,自己制定了一个不兼容的modbus协议,罪过罪过:lol

使用特权

评论回复
14
flylokj| | 2014-2-20 12:20 | 只看该作者
很好,学到东西了

使用特权

评论回复
15
xue379013210| | 2014-7-22 16:52 | 只看该作者
受教了

使用特权

评论回复
16
houlei1022| | 2015-10-16 13:48 | 只看该作者
学习了

使用特权

评论回复
17
行的云| | 2017-7-22 10:37 | 只看该作者
继续分析深入

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

101

帖子

0

粉丝