搜索
bottom↓
回复: 9

共享一个PIC串口RS232移植FREEMODBUS/RTU通信的范例

[复制链接]

出0入0汤圆

发表于 2014-11-4 09:59:05 | 显示全部楼层 |阅读模式
最近由于工作需要,提前研究了下freemodbus;经过几天的研究折腾,终于可以通过RS232方式实现freemodbus/RTU通信,后续工作中会移植到RS485中去。
先简单介绍一下:
平台和工具:PIC16F1829/MPALB_IDE+picc9.80+ICD3
PROTEUS仿真和硬件实现均验证通过;
总结:
1、感觉PIC/PICC移植freemodbus还是有点麻烦的,对源代码进行了一些修改;
2、自己重新编写portserial.c和porttimer.c文件的内容;
3、测试只进行了38400/N/8/1的通信情况,MODBUS POLL显示没有异常(无错误与丢包现象);
4、发现PICC9.80编译器(16系列)下定义全局数组大小不能大于256,否则会出现问题;但是18系列却没有这个问题,估计跟芯片还是有点关系的;
最后,上工程问题,包括源代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出100入101汤圆

发表于 2014-11-4 10:06:47 | 显示全部楼层
貌似18系列也存在同样的问题。需要修改link文件。

出0入0汤圆

 楼主| 发表于 2014-11-4 10:45:29 | 显示全部楼层
本帖最后由 yklstudent 于 2014-11-4 10:47 编辑
fengyunyu 发表于 2014-11-4 10:06
貌似18系列也存在同样的问题。需要修改link文件。


PICC18-9.80版本下,开辟ushort buff[130]的数组,显然大小超过256Byte,但是通信接收数据正常,自然发送也正常;
但是PICC-9.80版本下,同样开辟ushort Buff[130]的数组,通信接收超过4个Byte就会出问题(具体现象为第五个以后的数据没法存储),导致通信没法工作;
其它没有深入研究

编辑原因:修改错别字

出0入0汤圆

发表于 2014-11-4 21:43:56 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2014-11-4 22:58:17 | 显示全部楼层
谢谢分享,FREEMODBUS/RTU。

出0入0汤圆

发表于 2015-1-9 10:01:41 | 显示全部楼层
在stm32上实现了freemodbus,看看如何在pic上实现的

出0入0汤圆

发表于 2015-1-10 14:39:06 | 显示全部楼层
楼主好资料,期待RS485的。

出0入0汤圆

发表于 2015-1-10 16:36:17 | 显示全部楼层
yklstudent 发表于 2014-11-4 10:45
PICC18-9.80版本下,开辟ushort buff[130]的数组,显然大小超过256Byte,但是通信接收数据正常,自然发送 ...

之前用过
是要改.LKR文件

定义大数组
#pragma udata buffer_scn
uint8 Write_Buffer[1024];
uint8 Read_Buffer[1024];
#pragma udata

.LKR文件  改成一个块
DATABANK   NAME=big       START=0x200             END=0x9FF        PROTECTED
//DATABANK   NAME=gpr2       START=0x200             END=0x2FF
//DATABANK   NAME=gpr3       START=0x300             END=0x3FF
//DATABANK   NAME=gpr4       START=0x400             END=0x4FF
//DATABANK   NAME=gpr5       START=0x500             END=0x5FF
//DATABANK   NAME=gpr6       START=0x600             END=0x6FF
//DATABANK   NAME=gpr7       START=0x700             END=0x7FF
//DATABANK   NAME=gpr8       START=0x800             END=0x8FF
//DATABANK   NAME=gpr9       START=0x900             END=0x9FF

SECTION NAME=buffer_scn RAM=big

出0入475汤圆

发表于 2015-1-10 20:54:39 来自手机 | 显示全部楼层
使用新的编译器就不用手工管理内存分配了

出0入0汤圆

发表于 2015-3-25 10:38:09 | 显示全部楼层
楼主可以共享protues仿真图吗
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-1 06:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表