MODBUS协议---多机通讯

2020-01-23 14:34发布

最近失业,  心情不好,相当的不好,为什么为什么一份工作总的做不长......很是郁闷,所以就狂看书,狂吃饭,狂抽烟.......
   加上上次说要搞个MODBUS协议,这几天刚好有空,所以就把它写了出来,里面还是有点问题,但是总体上问题不大,如果有的话应该是在某些细节上,呵呵 ,  同时也希望能得到多多的指点  谢谢,如果感觉还行给我顶下!!

说明:
1、
//*************************************************************************************************************
//主题: Modbus协议--多机通讯 ---AT89C52 Serial-m 主机部分
//编者:李 锦 华
//时间:2009-09-01
//QQ : 492031062  尽供交流用,无事勿扰 ,谢谢合作
//E-mail:li_jin_hua2006@yahoo.com.cn
//主页:http://hi.baidu.com/kuzhuu
//地点:园林  苏州
//注:  如对此程序设计有更好的建议,请发送信息到我的E-mail,我会非常感谢的!
//*************************************************************************************************************
2、此程序遵循MODBUS通讯协议,可以实现 功能码06--写单个积存器 和05--写单个线圈的功能,考虑到可以直观的看到效果和实际情况,如写单个积存器只能写到地址0x0001中去且写的数字必须要小于9,因为只用了一个数码管,,但是不防碍你写不同的地址和大于9的数字,只是不能显示出来,如 你可以输入如 02 06 00 01 00 09     则在站号02的数码管中显示9 这个数字   
3、因为只用了P32 P33 P34 这三个口来显示功能码05 所以在写线圈的时候,最好不地址不要超过0x0002
,还有根据我的实际情况对05功能做了点修改,就是状态1 由原来的0xff00改为了现在的0x0100,即把ff改为了0x01 后面的00不变,如果是状态0 和以前的Modbus 协议保持一致,如要开站号03的P32口的等,即在主机中按A键后输入:03 05 00 00 01 00  

因为本程序写的比较急促,难免有不当之处,请高手指点 谢谢 ,

(原文件名:1.jpg)


(原文件名:2.jpg)


(原文件名:3.jpg)




点击此处下载 ourdev_478582.rar(文件大小:624K) (原文件名:桌面.rar)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
54条回答
kuzhuu
1楼-- · 2020-01-24 18:29
最近东莞那边的一家叫  石龙京瓷光学有限公司打电话给我  然后在电话里面面试了,我面试的是嵌入式单片机的工作,不知道有那位对石龙京瓷比较了解的,说说的怎么样!!!因为我现在在苏州,要是不怎么样的话,我去了就没多大的意思,还花掉好几天的时间和盘缠,。。。。。。呵呵
kuzhuu
2楼-- · 2020-01-24 20:28
面试成功,一举拿下   石龙京瓷光学有限公司   工资待遇都还可以,  准备明天就挥师南下     
    以后就有更多的时间和大家一起交流单片机技术了 ,也希望有志同道合者与我相拌!!!
sharehej
3楼-- · 2020-01-24 23:30
 精彩回答 2  元偷偷看……
shinehjx
4楼-- · 2020-01-25 03:31
我在石龙附近,不过不了解京瓷

主程序用了很多while,这习惯很不好,会使程序效率降低并且有很大的机会陷入死循环
没有看到是怎样判断接收到的数据是否正确
没有看到至少3.5字节的超时判断
感觉程序有点乱,可能我水平太次难以看懂
kuzhuu
5楼-- · 2020-01-25 03:52
呵呵  这个程序写的是比较乱了  因为条件有限  能力有限  加上要在Protues里面仿真  还有MODBUS里面的协议还没有体现出来呵呵  不过这些都可以自己加上去的   然后51里面的T/C0 T/C1不能同时用  而通讯里面比较要有T/C1提供波特  所以 有些力不从心

如果有高手的话  可以教教我哦
stefgq
6楼-- · 2020-01-25 08:18
mark

一周热门 更多>