1、先确认51单片机系统的接口种类与数量,如是否有RS-485\RS-232\CAN等接口;
2、如果有上述接口,建议使用RS-485接口进行通讯,因为RS-485口可以实现一主多从,可以接多个51单片机系统;
3、硬件使用西门子PLC的RS-485口,通讯协议选用最通用的MODBUS-RTU协议。采用西门子PLC的专用MODBUS指令,西门子PLC作为主站,51单片机系统作为从站。
4、51系统的MODBUS从站程序编制完毕,西门子PLC的主站MODBUS通讯程序编制完毕,且485硬件连接正常后,即可正常通讯。
希望能帮到你
象你这个单片机机急用中断来接收不用去判断ri,把51的中断打开他自动收,然后你去读取sbuf里面的内容,这时sbuf里面的就是你plc传给你单片机的,如果是06h,单片机继续发送你的通讯数据就行了,51每发送一个字节数据,就去检测plc发回的是不是06就行了,原理就是这样,
至于plc那边,你和51相互配合就行了,每从51接收一个你就发送一个06h
最后再建议一下:在我看来你这样的一个通信协议,不是很严密,万一中途数据丢包,没有个很好的机制来处理,造成通信不准确
plc和单片机编程序的思维方式是不一样的,所以需要放弃掉plc的思维方式。要搞单片机(比如51单片机),建议先学习下c语言,汇编(和plc的特殊指令有些类似)也是可以的,但是现在用的人不多,遇到问题网上很难找到解决方法。有资金的可以买块开发板,没有的可以用proteus仿真软件(这个软件也是很强大的), 其次安装上keil软件(51单片机), 网上找找别人的gpio控制实例弄弄先感性的认识下。最后就是看单片机芯片资料,然后一块一块地做实验学习(gpio, 中断,定时,串口,adc, dac,数码管扫描,按键扫描, iic总线,spi总线,lcd *** 作等),学完这些基本上就能做些综合性的项目了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)