amobbs.com 阿莫电子技术论坛
标题:
简单的MODBUS协议实现一主机对多从机轮询的示例(主从机均为51单片机,485通讯,PROTEUS仿
[打印本页]
作者:
lylatyou
时间:
2011-2-9 03:11
标题:
简单的MODBUS协议实现一主机对多从机轮询的示例(主从机均为51单片机,485通讯,PROTEUS仿
我在开发产品的时候做的一个通讯测试工装,就是做一个简易小巧的模块安装在产品测试架上方便跑流水线,模块作为主机轮询若干产品。这样就省去了使用计算机加485转换器的麻烦。
在工装设计之前做了这么一个仿真示例,展示主机与从机之间应用简易的MODBUS 04命令进行轮询会话的过程。PROTEUS设计中有标示,程序中代码有注释,希望能对需要的朋友有所帮助。
今天我小改了下,给每个51从设备增加了一个I2C接口的ADC0831,它的用法大家都懂得,就是为了增加一个采样信号,主机通过协议来轮询这个采样信号,解析后显示在主机的LCD屏的对应位置上。
C代码、HEX文件、PROTEUS设计
ourdev_615093XEN4TE.rar(文件大小:178K)
(原文件名:POLLING-new.rar)
PROTEUS设计运行
(原文件名:POLLING.JPG)
作者:
good_001
时间:
2011-2-9 06:17
顶
作者:
edaworld
时间:
2011-2-9 06:24
马克思
作者:
vipcff
时间:
2011-2-9 07:07
mk
作者:
xiaowei0588
时间:
2011-2-9 08:22
很好!
作者:
telwin
时间:
2011-2-9 09:10
回复【楼主位】lylatyou 张伯伦
-----------------------------------------------------------------------
学习,3Q
作者:
lucaschou
时间:
2011-2-9 09:15
mark
作者:
elsonx
时间:
2011-2-9 11:26
mark
作者:
tingfenghu
时间:
2011-2-9 12:09
好东东,留名
作者:
windboy
时间:
2011-2-9 12:29
mark
作者:
muzheyun
时间:
2011-2-9 12:55
mark
作者:
ljt8015
时间:
2011-2-9 13:06
mark!~
作者:
showgu
时间:
2011-2-9 16:10
mark
作者:
cuikai12345
时间:
2011-2-9 18:26
mark
作者:
ztrx
时间:
2011-2-9 19:13
MODBUS标记,谢谢
作者:
zoto
时间:
2011-2-9 21:12
赞
作者:
lylatyou
时间:
2011-2-10 03:10
修改了下,从设备加了个ADC采集信号,主设备用LCD把轮询到的采样信号显示出来。
作者:
zhangjinxing
时间:
2011-2-10 07:02
mark
作者:
gxy508
时间:
2011-2-10 10:26
mark
作者:
lee345
时间:
2011-2-12 11:00
认真学习下借鉴
作者:
Adrian
时间:
2011-2-12 13:14
呵呵 不错的 学习下
作者:
wtiechen1969
时间:
2011-2-12 15:38
mark
作者:
hbzxx
时间:
2011-2-16 15:02
学习了。
作者:
plc_avr
时间:
2011-2-16 15:15
谢谢。。。。。。
作者:
bmw53
时间:
2011-2-24 13:00
无私的朋友,可以留下QQ吗,学习学习。
作者:
xintaisniper
时间:
2011-2-28 20:24
呵呵,好强大
作者:
charlie2008
时间:
2011-3-1 08:56
mark!
作者:
snowy
时间:
2011-3-1 09:35
mark
作者:
aijiawo
时间:
2011-3-11 19:06
不错,谢谢楼主无私的共享,学习了!
作者:
stely
时间:
2011-3-11 19:34
mark
作者:
danceman_uk
时间:
2011-3-14 01:38
马克思
作者:
liumaojun_cn
时间:
2011-3-14 09:00
mark
作者:
jadeyang
时间:
2011-3-26 15:17
mark
作者:
mailzql
时间:
2011-3-26 15:28
标记
作者:
wukaka
时间:
2011-3-27 11:25
适合我这菜鸟!谢谢LZ
作者:
jadeyang
时间:
2011-3-31 16:05
mark
作者:
sunjyong
时间:
2011-3-31 17:22
谢谢楼主,学习了
作者:
beiyunhe
时间:
2011-3-31 19:43
mark,顶起
作者:
jadeyang
时间:
2011-4-1 20:57
回复【楼主位】lylatyou 张伯伦
-----------------------------------------------------------------------
楼主你好,我是个初学者正研究这个程序
请问这个子程序void mdproc(uchar b)
{ Uint16 temp16_1,temp16_2;
if(nodeok==0)
{ if(b==send101[0])
{ nodeok=1;
revptr=1;
mrx[0]=b;
}
}
else if(revptr<11)
{ mrx[revptr++]=b;
}
else
{
revptr=0;
nodeok=0;
temp16_1=Crc16(mrx,9);
temp16_2=mrx[9];
temp16_2<<=8;
temp16_2|=mrx[10];
if(temp16_1==temp16_2)
{ crcok=1;
//rcnt=~rcnt;
//rcnt=~rcnt; // generate a pulse to the counter in proteus when received correct frame
}
}
这句temp16_2|=mrx[10]是不是有问题,还有procok,crcok这两个变量分都代表什么
作者:
xiaolei0428
时间:
2011-4-3 16:48
mark
作者:
liu_xf
时间:
2011-4-3 17:05
楼主能不能介绍一下协议,超时和重发。热拔插会不会死机
作者:
lylatyou
时间:
2011-4-3 23:25
LS的,MODBUS是一个软件的协议,如果能解决硬件的抗静电过压等问题,热插拔是不会有问题的。
超时与重发都是你自己写代码来控制的。比如你发送一个请求帧出去后开始计时,收到对应的ID设备的有效回复后,关闭计时器并清除及时,然后重复下一次操作。如果在计时上限没有收到有效的回复,则掉包计数器加1,然后重发并重新计时,掉包计数器达到你预定的数值后,则置位通讯错误信号。。。。。起始MODBUS可以理解为一种思想,很多都是自己编程实现的,当然也有现成的标准MODBUS协议包可以直接来用,现实中为了优化,只使用少量的功能号。
作者:
unicontrol
时间:
2011-4-3 23:38
这个要顶呀。
作者:
tian_tian_kan
时间:
2011-4-18 09:55
多谢楼主,好东西啊
作者:
loveskangaroo
时间:
2011-4-23 18:58
mark
作者:
xiaolian519
时间:
2011-4-25 16:20
谢谢!
作者:
xuyingjuna
时间:
2011-5-3 15:41
好,谢谢楼主共享
作者:
dujun168
时间:
2011-9-1 11:28
mark谢谢楼主共享
作者:
qhshilin
时间:
2011-9-1 11:40
学习,3Q
作者:
Bicycle
时间:
2011-9-1 11:47
留上脚印,谢LZ
作者:
wwqq
时间:
2011-9-1 11:56
回复【51楼】Bicycle 单车
留上脚印,谢lz
-----------------------------------------------------------------------
+1
作者:
l09046162
时间:
2011-9-1 13:45
mark
作者:
gusigusi
时间:
2011-9-1 14:23
严重顶!
作者:
haolaishi
时间:
2011-9-14 17:23
mark
作者:
l09046162
时间:
2011-9-17 14:53
mark
作者:
cndongj
时间:
2011-9-17 16:38
mark,谢谢
作者:
ustcgesa
时间:
2011-9-26 11:26
多谢!
作者:
mculushp88
时间:
2011-10-11 17:23
LZ请问这种多机通信中的“轮询”啥意思?难道是逐个扫描?
作者:
hero245
时间:
2011-10-22 14:48
mark
作者:
cqxubo01
时间:
2011-10-22 15:11
mark
作者:
center311
时间:
2011-10-22 18:03
mark
作者:
fanwt
时间:
2011-10-22 18:19
modbus mark
作者:
miss12643
时间:
2011-10-22 19:15
mark
作者:
rlogin
时间:
2011-10-22 20:58
记号
作者:
gaochen15159
时间:
2011-11-10 22:48
谢谢楼主
作者:
truemanfjk
时间:
2011-12-8 12:40
回复【楼主位】lylatyou 张伯伦
-----------------------------------------------------------------------
好帖子!
作者:
xslff
时间:
2011-12-8 13:24
必顶!
作者:
mcu_mouse
时间:
2011-12-8 17:44
mark
作者:
USACH
时间:
2011-12-8 18:02
回复【40楼】liu_xf 新发
-----------------------------------------------------------------------
超时和重发在modbus协议里面讲得比较清楚啦。协议我想你有的,如果没有,看我发的主题,有上传。
另:freemodbus源程序里面对重发和超时做得比较好,我正在移植到430.
作者:
635656623
时间:
2011-12-8 18:19
顶一个!mark!
作者:
taojie
时间:
2011-12-8 18:20
呵呵
作者:
liangwb
时间:
2011-12-8 18:25
好东西 ,学习学习
作者:
senzh01
时间:
2011-12-8 20:57
这个挺好啊
作者:
sunluster
时间:
2011-12-8 22:02
学习学习
作者:
fzkqi
时间:
2011-12-8 23:17
mark
作者:
yww214
时间:
2011-12-10 10:26
狂顶啊,正在学习!
作者:
sias1002
时间:
2011-12-14 16:13
if(ruf1[3]==0xed)
{
LCD_Write_String(1,5,"456");
delay_ms(500);
if((addr==0x10)&&(ruf1[2]==0x0)){ FLAG1=1; }
if((addr==0x10)&&(ruf1[2]==0xff)) {FLAG1=0; }
LCD_Write_String(1,5,"####");
delay_ms(500);
if((addr==0x20)&&(ruf1[2]==0x0)) {FLAG2=0;}
if((addr==0x20)&&(ruf1[2]==0xff)){ FLAG2=1;}
LCD_Write_String(1,5,"ruf1[3]");
}}
作者:
zhanliang
时间:
2012-1-17 11:10
来学习下楼主的思想!
作者:
goldrained
时间:
2012-1-17 14:40
顶一下
作者:
madswan
时间:
2012-1-25 22:38
mark,以后有用
作者:
ni_fogota
时间:
2012-1-26 15:38
非常有用...可以拿来做多芯片机器
作者:
cookie
时间:
2012-2-6 09:53
赞
作者:
zy0818
时间:
2012-2-7 21:41
mark
作者:
williamrain
时间:
2012-2-19 14:54
可以看看
作者:
CK345
时间:
2012-2-19 15:08
mark
作者:
myh_hh
时间:
2012-2-21 16:24
mark 一定要加crc!
作者:
yxyax
时间:
2012-2-22 16:40
学习一下,谢谢分享
作者:
haphard
时间:
2012-2-22 16:53
好资料啊!谢谢
作者:
auto01
时间:
2012-2-28 14:45
想了解一下校验部分是怎样做的
作者:
peter_yu
时间:
2012-3-3 09:06
谢谢楼主!
作者:
紧急出口
时间:
2012-4-21 16:34
我想要啊,能把所有程序什么的发我邮箱吗?
921905701@qq.com
作者:
583362324
时间:
2012-5-2 21:24
楼主大哥,这是老论坛附件了 下载不了,能发到我邮箱:
583362324@qq.com
急需要! 论坛管理者连续看了一个星期杂还是不能下载! 郁闷,纠结 下载不了 就暂封了
作者:
ad00r
时间:
2012-5-3 08:10
正在学习modbus,用51上传到PC机的modbus模拟器。求解中
作者:
zjk
时间:
2012-5-3 09:14
不错啊,mark
作者:
mengy325
时间:
2012-5-4 11:32
来支持下。感谢!
作者:
yuyous
时间:
2012-5-15 15:22
mark
作者:
rowa
时间:
2012-5-15 15:31
不错啊
作者:
johnsonz999
时间:
2012-5-15 15:55
MARK!!!!!!!!!!!!
作者:
liuruoshui
时间:
2012-5-15 16:51
下来研究一下架构
作者:
xukai871105
时间:
2012-10-13 20:22
研究一下楼主的思路!
学艺不精,代码看了很多不懂啊!
欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/)
Powered by Discuz! X3.4