第一篇:对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结
对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结
2011-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用的通信协议是:9600BPSN 7 2
也就是:一个起启位,7个数据位,两个停止位,无校验的形式;
这个我在单片机中用的通信协议是:9600BPSN 8 1
也就是:一个起启位,8个数据位,一个停止位,无校验的形式;
这些两个协议就不对了,哪就要去兼容了,根据数据的原理,我们只在发的数据的最高位是1(也就是一
个停止位)就可以兼容这种PLC的通信协议的形式了:
第二篇:VB实现PC与欧姆龙PLC通讯的串口编程
Private Sub Form_Load()
Dim i As Integer'OPEN COM1
If ComTrue(1)= 0 Then
If ComOpen(1, 38400, 7, 1, 1, “sjh”)= 1 Then 'MsgBox(“已注册”)'sjh为你的注册账号Call SetDelayNum(64)
End If
End If
jisu
jisu1
jisu2
End Sub