PLC选用PPI电缆与单片机的MAX232相连,这可是客户提出的搜主意哦!
单片机程序如下:
uchar idata d[16]={'i','l','o','v','e','u',2,4,4,56,5},buf[10];
uchar pf; //校验和
void init (void)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
PCON=0x00;
TR1=1;
SCON=0x50; //方式一
}
void send (uchar idata *d)
{
uchar i;
do {
SBUF=0x11; //发送联络信号
while (TI==0); //等待发送出去
TI=0;
while(RI==0); //等待应答信号
RI=0;}
while((SBUF^0Xbb)!=0); //B机未准备好,继续发送联络信号
do {
pf=0; //清校验和
for(i=0;i<16;i++){ //发送数据
SBUF=d[i];
pf+=d[i];
while(TI==0);TI=0;
}
SBUF=pf;
while(TI==0);TI=0;
while(RI==0);RI=0;
}while(SBUF!=0); //回答出错,则重发
}
void main(void)
{
init();
send (buf);
}
PLC程序如下:
LD SM0.1
MOVB 9, SMB30
ATCH INT_0, 8
ENI
MEND
中断程序如下:
LDB= SMB2, 16#88
S Q1.0, 1
LD SM0.0
MOVB SMB2, QB0
RETI
以上PLC程序只是作为小试验,目的是看单片机发送过来的数据正确否,结果如下:
单片机发送的数据 PLC接收到的数据
11 91
22 82
33 93
44 A4
88 C8
FF FF
DD FD
以上都为十六进制数据
不管我怎么调节PPI电缆上的拨码开关的4—6位,他们分别是10bit/11bit选择位DTE/DCE、RTS FOR XMT/RTS Always选择位,结果都一样。单片机和PLC的波特率为9600。