本帖最后由 eehome 于 2013-1-5 09:48 编辑
要搞个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
因为本程序写的比较急促,难免有不当之处,请高手指点 谢谢 ,
|
|
|
|
谢谢分享!!!
|
|
|
|
|
谢谢分享
|
|
|
|
|
头像被屏蔽
· 2012-6-27 09:22:19
|
|
|
|
|
谢谢楼主
|
|
|
|
|
感谢分享
|
|
|
|
|
头像被屏蔽
· 2012-8-17 16:45:07
|
|
|
|
|