对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结

对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结

20xx-07-15 11:28:31| 分类: | 标签: |字号大中小 订阅

1,程序发的数据包太多了,并且数据包的定义是RAM的,很容易造成单片机的RAM不够,因为单片机默认的RAM是128个字节,不过可以扩展高的128个字节,范围在80H -FFH,定义是这样定义的,char idata

XX[]:

如果这样不够的话就只能在想办法来解决这个问题,找一些规律啊,或是改成查表的形式,定义成code 类

型:uchar code XX[]:

2.程序中的要对一些数据进行掉电保存,我这里用到了单片机内部自带的EEROM,在编写程序中也遇到

一些问题,只能保存一个数据,

后面:后面调了一下程序:发现一个问题,就是每个对数据进行更新的话,都要对你定义的所以地址的内

容进行,然后在写入,单对某个地址的话就是不行,:

//=======================对保存的四个数据位进行清除扇区

Sector_Erase(add1);

Sector_Erase(add2);

Sector_Erase(add3);

Sector_Erase(add4);

_nop_();_nop_();_nop_(); //===小延时一下

//=====================写入要保存的数据位,也是一次要保存好4个数据,不能单一进行了,不然就

会只能保存一个数据

Byte_Program(add1,key_count);

Byte_Program(add2,(char)CLAMP_flag);

Byte_Program(add3,(char)CONV_flag);

Byte_Program(add4,(char)MODE_flag);

3,我这里的PLC用的通信协议是:9600BPS N 7 2

也就是:一个起启位,7个数据位,两个停止位,无校验的形式;

这个我在单片机中用的通信协议是:9600BPS N 8 1

也就是:一个起启位,8个数据位,一个停止位,无校验的形式;

这些两个协议就不对了,哪就要去兼容了,根据数据的原理,我们只在发的数据的最高位是1(也就是一

个停止位)就可以兼容这种PLC的通信协议的形式了:

相关推荐