搜索
bottom↓
回复: 9

51单片机与三菱PLCFX2N通信问题!请各位帮帮忙啊

[复制链接]

出0入0汤圆

发表于 2010-7-8 11:43:55 | 显示全部楼层 |阅读模式
我刚接触PLC,想用51单片机与PLC用串口通讯,9600的波特率,1位开始位,7位数据位,1位偶校验,1位停止位,程序很简单,就是想让PLC的Y1置位
#include <REG52.H>                           
#define uchar unsigned char
#define uint unsigned int
unsigned int temp[9]={0x02,0x37,0x30,0x31,0x30,0x35,0x03,0x30,0x30};
                             
void main ()
{

        unsigned int i;
    SCON  = 0x50;                        
    TMOD |= 0x20;               
    TH1   = 0xFD;               
    TR1   = 1;                                    
    EA    = 1;                  
                  
while (1)                       
    {
        for(i=0;i<9;i++)
                {
                        ACC=temp;
                        CY=P;
                        TB8=CY;
                        SBUF=ACC;                 
                           while(!TI);
                          TI=0;
                       
            }
        if(i==9)  while(1);
        }
}
可是PLC一点反应都没有,大家帮忙看看是怎么回事啊

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-7-8 15:35:38 | 显示全部楼层
哈哈 看来问题还得我自己解决啊  被我搞定了
#include <REG52.H>                           
#define uchar unsigned char
#define uint unsigned int
unsigned int temp[9]={0x02,0x37,0x30,0x31,0x30,0x35,0x03,0x30,0x30};
sbit LED = P1^0;                           
void main ()
{

        unsigned int i,mm,y;
    SCON  = 0x50;                        
    TMOD |= 0x20;               
    TH1   = 0xFD;               
    TR1   = 1;                                    
    EA    = 1;                  
                  
while (1)                       
    {
        for(i=0;i<9;i++)
                {
                        ACC=temp;                       
                        CY=P;                       
                        TB8=CY;
                        y=ACC&0x7f;
                        mm=0x00|TB8;
                        mm=mm<<7;                               
                        SBUF=y|mm;               
                           while(!TI);
                          TI=0;
                       
            }
        if(i==9)  while(1);
        }
}
刚开始偶校验这几行我就没弄太明白,
ACC=temp;
CY=P;
TB8=CY;
SBUF=ACC;  
这是我在网上搜的,人家都说偶校验是这么写的,可实验证明这是不对的,经过我的改正
                           ACC=temp;                       
                        CY=P;                       
                        TB8=CY;
                        y=ACC&0x7f;
                        mm=0x00|TB8;
                        mm=mm<<7;                               
                        SBUF=y|mm;  
现在已经能给PLC置位啦   哈哈这一天总算是有点成果啦

出0入0汤圆

发表于 2010-7-11 18:01:12 | 显示全部楼层
是用来读取些个plc的参数吧,没用过,看看

出0入0汤圆

 楼主| 发表于 2010-7-12 19:36:18 | 显示全部楼层
回复【2楼】wkman 鱼片
-----------------------------------------------------------------------

不光是读取,给PLC里的D Y S等置位 读写数据 都行

出0入0汤圆

发表于 2010-11-5 21:11:50 | 显示全部楼层
大侠硬件怎么接线啊

出0入0汤圆

发表于 2011-6-23 20:50:58 | 显示全部楼层
是怎么连线的?

出0入0汤圆

发表于 2011-9-11 09:59:11 | 显示全部楼层
楼主强,支持。

出0入0汤圆

发表于 2011-11-19 21:36:40 | 显示全部楼层
mark  这个有用

出0入0汤圆

发表于 2012-5-4 19:33:30 | 显示全部楼层
不错不错

出0入0汤圆

发表于 2012-6-25 02:22:54 | 显示全部楼层
有时简单的PLC和单片机通讯,直接用IO口还方便点。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 11:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表