modrd数据读取 点击:1828 | 回复:9



卢生

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 41回
  • 年度积分:0
  • 历史总积分:266
  • 注册:2007年1月14日
发表于:2009-02-21 11:49:24
楼主
modrd指令数据读取读取(RTU模式)接收数据以HEX数值形式储存在D1070~D1085,点解读出来的数与仪表显示的数不相同,是不是要转换的,望各位指教,谢谢



孤掌难鸣

  • 精华:0帖
  • 求助:0帖
  • 帖子:76帖 | 324回
  • 年度积分:0
  • 历史总积分:704
  • 注册:2007年8月17日
发表于:2009-02-22 12:43:01
1楼
应该是要转换的,MODRD读取的是实际数据,你的仪表可以有很多种显示。

孤掌难鸣

  • 精华:0帖
  • 求助:0帖
  • 帖子:76帖 | 324回
  • 年度积分:0
  • 历史总积分:704
  • 注册:2007年8月17日
发表于:2009-02-22 12:49:04
2楼

你可以看一下这个范例。

卢生

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 41回
  • 年度积分:0
  • 历史总积分:266
  • 注册:2007年1月14日
发表于:2009-02-23 08:54:22
3楼

 回复 孤掌难鸣
帖子:260注册时间:2007-8-17 20:35:00 2楼 回复时间:2009-2-22 12:49:04 你可以看一下这个范例。
我试过了,例如我的输出频率是60HZ:D1073显示K23,D1074显示K112,D1075显示K23,D1076显示K112,输出频率是50HZ:D1073显示K19,D1074显示K136,D1075显示K19,D1076显示K136.这些数如何转换呢?望指教,谢谢

孤掌难鸣

  • 精华:0帖
  • 求助:0帖
  • 帖子:76帖 | 324回
  • 年度积分:0
  • 历史总积分:704
  • 注册:2007年8月17日
发表于:2009-02-23 10:35:17
4楼

我给你说一下思路:

假如读取的数据在D1073,D1074的低字节,把D1073的数据放入D0,D1074的数据放入D1,利用SWAP指令进行D0,上下字节互换,

D0与HF0向与(与或非的与),取高字节,D1与H0F向与,取低字节,然后D0,D1向或后放入D2,D2内的数据就是你要的数据。

台达与或运算指令WAND WOR

卢生

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 41回
  • 年度积分:0
  • 历史总积分:266
  • 注册:2007年1月14日
发表于:2009-02-23 13:20:18
5楼

 回复 孤掌难鸣 
帖子:260注册时间:2007-8-17 20:35:00 4楼 回复时间:2009-2-23 10:35:17 我给你说一下思路:

假如读取的数据在D1073,D1074的低字节,把D1073的数据放入D0,D1074的数据放入D1,利用SWAP指令进行D0,上下字节互换,

D0与HF0向与(与或非的与),取高字节,D1与H0F向与,取低字节,然后D0,D1向或后放入D2,D2内的数据就是你要的数据。

台达与或运算指令WAND WOR

真的谢谢你,但我还有一个问题向你请教:我试过用在台达变频器上是可以,但我用在电压仪表(Modbus RTU模式)上就不可以,是不是还要注意什么的,请指教,谢谢

孤掌难鸣

  • 精华:0帖
  • 求助:0帖
  • 帖子:76帖 | 324回
  • 年度积分:0
  • 历史总积分:704
  • 注册:2007年8月17日
发表于:2009-02-23 13:48:13
6楼

有可能和台达的485通讯协议不太一样,建议你用RS指令处理,你要先搞清楚电压仪表的通讯协议。

卢生

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 41回
  • 年度积分:0
  • 历史总积分:266
  • 注册:2007年1月14日
发表于:2009-02-23 15:07:54
7楼
概述:本规约采用Modbus 规约RTU 模式,可以方便地与多种组态软件相连接,其通讯驱动
与Modicon Modbus_RTU 格式完全兼容。
1、 字节格式:
每字节含8 位二进制码,传输时加上一个起始位(0),一个停止位(1),共10 位。其传输序
列如上图所示,D0 是字节的最低有效位,D7 是字节的最高有效位。先传低位,后传高
位。
2、 通讯数据格式:通讯时数据以字(WORD— 2 字节)的形式回送,回送的每个字中,高字
节在前,低字节在后,如果2 个字连续回送(如:浮点或长整形),则高字在前,低字在
后。
数据类型 寄存器数 字节数 说 明
字节数据 1 1
整形数据 1 2 一次送回,高字节在前,低字节在后
长整形数
浮点数据
2 4 分两个字回送,高字在前,低字在后
3、 帧格式:
3.1 读取仪表寄存器内容(功能码 03H)
3.1.1 上位机发送的帧格式:
顺序 代 码 示例说 明
1 仪表地址 1 仪表的通讯地址(1-255 之间)
2 03H 03H 功能码
3 起始寄存器地址高字节 10H
4 起始寄存器地址低字节 00H 寄存器起始地址
5 寄存器个数高字节 00H
6 寄存器个数低字节 02H 寄存器个数
7 CRC16 校验高字节 C0H
8 CRC16 校验低字节 CBH CRC 校验数据
青 岛 青 智 仪 器 有 限 公 司
Add:中国青岛市福州南路99 号鲁通大厦四层 Tel:(0532)85768356/57/58/59 Postcode:266071
Fax:(0532)85768357 E_mail:qingzhi@public.qd.sd.cn Web:www.qingzhi.com
第 2 页
3.1.2 仪表回送的帧格式(数据正常)
顺序 代 码 说 明
1 仪表地址 仪表的通讯地址(1-255 之间)
2 03H 功能码
3 回送数据域字节数(M)
4 第一个寄存器数据
…… ……
第N 个寄存器数据
M+4 CRC 校验高字节
M+5 CRC 校验低字节
3.1.3 如果起始寄存器地址或寄存器个数错误,仪表回送:
顺序 代 码 示 例 说 明
1 仪表地址 1 仪表的通讯地址(1-255 之间)
2 83H 83H 功能码
3 02H 02H 错误代码
4 CRC 校验高字节 C0H
5 CRC 校验低字节 F1H
3.2 设置

卢生

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 41回
  • 年度积分:0
  • 历史总积分:266
  • 注册:2007年1月14日
发表于:2009-02-23 15:10:56
8楼

 回复 孤掌难鸣 

帖子:260注册时间:2007-8-17 20:35:00 6楼 回复时间:2009-2-23 13:48:13 有可能和台达的485通讯协议不太一样,建议你用RS指令处理,你要先搞清楚电压仪表的通讯协议。
应该是相同吧?可以加我QQ:373577364

teamo.wan

  • 精华:1帖
  • 求助:0帖
  • 帖子:40帖 | 442回
  • 年度积分:0
  • 历史总积分:732
  • 注册:2005年12月13日
发表于:2009-02-23 23:31:54
9楼
MODRD读取RTU格式数据是需要转换的

热门招聘
相关主题

官方公众号

智造工程师