kuzhuu 发表于 2009-9-7 11:39:56

MODBUS协议---多机通讯

最近失业,心情不好,相当的不好,为什么为什么一份工作总的做不长......很是郁闷,所以就狂看书,狂吃饭,狂抽烟.......
   加上上次说要搞个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

因为本程序写的比较急促,难免有不当之处,请高手指点 谢谢 ,
http://cache.amobbs.com/bbs_upload782111/files_18/ourdev_478579.jpg
(原文件名:1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_18/ourdev_478580.jpg
(原文件名:2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_18/ourdev_478581.jpg
(原文件名:3.jpg)




点击此处下载 ourdev_478582.rar(文件大小:624K) (原文件名:桌面.rar)

yixin 发表于 2009-9-7 11:48:55

顶下,顺便祝楼主早日找到如意工作

kuzhuu 发表于 2009-9-7 12:19:49

我会努力的,相信自己

./emotion/em011.gif

yingfu_758 发表于 2009-9-7 13:05:56

不错!谢谢分享!

ivws 发表于 2009-9-7 14:39:42

同道中人..顶!

zcllom 发表于 2009-9-7 20:36:34

好样的。

kingsabbit 发表于 2009-9-7 23:03:28

原理图不错

kuzhuu 发表于 2009-9-10 11:34:26

最近东莞那边的一家叫石龙京瓷光学有限公司打电话给我然后在电话里面面试了,我面试的是嵌入式单片机的工作,不知道有那位对石龙京瓷比较了解的,说说的怎么样!!!因为我现在在苏州,要是不怎么样的话,我去了就没多大的意思,还花掉好几天的时间和盘缠,。。。。。。呵呵

kuzhuu 发表于 2009-9-10 14:23:58

面试成功,一举拿下   石龙京瓷光学有限公司   工资待遇都还可以,准备明天就挥师南下   ./emotion/em017.gif
    以后就有更多的时间和大家一起交流单片机技术了 ,也希望有志同道合者与我相拌!!!

sharehej 发表于 2009-9-17 23:53:59

mark

shinehjx 发表于 2009-9-18 08:32:45

我在石龙附近,不过不了解京瓷

主程序用了很多while,这习惯很不好,会使程序效率降低并且有很大的机会陷入死循环
没有看到是怎样判断接收到的数据是否正确
没有看到至少3.5字节的超时判断
感觉程序有点乱,可能我水平太次难以看懂

kuzhuu 发表于 2009-9-26 10:00:23

呵呵这个程序写的是比较乱了因为条件有限能力有限加上要在Protues里面仿真还有MODBUS里面的协议还没有体现出来呵呵不过这些都可以自己加上去的   然后51里面的T/C0 T/C1不能同时用而通讯里面比较要有T/C1提供波特所以 有些力不从心

如果有高手的话可以教教我哦

stefgq 发表于 2009-9-26 10:07:13

mark

ylei12 发表于 2009-9-26 10:23:41

生活总是会有不顺利的时候,楼主加油啊

qtds11 发表于 2009-9-28 10:45:04

下载收藏了,楼主加油~~~~~

cnzhy88 发表于 2009-10-5 18:26:19

谢谢了。

sosingle 发表于 2009-10-5 22:48:22

不错的,正在学这个东西呢,谢谢楼主

maxsuntech 发表于 2009-12-30 21:13:29

lyping1987 发表于 2009-12-30 21:31:50

楼主使用的什么软件仿真?

kuzhuu 发表于 2009-12-31 09:18:55

Protues   最好下载经典的6.9版本!!

tingfenghu 发表于 2010-2-17 17:49:25

mark

kouxiangtang 发表于 2010-2-17 18:36:07

zhanglongtumi 发表于 2010-3-7 21:14:52

顶啊

yunqian09 发表于 2010-3-7 21:59:04

mark

wuaaa 发表于 2010-5-24 15:19:21

顶上

heroopan 发表于 2010-6-11 15:59:35

学习学习

wkman 发表于 2010-6-11 17:27:31

了解一下mudbus

benlippen 发表于 2010-7-10 22:28:19

学习

lffpga 发表于 2010-7-12 16:34:10

学习

cuikai12345 发表于 2010-7-12 22:55:22

mark

aijiawo 发表于 2011-3-11 23:13:16

mark

jadeyang 发表于 2011-3-31 16:10:16

mark

spadexx 发表于 2011-4-10 12:14:46

mark

zhangjinxing 发表于 2011-4-10 21:35:09

mark

ggsx2008 发表于 2011-4-19 20:43:11

记号

loveskangaroo 发表于 2011-4-23 18:35:37

收藏   楼主加油!

G_round 发表于 2011-6-26 10:04:19

记号

lovewwy 发表于 2011-6-26 10:07:48

mark.

ustcgesa 发表于 2011-9-26 13:38:52

mark!

WinLiu 发表于 2011-11-3 15:26:03

mark

skyfly0703 发表于 2011-11-25 10:03:18

mark

love_zjb 发表于 2011-11-25 12:34:39

mark

hclcwx 发表于 2011-11-25 23:02:53

ding

liudaolunhui 发表于 2011-11-26 00:09:42

mark

yongjun_gong 发表于 2012-5-29 19:26:26

      学习一下

zhuangchao12 发表于 2012-5-30 00:11:48

有时间看看学一下

arzy 发表于 2012-5-30 15:25:58

好,都有同感,楼主努力

zjnuzzl 发表于 2012-5-31 15:09:58

楼主加油。

jklooo 发表于 2012-7-12 17:00:40

顶,强力顶

liujing8862770 发表于 2013-7-23 14:13:27

顶一个!

lryxr2507 发表于 2013-7-23 14:35:41

一直在尝试多机通讯,结果就是不理想,下来看看楼主的方法.

a794001114 发表于 2013-7-24 17:50:55

markMODBUS协议之多机通讯

wangyy@dianzi 发表于 2013-7-25 16:38:54

你学的程序确实不太好,效率很低,CRC校验最好使用查表法,另外你没有做至少3.5个字符贞的检测,完全是循环等待,这样浪费了CPU,你应该使用定时器去做这个通信协议。希望对你有帮助

xiefy21 发表于 2013-8-14 20:15:32

mark……
顶一个…

simahacker 发表于 2014-6-28 01:38:23

多谢楼主分享!
页: [1]
查看完整版本: MODBUS协议---多机通讯