RTU通信问题 点击:707 | 回复:6



hzsbkj

    
发表于:2012-03-09 19:39:40
楼主

我是初弄人机界面者,在触摸屏上画了一个数据显示框,读外部地址0000H的数据并显示在数值显示框中,通信采用RS232通信,触摸屏发送一组数据:01 04 00 00 00 01 31 CA (串口助手接收到的数据),在电脑上串口发送01 04 00 00 00 12 70 07 数据作用响应,这时触摸屏的数据显示框应该显示18,但触摸屏上并没有显示数值,不知道这是为什么。请大家帮忙解答一下,谢谢!本人想用单片机来控制触摸屏,通过modbus 协议来进行通信。



楼主最近还看过



青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-03-09 21:48:46
1楼
触摸屏在通讯中是个主设备,你给它数据得在它请求读取的前提下,如果用单片机控制,主要做的工作就是能和屏的协议通讯上,你要显示的东西放在单片机存储器中的地址和屏上做的地址一致就Ok

hzsbkj

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2012年3月08日
发表于:2012-03-10 12:34:57
2楼

通信过程是对的,如果响应的值是错的话,触摸屏没有反应,1秒后继续发送命令出来,但响应数据是对的话,触摸屏在响应后马上再发送命令,单片机又响应,一直循环,把串口总线全部占掉了。

雷锋小弟

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 258回
  • 年度积分:0
  • 历史总积分:601
  • 注册:2003年6月09日
发表于:2012-03-10 12:56:06
3楼

显示时要进行数据转换,看返回触摸屏的数据(01 04 00 00 00 12 70 07 )中,12就是你要显示的数据,12为十六进制表示,应将12转换为十进制,所得的数值就是18。

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2012-03-10 14:43:00
4楼
你的格式不对,屏幕需要读1个字,你需要发2个字节过去,而且在回复的内容里还需要有字节数2,你那个电脑响应的内容“01 04 00 00 00 12 70 07 ”里显然没有,还有每一字节间的时间是否正确,间隔太大了会认为是下一帧数据了。去找个MODBUS 的协议来好好翻一下,楼主显然没仔细看那协议

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2012-03-10 14:50:27
5楼

看看图中红圈部分,网上都有的,去找来看看

hzsbkj

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2012年3月08日
发表于:2012-03-10 16:28:19
6楼

谢谢!确实是通信格式不对,我看了通信协议,但上面响应数据没有写这一点(字节娄),折腾我好长时间。

 

SSI ļʱ