国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

ELEOK

標題: 發個S7200的modbus通訊例程源程序下載 [打印本頁]

作者: 山海致遠    時間: 2018-4-17 17:41
標題: 發個S7200的modbus通訊例程源程序下載
說下這個項目:
某揚水站的5臺機組的遠程控制,有5臺智能表,檢測5臺機組的工作電壓,工作電流,有功功率,功率因數等參數
還有5臺軟起的參數讀取,因為怕用485控制軟起不可靠,所以只讀取軟起的工作狀態,不知道做過的,有沒有知道,用modbus控制好不好用
言歸正傳 PLC那邊是母頭,這邊準備一個9針的公頭就可以了  3腳是A    8腳是B    2or5是地線,也就是內部的M端子
如果距離近,可以不接地線,有關這個地線怎么的說法很多,有的說可以不接,有的說接地是消除共模電壓,打過西門子技術,說是和設備地連一起
度娘了下,也有的說接地了反而不好的,現場實際,我是把所有的地線(注意不是屏蔽哦,是GND  )都連一起,不知那種做法好
另外說下,短距離通訊,只要從設備支持,用高點的波特率,提高反應速度  西門子技術說:s7200只支持50m的通訊距離,再遠了要加中繼器
設備上就不說了,就A B GND
還啰嗦一句,從設備的鏈接不能用星型解法,是一個一個的串聯的,手牽手鏈接

下面是程序了
說說我的方法:
按照官網的例程,是采用的輪詢,在初始化后,啟動modbus讀寫,啟動后要做循環,就是操作完最后一個讀寫塊后,要重新啟動第一個讀寫塊
也就是說,讀MBUS_MSG這個模塊要一個一個讀,官網上說,不能同時執行2個MBUS_MSG讀寫,啟動MBUS_MSG后,第一個讀完的完成位是第二個MBUS_MSG啟動的條件
第二個MBUS_MSG是后一個的啟動條件,最后一個讀完后,再啟動第一個MBUS_MSG
具體做法看程序,我這里是讀的一個從站的2個地址,還有另一個從站的一個地址
在最開始調試的時候,可以用sm0.5這個位作為啟動條件,測試一個MBUS_MSG  測試硬件是否正常,用狀態表監控收到的數據

重點說說這個模塊
EN   使能位,這個是模塊執行的條件,也是模塊的啟動條件
Fisrt   模塊觸發位,上升沿啟動模塊通訊
Slave   從站地址,這個不用說了吧
RW    讀寫控制   0讀 1寫
Addr    從站寄存器地址  可以參考官網的說明,實際這里如果是寄存器操作  40001  400001好像都可以 注意你的設備地址,數據
       40001  400001是首地址
Count    要讀寫的數據個數  這個剛開始很糾結,后來才知道的,新手是不是都糾結這個呀??????
          這個是你要讀寫的數據的個數,特別提醒,這個是字的個數,不是字節的個數,在485協議里可以看看
Dataptr    數據指針,你要讀出的數據,和要寫會的數據都放在這里
Done    模塊讀寫完成位,也是下一個模塊的執行條件,當一個模塊讀寫完成后,盡快的把要采集的數據讀出
Error     錯誤標志位,在程序里用來檢測錯誤,和錯誤處理

程序說明:
因為還沒有調試完,暫時只讀了6個從站
首先是初始化modbus   然后讀第一個MBUS_MSG    然后讀第二個,讀完最后一個后,根據條件把數據導出
注意數據導出條件   讀完標志位上升沿導出,不加條件,讀的數據會竄站
讀完數據后,更改從站地址,繼續下個從站的讀寫,一直把所有的都讀完。然后,在讀首從站 ,從站地址在程序里控制
然后是數據刷新,和總線故障處理

S7200的modbus通訊例程.rar (32.47 KB, 售價: 1 E幣)






歡迎光臨 ELEOK (http://m.afoofa.cn/) Powered by Discuz! X5.0