rockingliu 发表于 2007-8-22 21:01

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

01  读取线圈状态  取得一组逻辑线圈的当前状态(ON/OFF) 

chunyang 发表于 2007-8-23 14:47

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

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

chunyang 发表于 2007-8-23 00:29

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

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

rockingliu 发表于 2007-8-23 09:00

2th

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

chunyang 发表于 2007-8-23 13:00

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

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

rockingliu 发表于 2007-8-23 13:49

呵呵

多谢春帮主的留言。<br /><br />个人感觉,modbus协议还不是一个很严格的协议,至少不像Usb协议那样细致严格.他还算不上一种通用标准。because他的回旋余地还很大。<br />看到很多资料上都提到&quot;它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络&quot;之类的话。感觉也是在夸大。<br /><br />1.比如说对于&nbsp;function&nbsp;code的定义,即便是在的电力行业,除了1-21是公共标准,其余的包括异常应答code,都是没有一个统一的标准的,这给不同的使用者以很大的发挥空间,这显然就造成了&nbsp;modbus的不标准。还有比如像那个crc校验,虽然modbus有规定使用16bit&nbsp;crc,&nbsp;但16bit_crc,本身就有&nbsp;crc16和crc&nbsp;CCITT&nbsp;两种生成多项式之分。对于这些不确定性,不同宣称使用modbus的厂家的东西如何互联呢??除非这几个厂家事先约定好。不然&nbsp;我看只有本厂家和本厂家的产品可以互联。<br /><br />so,modbus&nbsp;终究不是&nbsp;Usb,Usb也不是&nbsp;Modbus!<br /><br />hehe.<br />个人的一些看法。<br /><br />

rockingliu 发表于 2007-8-23 17:17

3th

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

chunyang 发表于 2007-8-23 19:40

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

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

dafei 发表于 2007-8-31 11:53

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

aixiaofan1314 发表于 2010-5-5 13:00

受教~~~~~~~~~~~~~~~~~

haolaishi 发表于 2011-9-22 10:59

:lol

xiongb89127 发表于 2011-10-3 20:03

受教受教.....

yoghen 发表于 2012-11-27 15:50

我就是看了这帖子,自己制定了一个不兼容的modbus协议,罪过罪过:lol

flylokj 发表于 2014-2-20 12:20

很好,学到东西了

xue379013210 发表于 2014-7-22 16:52

受教了

houlei1022 发表于 2015-10-16 13:48

学习了

行的云 发表于 2017-7-22 10:37

继续分析深入
页: [1]
查看完整版本: 请问 斑竹 modbus里读取线圈状态指的是啥呀?啥线圈呀?