回复:外围设备传过来的数据是十六进制的,可是西门子Modbus_RTU好像只能接十进制的

昔日如诗

  • 帖子

    826
  • 精华

    3
  • 被关注

    10

论坛等级:侠圣

注册时间:2018-04-17

钻石 钻石 如何晋级?

发布于 2019-09-07 23:24:28

9楼

展开查看
以下是引用yming在2019-09-07 09:28:15的发言 >8楼

不是你这样解析的。

WORD只是说明数据的长度。而数据的类型可以是不同的。

如果是INT,它的范围是-32768 - 32767;最高位是符号位,负数用补码形式。

如果UINT则范围0 - 65535。

如果是控制字、状态字,则每一位代表一个开关量或状态。

如果是大字符集UNICODE;中文就是一个中文字;字符串就是两个ASCII字符。

如果BCD,就是两个位的 0- 99;

。。。。

至于二进制,十进制、十六进制,只是按需要的一种表示法。


以下是引用昔日如诗在2019-09-06 17:22:13的发言 >7楼:    一个word占了1...

引用7楼详细内容:

    一个word占了16个格子,我就在Excel表格里选了16个格子当成word,然后在这些格子里填上1或者0。然后我把它们先按十进制计算,再按十六进制计算,结果得的结果是一样的。如下图。

    下图中,word被1100 1100 1100 1100这样的位占满。如果这个word里的数据是十进制的话,那么结果为52428;如果是十六进制的话,结果是CCCC,结果还是52428。



以下是引用yming在2019-09-06 17:04:49的发言 >6楼:都是自己设计的自己...

引用6楼详细内容:

都是自己设计的自己当然知道。它也可以是二进制哦,每一位代表一个状态。

传送只是按照通讯协议;实际传送不管什么数据结构,都是按字节。

至于信息是如何组合的,两边说好了就行。这就是通讯协议。

像这类简单的数据结构,还可以容易地解析。要是COBOL那种数据结构,有的数据占2-3Bits,还是顺序排列。你就是记录了报文,没有数据记录定义也看不见内容。



以下是引用昔日如诗在2019-09-06 16:53:20的发言 >5楼:    谢谢!   ...

引用5楼详细内容:

    谢谢!

    我被这事弄昏头了:同一个word类型的元素,这次接收的是十进制,下次接收的是十六进制,那么这个元素怎么知道它接收的是十进制还是十六进制?

以下是引用398374947在2019-09-06 16:50:23的发言 >4楼: 10进制和16进制...

引用4楼详细内容:

 10进制和16进制只是一个数据两种不同显示而已,不用做任何转换,显示的时候选择10进制显示即可

    那本案的元素DB13.DBW0对外围设备的数据类型一无所知,它如果这次接收到的是十进制的,下次接收到的是十六进制的,它能自动识别出来?

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15099条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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