发布于 2013-04-25 14:10:56
16楼
我来试试说明下,看看能不能帮你讲明白
首先,modbus通讯,主站发过来来的询问报文里,肯定含有需要查询的寄存器地址,没有办法,这是modbus协议决定的。
第二,你用的modsim或是Modscan等调试工具或是标准的modbus设备,里面都有0XXXXX,1XXXXX,3XXXXX,4XXXXX这样4类寄存器,这些都是基于协议要求,软件或产品在管理内存时,分别规划好了4个区域,用来对应4个寄存器。 这是成熟软件或是产品已经做好了,不用你做,但你要知道有什么回事。
第三:西门子的S7系统并没有帮你规划好这样的寄存器对应区域,因此,西门子的手册里需要在硬件组态里配置功能码对应的地址区域, 其目的就是让你给安排下0XXXXX,1XXXXX,3XXXXX,4XXXXX这4类寄存器和西门子S7系统里的数据存储区域的对应关系。至于怎么在硬件组态里配置,不用看手册,打开界面基本上就知道怎么回事了,这里不啰嗦了。
只是,西门子的硬件配置里对应关系表设计的,看起来和用起来都不是很爽。其实如果当初在设计时所有的4类寄存器都对应同一个DB块,只是对应不同的偏移地址时,那么配置起来就一目了然了。
也正因为此,我从来不用西门子的dongle来做,自己编写了功能块,不但省掉了dongle的费用,还把所有需要通讯的数据放在一个db块里,只要定义几个偏移地址就行了。
莫等闲,白了少年头,空悲切!