S60S0T与一台称重仪RS485通讯 点击:903 | 回复:14



chjun

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:74帖 | 243回
  • 年度积分:15
  • 历史总积分:605
  • 注册:2006年6月23日
发表于:2015-05-23 22:21:06
楼主

麻烦海为的技术人提供帮助;

  S60S0T与一台称重仪RS485通讯

最好写一段RS485的通讯例子。

  谢谢




DavidLuiz

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 96回
  • 年度积分:0
  • 历史总积分:163
  • 注册:2014年9月28日
发表于:2015-05-25 12:27:36
1楼

楼主 Haiwell通讯最简单了,你把协议发上来 我帮你看看呗!

chjun

  • 精华:2帖
  • 求助:0帖
  • 帖子:74帖 | 243回
  • 年度积分:15
  • 历史总积分:605
  • 注册:2006年6月23日
发表于:2015-05-25 22:09:08
2楼

这个就是说明书的通讯部分,采用应答模式;

chinaplc_24

  • 精华:2帖
  • 求助:0帖
  • 帖子:15帖 | 322回
  • 年度积分:0
  • 历史总积分:1101
  • 注册:2000年12月01日
发表于:2015-05-26 12:39:38
3楼

你的说明书也该还有一页吧,例子的返回数据最后应该还有2个字节TEX和BCC,所以应该是发送6给字节(01H 31H 02H 47H 03H 74H),返回16字节(01H 31H 02H 51H 30H 2BH 30H 30H 31H 32H 33H 34H 34H 6BH 67H 03H A5H),BCC校验码=51H xor 30H xor 2BH xor 30H xor 30H xor 31H xor 32H xor 33H xor 34H xor 34H xor 6BH xor 67H xor 03H=75H + 30H=A5H.

发送的6个字节放在一个“初始寄存器表”V1000开始,用一条COMM指令即可通讯。

返回数据放到V0~V7共8个寄存器,返回数据中的有效数据从第5字节开始,所以把V0~V7用BSHR字节右移一个字节结果放到V10~V17中,用CTOF指令把V12~V15的7个字节转换为浮点数V100V101;

把V15的高字节(重量指数部分)取出转换为浮点数V20V21(指数浮点数a),FXY指令计算10.0的a次方放到V30V31;

用FMUL把V100V101乘以V30V31最后结果V50V51。

没有贴图,不知道你看明白没有,(*^__^*) 嘻嘻……


DavidLuiz

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 96回
  • 年度积分:0
  • 历史总积分:163
  • 注册:2014年9月28日
发表于:2015-05-26 16:51:23
4楼

不好意思,工作忙,来晚一步。楼上回答的不错,不过我觉得回来的是17字节,借着楼上说的,我就按照他的说明写个具体操作程序吧!

首先在初始寄存器表填入要发送的命令,如下图:

里面:01H 31H 02H 47H 03H 74H就是我们要发送的读取重量的命令。接着调用COMM指令,个参数填写如下:

选用低字节发送模式,即只把V1000到V1005的低字节数据发送出去。发送完毕,转为接收称返回的17个字节数据:

数据为:01H 31H 02H 51H 30H 2BH 30H 30H 31H 32H 33H 34H 34H 6BH 67H 03H A5H

在PLC里存放在V0为起始的寄存器里,如下图所示:

根据协议和返回数据看,V2的高字节到V5寄存器的数据是我们需要的,即+0.001234,所以我们对数据进行左移一个字节处理,处理前为了让原始数据不被破坏,先进行数据的块移动,用BMOV指令移动到V10到V18的寄存器中,然后再用字节左移指令,移动完数据变成如下:

接着对字符2B 30 30 31 32 33 34转成浮点数,海为CTOF指令可以轻松完成!

以上就可以得到称重仪表的小数部分,程序如下:

以上程序是用海为自带的通讯仿真器实现的,点击仿真按钮,在“调试”菜单里选择他通讯仿真器:

填入仪表返回的数据,点击应答即可:

DavidLuiz

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 96回
  • 年度积分:0
  • 历史总积分:163
  • 注册:2014年9月28日
发表于:2015-05-26 17:15:25
5楼

最后就是对称的指数数据的解析,该数据存放在V16的高字节中,所以要把他解析出来,先提取V16的高字节得到34H,再把34H-30H=4 那么就是它的指数部分,再用FXY指令计算10.0的4次方,得到数值10000,然后10000乘以上面计算的0.001234得到示例里值:12.34kg。程序如下:

V16得到高低字节存在V20(V16的低字节数据)V21(V16的高字节数据,我们要的数据)

V21减去48就是本例的34H-30H(十进制数48),数值放在V104中,因为是整数,而FXY是浮点数运算,故需要把V104转成浮点数先。转成浮点数后,用FXY算出10的4次方值,放在寄存器V108,最后小数乘以指数得到重量值,程序如下:

源程序xiazai:       http://pan.baidu.com/s/1eQlLtZW  提取码:zwev

chjun

  • 精华:2帖
  • 求助:0帖
  • 帖子:74帖 | 243回
  • 年度积分:15
  • 历史总积分:605
  • 注册:2006年6月23日
发表于:2015-05-26 22:52:18
6楼

太好了通讯成功,太感谢了;感谢两位高手相助。

谢谢

chjun

  • 精华:2帖
  • 求助:0帖
  • 帖子:74帖 | 243回
  • 年度积分:15
  • 历史总积分:605
  • 注册:2006年6月23日
发表于:2015-05-26 22:53:29
7楼

写的太详细了,再次感谢;

chjun

  • 精华:2帖
  • 求助:0帖
  • 帖子:74帖 | 243回
  • 年度积分:15
  • 历史总积分:605
  • 注册:2006年6月23日
发表于:2015-05-27 00:17:27
8楼

如果我想要工作状态稳定信号取出如何处理?

DavidLuiz

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 96回
  • 年度积分:0
  • 历史总积分:163
  • 注册:2014年9月28日
发表于:2015-05-27 10:04:31
9楼


回复内容:

对: chjun 如果我想要工作状态稳定信号取出如何处理? 内容的回复!

可能我想的比较简单,但是我的想法是这样的,也就是再加条判断的程序。

思路是这样的:(S)称量是否稳定,存在返回数据的第5个字节,也就是放在V12的高字节里,如下图:

那我只要在程序后面再加一个高字节比较开关指令,判断V12的高字节的值是等于30H(字符"0")还是31H(字符"1"),等于字符0的话 就是说明称重稳定,然后提取并且使用我们上述回来的值,程序如下:

上面这个程序就是只有在通讯成功了,而且判断数据稳定了,才得到最终的值。

不知道这样的思路可以不?楼主可以测试看看。


chjun

  • 精华:2帖
  • 求助:0帖
  • 帖子:74帖 | 243回
  • 年度积分:15
  • 历史总积分:605
  • 注册:2006年6月23日
发表于:2015-05-28 23:08:02
10楼

怎么图片和程序图片看不见


chjun

  • 精华:2帖
  • 求助:0帖
  • 帖子:74帖 | 243回
  • 年度积分:15
  • 历史总积分:605
  • 注册:2006年6月23日
发表于:2015-05-28 23:35:15
11楼

哦,看到了,谢谢明天测一下;

另外:我这个地方有点看不懂;

  1.comm模块-Rxd=是从V0开始Rn=17意思是从V0~V16被comm模块占用吗?

  2.BMOV相当于将V0~V7复制到V10~V17吗;

DavidLuiz

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 96回
  • 年度积分:0
  • 历史总积分:163
  • 注册:2014年9月28日
发表于:2015-05-29 10:06:34
12楼


回复内容:

对: chjun 哦,看到了,谢谢明天测一下;另外:我这个地方有点看不懂... 内容的回复!

 1.comm模块-Rxd=是从V0开始Rn=17意思是从V0~V16被comm模块占用吗?

 因为这个Rn表示接受回来的字节数,也就是17个字节,海为一个寄存器V由两个字节组成,所以17个字节就是占用连续的9个寄存器,也就是V0到V8。

内部寄存器排列方式为V2047 V2046....V10 V9 V8 V7 ... V0 知道这个排列,到时候左移或者右移就很清楚了。


 2.BMOV相当于将V0~V7复制到V10~V17吗?

 是的 是这样子的。

wosth

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 84回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2009年9月01日
发表于:2016-05-03 10:13:36
13楼

厉害啊  学习学习!!!!!!!!!!!!!!

Max2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 50回
  • 年度积分:0
  • 历史总积分:50
  • 注册:2015年5月20日
发表于:2016-06-17 20:49:13
14楼

不错不错 写得很好 学习啊



热门招聘
相关主题

官方公众号

智造工程师