您现在所在的是:

PLC论坛

回帖:6个,阅读:1088 [上一页] [1] [下一页]
874
hwggo123
文章数:4
年度积分:50
历史总积分:874
注册时间:2008/11/20
发站内信
发表于:2008/11/20 20:52:00
#0楼
我想用51单片机和ORMON PLC通信,用hoslink通信协议,
单片机程序简略如下,改plc内dm区的值
uchar DB[17]={0x40,0x30,0x30,0x57,0x44,0x30,0x31,0x30,0x30,0x36,0x36,0x36,0x36,0x35,0x32,0x2A,0x0D};  
for(s=0;s<=16;s++)
   {
      SBUF=DB[s];
      while(!TI);
      TI=0;
   }
但遇到问题是单片机发送的数据是两个字节两个字节的发送,但hoslink是一块发送17的字节才能通信的,导致plc和单片机不能实现通信。
请了解这个方面的大侠们帮帮我这个初学者,谢谢!!!!!
2401
gsxiaojian
文章数:170
年度积分:50
历史总积分:2401
注册时间:2007/11/29
发站内信
发表于:2008/11/21 11:58:00
#1楼
我首先想请问楼主你这个不能通信是自己猜测出来的还上已经实测出来的。
当PLC接收到启始符@时它的接收缓冲区就会开始接受所有发送来的数据,直到终止符0x2A0D。我已经做过测试,我使用的是串口调试软件与PLC通信。照你的数据发送的,每次发2个字节,最后一个0D补00,间隔2秒左右。发送完后收到返回值为@00WD0053*回车无显示。证明操作成功。
所以你的推论是不成立的。
9062
吴辉
文章数:2351
年度积分:50
历史总积分:9062
注册时间:2002/1/15
发站内信
发表于:2008/11/21 22:56:00
#2楼
要做mcu和plc通讯我觉的要这么做
先把plc的通讯协议搞清楚,然后用pc的串口试验,试验成功了再做mcu和plc的通讯。
至于连续发很简单,有用循环的也有用中断的。
874
hwggo123
文章数:4
年度积分:50
历史总积分:874
注册时间:2008/11/20
发站内信
发表于:2008/11/23 13:00:00
#3楼
谢谢你的回答
首先谢谢你!我原来也用串口工具发过,可以发送的。后来我用51单片机发数就不行,用51发的数不是一整串17个数(Hoslink协议中发的数),而是一个一个发送的。我这是实测的,一整串数时,PLC能应答,但一个一个数时就不能应答了。我觉得是
    for(s=0;s<=16;s++)
   {
      SBUF=DB[s];
      while(!TI);
      TI=0;
   }

的问题。不过改了多个地方都不行!
874
hwggo123
文章数:4
年度积分:50
历史总积分:874
注册时间:2008/11/20
发站内信
发表于:2008/11/23 13:05:00
#4楼
谢谢你的回答
我就是按这个步骤做得,用串口工具没事!因为他是发送的一串数据,按Hoslink协议的是17个数发送,但是用单片机时却是一个一个的发送,所以使PLC接收不到!单片机的发送方式就是我上边写得那种。
9062
吴辉
文章数:2351
年度积分:50
历史总积分:9062
注册时间:2002/1/15
发站内信
发表于:2008/11/26 17:24:00
#5楼
把你的单片机接到pc上的串口,看收到的是什么数据
874
hwggo123
文章数:4
年度积分:50
历史总积分:874
注册时间:2008/11/20
发站内信
发表于:2008/12/1 20:19:00
#6楼
谢谢答复
接到pc上的串口。就是我说的一个一个数的发,怎么才能一下发17个数呢??????????????????????????????

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004