请教plc与单片机串口通讯讯异常问题

您现在所在的是:
→ 浏览主题:
* 帖子主题:
文章数:48
年度积分:50
历史总积分:50
注册时间:
手中有3件器件:USB转串口(公头)、单片机的RS232模块和西门子PLC(224CN接了PPI485转RS232线)。
232通讯的使用9针接口,只连接其中的2、3和5。
现象是:1)USB转串口线接上PC,串口调试助手可以正确接收到单片机发送的数据;
& & & &2)PLC可以正确接受到PC发的数据;
& & & &3)单片机发的数据PLC收不到;
& & & &4)USB转232线加上232转485后连接PLC(不接PPI485转RS232线),串口调试助手发送的数据PLC可正确接收到。
请教一下这是什么问题?
20分悬赏
文章数:11211
年度积分:811
历史总积分:17911
注册时间:
2016国庆活动(三)
通信协议一样吗?
有问题可加
文章数:48
年度积分:50
历史总积分:50
注册时间:
回复 #1楼 zzn6737
tigermu 版主
文章数:11959
年度积分:789
历史总积分:27209
注册时间:
2016论坛优秀版主
2016国庆活动(一)
2015论坛优秀版主
西门子logo体验(三)
英威腾PLC体验(三)
2015春节活动
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2010年度论坛贡献奖
232转485有电源接口吗,接上试试。
tigermu.blog.sohu.com & 无声无息
文章数:48
年度积分:50
历史总积分:50
注册时间:
回复 #3楼 tigermu
发现单片机与PLC串口通信时,2、3要对换一下
xupeng2008
文章数:1465
年度积分:294
历史总积分:5177
注册时间:
以下是引用yyh1910在 9:48:23的发言:
发现单片机与PLC串口通信时,2、3要对换一下
232的话 只能一对一通信 &所以A的TX要对应B的RX
文章数:241
年度积分:57
历史总积分:2218
注册时间:
会不会通讯线 太细了,或者用屏蔽线试试, 很多年前我也遇到过通讯时好时坏的情况,后来果断换线,解决了
工控学堂推荐视频:请教问题,单片机如何实现与pc通过网口通信
[问题点数:10分,结帖人mtengyer]
请教问题,单片机如何实现与pc通过网口通信
[问题点数:10分,结帖人mtengyer]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2011年1月 VB大版内专家分月排行榜第二2010年10月 VB大版内专家分月排行榜第二
2013年1月 VB大版内专家分月排行榜第三2012年12月 VB大版内专家分月排行榜第三2011年6月 VB大版内专家分月排行榜第三2011年2月 VB大版内专家分月排行榜第三2010年12月 VB大版内专家分月排行榜第三2010年11月 VB大版内专家分月排行榜第三2009年7月 VB大版内专家分月排行榜第三
2010年1月 硬件/嵌入开发大版内专家分月排行榜第三
匿名用户不能发表回复!|大学毕设问题 想请教下串口通信的问题【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:147,977贴子:
大学毕设问题 想请教下串口通信的问题收藏
网上买好了单片机的板子 如何把单片机上接收的数据传输给电脑呢 教师让用RS232 如何连?需要买什么线?电脑需要安装什么驱动?求大手解答下 多谢
专业从事单片机开发的生产,具有高品质的研发团队和设备,产品高品质保证,10年生产开发经验.
你要先确定你的单片机是 ttl 的串口还是 rs232 的串口确定之后买对应的usb转换线即可
串口通信很好做,你用个max232芯片就可以了
你可以看看我这篇文章lab-z.com/oscvol/
登录百度帐号请教个单片机和电脑串口通讯(关于半双工)的问题_百度知道
请教个单片机和电脑串口通讯(关于半双工)的问题
电脑和单片机,串口通讯我一切正常。可正常收发。用的C语言。但有一个问题在串口中断事件上。temp=SBUF;SBUF=这一切也正常。能把收到的数据,发回到电脑上去。但是如果我用{temp=SBUF;SBUF=SBUF=0x0D;} (这里0D随便是什么。测试用)问题如下:如果电脑给单片机发一个字节,那么单片机可以回发给电脑同样的内容。并补一个0D回去。但是如果电脑给单片机发的是一个字符串,就是很多字节。单片机就不能正常回发数据回去了。比如:电脑发的 01 02 03 04 05 06给单片机。那么电脑串口调试时显示。单片机回发回来的数据是 01 02 0D 0D或者别的其它怪现象不但内容不对。连位数都不对。看样子是被堵住了的感觉。我就是不明白这半又工什么意思?是不是日常程序中,上位机下位机互相发数据都应该加个发送完毕标志。比如0D。单片机直到收到0D后。才能像电脑发数据去。电脑也一直收。直到看到单片机的0D标志。才开始发送下一组命令下去?这样好像能解决,但是如果两边都在待命状态中,同时对对方有发送要求,怎么办?我说得有点乱。唉。如果高手遇到过这问题,一定明白我在说什么。忘了说方式 sm0 sm1 分别为0和1
我有更好的答案
SBUF=while(TI == 0);
//等待发送完毕TI = 0;
//清除标志SBUF=0x0D;while(TI == 0);
//等待发送完毕TI = 0;
//清除标志……每发送一个字节,都需要等待发送完毕。
采纳率:64%
我不是高手,不明白你在说什么,但你肯定是在处理电脑问题。
做而论道的回答是正确的,串口发送是一个字节一个字节的发送的...
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
串口通讯的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请教:单片机串口编程问题 - 捷配电子市场网
请教:单片机串口编程问题
作者:xiaoniu666 栏目:
请教:单片机串口编程问题&
作者: xiaoniu666 于
22:33:00 发布:
对不起,刚才内容没有发送出去我最近在做一个单片机串口通讯的题目,我写了一个串口测试子程序,两机可以正取接收和显示,但把子程序放在总程序中就不行了;我的总程序应该也没有问题,因为我如果不调用这个串口子程序,主程序也能很好的运行。我想了一天也解决不了,还请各位热心的大虾门帮帮解决一下:~~~~~发送测试程序#include&reg51.h&#include&absacc.h&#include&math.h&#define uint unsigned int#define u unsigned #define pa XBYTE[0xc7ff]&&&&&&&//PA口#define pb XBYTE[0xcfff]&&&&&&&//PB口#define pc XBYTE[0xd7ff]&&&&&&&//PC口#define com&&XBYTE[0xdfff]&&&&&//控制口#define VOLTAGE 5&&&&&//采集电压为0~5Vvoid sendkey(u d)&&&//发送一个字节的内容{&&&&&SBUF=d;&&&&&while(TI==0);&&&&&TI=0;}void sendvalue(u d)&&//发送一个采样值{&&&&&if(d%16==8)&&&&&&&&{&&SBUF=d;&&&&&&&&&&&while (TI==0);&&&&&&&&&&&TI=0;&&&&&&&&}&&&&&else&&&&&&&&{&&SBUF=d+1;&&&&&&&&&&&while (TI==0);&&&&&&&&&&&TI=0;&&&&&&&&}}void delay(uint t)&&//延时函数延时t*10ms{for(j=0;j&t;j++)&&{&&&TH0=-39;&&&TL0=-16;&&&TR0=1;&&&do {} while(TF0!=1);&&&TF0=0;&&}}main(){&&u trdata[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//u redata[10];TMOD=0x21;TH1=0xE6;TL1=0xE6;TR1=1;SCON=0x50;PCON=0x00;TCON=0xc0;IE=0x00;com=0x80;pc=0while(1){for(i=0;i&10;i++)&&&{ sendvalue(trdata[i]);&&&&// while(TI == 0 );&&&&// TI = 0;&&&&// while(RI == 0 );&&&&&//RI = 0;&&&&&pb=trdata[i];&&&&&delay(30);&&&&&}}}~~~~接收子程序~~~~main(){u trdata[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};u redata[10];TMOD=0x21;TH1=0xE6;TL1=0xE6;TR1=1;SCON=0x50;PCON=0x00;TCON=0xc0;IE=0x00;com=0x80;pc=0pa=0while(1){&&&&&&&&&while(RI == 0 );&&&&&RI = 0;&&&&&pa= SBUF-1;&&&&&delay(30);}}
作者: 荆潇影 于
8:18:00 发布:
呵呵什么意思呀,楼主好象没有说明白
作者: 王紫豪 于
14:50:00 发布:
作者: xiaoniu666 于
0:38:00 发布:
表达不清,还望见谅!&谢谢 荆潇影 和 王紫豪 的指点!我的系统是这样的:在发送端用0809采集八路电压数据,然后用单片机的串口发送给另一片单片机,并显示。&&我用显示采样值和显示的路数。我的问题是:我上面编写的是两片单片机的接受和发送的调试程序。这个调试程序我可以很好的运行,并且很好的显示。但就是把上面的sendkey(uchar a)和sendvalue(uchar a)函数(前者是发送采样路数,后者是发送采样值),放到我的总程序里调用,就不能发送了,每次仿真时都是在 while(TI==0);这儿停了。也是就说数据没用经过SBUF发送出去。为什么??我的总程序应该也没有问题,因为我要是不调用sendkey(uchar a)和sendvalue(uchar a),我的发送端的总程序可以正确显示。 不好意思了,发帖很少,表达不清,还望见谅!
作者: a 于
7:32:00 发布:
这样的等到很可能导致程序不稳定&
作者: awey 于
9:45:00 发布:
为什么不用中断?&
作者: szxw 于
11:09:00 发布:
主程序中有没有对串口设置的地方?或者中断等寄存器设置冲突...
作者: xiaoniu666 于
15:33:00 发布:
中断用得不熟练我对中断用得不熟练,所以没有用中断。主程序我上传到这儿了,请各位看看
作者: xiaoniu666 于
19:46:00 发布:
啊这么多人进来了这么没有人给我留点意见啊?期待大家的意见啊!
作者: bkgl1986 于
13:52:00 发布:
近来学习帮你顶下
讨论内容:
Copyright &
www.dzsc.com 浙ICP证030469号

我要回帖

更多关于 单片机 串口通讯 缓冲 的文章

 

随机推荐