关于51单片机和三菱PLC通讯方面的危机
发布网友
发布时间:2022-05-01 07:12
我来回答
共4个回答
热心网友
时间:2022-06-25 22:42
象你这个单片机机急用中断来接收不用去判断RI,把51的中断打开他自动收,然后你去读取SBUF里面的内容,这时SBUF里面的就是你PLC传给你单片机的,如果是06H,单片机继续发送你的通讯数据就行了 ,51每发送一个字节数据,就去检测PLC发回的是不是06就行了,原理就是这样,
至于PLC那边,你和51相互配合就行了,每从51接收一个你就发送一个06H
最后再建议一下:在我看来你这样的一个通信协议,不是很严密,万一中途数据丢包,没有个很好的机制来处理,造成通信不准确
热心网友
时间:2022-06-25 22:43
单片机一次只能发一个字符,通讯字符帧妖分成若干个SBUF[]数组,逐个发出,发完后等待下位的信号,你这个格式有点像MODBUS啊
“
热心网友
时间:2022-06-25 22:43
建议首先使用软件接收PLC发送的数据,可以自己编写VC或者VB,分析后。用单片机接受一下,找本书看看例子。
热心网友
时间:2022-06-25 22:44
建议单片机与PLC编程口直接通讯,读取PLC内存数据,这样PLC不用另外编写通讯程序;具体方法我简单说一下:
1、DEVICE READ(读出软设备状态值)
计算机向PLC发送:
始 命令 首地址 位数 终 和校验
STX CMD GROUP ADDRESS BYTES ETX SUM
例子:从D10开始读取2个字节数据(16位数据)
02h 30h 31h,30h,31h,34h 30h,32h 03h 35h,41h
D地址算法:address=address*2+1000h
D10地址:1014h
再转换成ASCII
31h,30h,31h,34h
PLC返回
STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
注:最多可以读取64个字节的数据
例子:从指定的存储器D10单元读到1234h(10进制数为3124)这个数据
02h 33h 34h 31h 32h 03h 42h,43h
我以前做过类似的监控和解密,用的是vb,两者通讯协议是一样的,你可以先用串口工具试一下协议再到单片机上写,有什么不明白的可以的Q我,祝你成功!。。对你的遭遇深表同情,我也快失业了,现在搞工控PLC混不到吃啊,有哪位好心人指点一下迷津。。