请大家来讨论有关ASCII方面的通讯问题

已锁定

我为歌狂007

  • 帖子

    41
  • 精华

    0
  • 被关注

    0

论坛等级:游侠

注册时间:2010-03-11

普通 普通 如何晋级?

请大家来讨论有关ASCII方面的通讯问题

1406

8

2011-12-30 16:58:26

最近遇到一个比较棘手的问题,情况大概是这样的:有一个旧船改造项目,船是新建的,电气设备也全部更换了,但有些变送器还用原来的变送器,原来的变送器无表头,无需设置量程,无需调零,是一个液位带3个点的温度变送器,传输方式是采用485 ASCII方式传输的,由于当时签协议的时候并不知道之前系统的配置情况,我们的设备采集使用的4~20mA采集仪表,且仪表的通讯已经与触摸屏相连,通讯协议与现今的变送器通讯协议不同;
我的做法是配置一个小型PLC外接几个通道的模拟输出模块,使用自由口采集变送器的数据,再将数据转化为数字量信号通过模拟量模块的D/A转换将4~20mA的信号送入我们现在的显示仪表中。经验证,方案可行。
但问题也随之而来,最主要的问题是我不知道传送的数据中哪一个字节或者这一组数据是怎么表示负数的,变送器那一侧我试过使用冰块对变送器测温点降温,然后将监测的数据记录下来,这样我就可以判断它的数据表示方法,然后通过计算送入二次仪表中,可惜这种方法行不通,变送器温度变化太慢,基本无变化,变送器测温点不是一个点,应该是一个感温范围,从变送器这一侧获取数据的想法破灭了
其实改变变送器温度的想法之前,我试过按照它的数据结构自己转化为负数发送给之前系统上的一块仪表,可惜仪表显示不了负数,全是————,试了好长时间都没成功
现将我监测的数据结构贴上来,以供大家讨论
40 48 31 30 30 30 30 54 31 30 30 33 43 54 32 30 30 34 35 54 33 30 30 34 39 33 37 23
@ H 1 0 0 0 0 T 1 0 0 3 C T 2 0 0 4 5 T 3 0 0 4 9 3 7 #

上面一组数据为监测的数据,16进制,下面一组为我转化的数据,ASCII数据

@为起始位,H1为液位,H1后4个字节为液位数据,T1为温度,T1后4个字节为T1温度数据,T2后4个字节为T2数据,T3后4个字节为T3数据,37为校验位,#为结束符
分析这组数据花了我好长时间,因为之前的资料全部没有,只能凭现场的数据和之前系统的仪表来判断自己的分析到底正不正确,经过验证,自己的分析正确
0和0以上的数据显示都正常,可0以下的数据可难为我了,试了好长时间都不行,一般ASCII中是使用2D作为负数显示的,可用2D不行,二进制中表示负数的方法是最高位为1,这也试过了,还是不行(开始怀疑自己的能力了 O(∩_∩)O~)
现将计算方法列出来,以供大家参考:
H1液位:0000H=0*16^3+0*16^2+0*16^1+0*16^0=0
T1温度:003CH=3*16^1+12=60,因数显表上已固化为显示一个小数点,故实际温度为60/10=6.0
T2温度:0045H=4*16^1+5=69,69/10=6.9
T3温度:0049H=4*16^1+9=73,73/10=7.3
37H为和校验,#为结束符
经过几次实测,发送的数据和仪表显示的数据吻合,说明计算方法无误,只是如果要实现负数传输的话,该如何做呢?我可不想我做的程序有问题,那也太对不起我自己了,我也不可能等到变送器出现负温二次仪表显示不正确再去现场改,那一次的差旅费就不少了,故发贴征求大家的意见,希望大家发表意见
帖子比较长,望大家耐心看完,有不清楚的地方我再做补充
请大家来讨论有关ASCII方面的通讯问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33300条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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