久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4995|回復: 0
打印 上一主題 下一主題
收起左側

基于RS485 的Modbus RTU 接收機制

[復制鏈接]
跳轉到指定樓層
樓主
ID:82781 發表于 2015-6-13 00:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


由于LW同志的白眼所以今晚決定搞一下基于RS485的modbus RTU 模式代碼移植。

不同的是LW同志是自己實現,而我是使用現成的Modbus協議棧!

1、Modbus協議棧移植,
協議棧移植代碼不算復雜,用了2個小時完成移植 for arm 上運行。移植完畢編譯成功
注意端口內的操作函數,注釋掉,然后在填充硬件相關部分

2、Modbus
接收層
機理其實就是一個串口中斷,然后每接收一個字符都會啟動一個定時器計時并且存入BUFF中,同時刷新定時器值,這樣如果有字符接收那么定時器就不斷的刷新而不會溢出,當一幀接收完畢后定時器由于得不到刷新而溢出,這就會導致定時器的溢出。定時器一旦溢出就會觸發一次事件,通知應用層,我收到了一幀報文你可以來取走了。空口無平,要LW同志死心要上代碼的,come on !

以上為串口接收到一個字節中斷后調用,是一個指針函數,在協議棧初始化的時候他被定義為

也就是說我們只要找到這個函數即可找到串口的底層接收代碼,OK繼續

很不幸我們找到了,并且看到他從硬件中讀了一字節繼續
看他如何處理

哈哈到此已經可以看到了首先他狀態為,所以先接受存進buff,然后開啟定時器
接著如果再有數據中斷就會這樣

可見是一樣的,和上面,那么有字節就會一直這樣循環,當然不能大于
最后就是什么時候幀結束了呢?
首先幀結束了會停止中斷,然后定時器就得不到刷新,然后定時器就會中斷,然后,,,繼續

不好意思又是一個函數指針,他也是初始化定義了如下

繼續

很明顯到這里已經完成了底層的幀截獲,他上報給了應用層

也就是說他是利用字節超時作為幀結束的標志。這就RTU模式底層串口的接收處理。僅此而已。并不高深。

3、應用層
底層把數據投遞后,應用層通過

函數進行輪訓是否收到一幀數據
然后繼續


比較孰了吧,這是判斷是不是給我們的,或者是不是廣播地址,因為廣播首地址我們從機也是要接受滴!然后繼續告訴上層進入

此處完了之后之各種的讀寫

然后就是用戶針對這些填充的函數實體即可!!!OK


以上是理論分析,實際代碼測試不日擇機進行!!


有是LW同志!能不能老實點啊

比特電子
老王



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线精品一区二区三区 | 精品视频在线播放 | 成年人在线观看视频 | 成人精品 | 高清久久久 | 91在线精品视频 | a a毛片 | 999久久久久久久久6666 | 国产高清视频 | 久久一区二区三区电影 | 99精品99 | 在线观看 亚洲 | 国产在线观看一区二区三区 | 午夜视频在线观看网址 | 欧美日韩在线一区二区 | 成人在线视频免费观看 | 亚洲 欧美 精品 | 国产精品视频久久 | 在线亚洲一区二区 | 成人国产精品久久久 | 国产探花在线精品一区二区 | 2019天天操 | 黄色一级大片在线免费看产 | 精品久久久久久久久久 | 成人欧美一区二区三区黑人孕妇 | 日韩在线第一 | 久久国产欧美日韩精品 | 国产99热在线 | 精品亚洲一区二区三区 | 日韩美女爱爱 | 毛片网站在线观看 | 亚洲一区二区三区在线播放 | 中文字幕亚洲精品在线观看 | 久久久91精品国产一区二区三区 | 色在线看| xxxxxx国产 | 国产日韩欧美综合 | 免费观看一级毛片 | 国产成人免费视频 | 国产美女视频 | 中国美女撒尿txxxxx视频 |