<menuitem id="3samg"></menuitem>

    1. 加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線17838383235
      公司新聞
      6ES7332-7ND02-0AB0現貨西門子代理
      發布時間: 2024-03-11 11:57 更新時間: 2024-10-30 14:14

      6ES7332-7ND02-0AB0現貨西門子代理

      6ES7332-7ND02-0AB0現貨西門子代理

      6ES7332-7ND02-0AB0現貨西門子代理



      西門子S7-200 PLC modbus通訊控制變頻器(一)



      (1)Modbus通訊

      S7-200的Modbus通訊:

      S7-200只支持Modbus RTU協議,不支持Modbus ASCII協議;

      Modbus是一種單主站的主/從通信模式。一條Modbus網絡上同時只能有一臺主站,從站可以有若干個(如下圖所示)。從站的地址范圍為1-247;


      圖片


      一個Modbus通訊的傳輸字符應包括一個起始位,8個數據位,1個或0個校驗位(奇偶校驗或無校驗可選擇),以及一個停止位。

      在S7-200 CPU通信口上實現的是RS485半雙工通信,使用的是S7-200的自由口功能。

      圖片


      上圖是一個典型的主站和從站的網絡結構,對于Modbus主站而言可以對從站進行讀或者寫的操作,其中它所支持的功能碼(FC,Function Code)包括主站左側表格中所述功能,例如功能碼為'01'時表示讀取單個/多個線圈(DO)狀態或功能碼為'04'時表示讀取單個/多個輸入寄存器(AI)狀態。


      而對于從站,我們只需要把Modbus的標準地址和從站的地址對應關系建立好就可以了,S7-200的從站與Modbus標準的對應關系如從站右側表格所示。


      表中左側是Modbus標準地址碼,其中1-128對應于S7-200的Q0.0-Q15.7,10001-10128對應于S7-200的I0.0-I15.7,30001-30032對應于AIW0-AIW62,40001-4xxx對應的是S7-200的保持寄存器(V區),它的范圍是T-T+2*(xxxx-1),T表示的是V區的起始地址,這一點由Modbus從站的指令所決定的。

      圖片


      Modbus的主站指令叫做MBUS_MSG,通過這條指令可以將Modbus的標準報文發給從站,例如在上圖例子當中從站的個字節是03,表示的是從站的地址,FC功能碼為03,表示的是讀取單個/多個保存寄存器,Modbus標準地址是40001,長度是10。隨著功能碼的不同,報文的格式會發生相應的變化,具體的報文格式需要去參閱Modbus的通訊手冊。

      從站的指令時MBUS _SLAVE,在接到主站發給它的報文后會根據報文的需求返回報文,比如在上圖例子中返回的格式是個字節為從站的地址,第二個為功能碼,第三個是數據返回給主站,這樣就完成了一次Modbus通訊的請求與應答的過程。


      (2)Modbus庫文件的安裝和調用

      圖片


      如果想要應用Modbus指令庫,那么首先需要到因特網上或者向西門子的客服人員申請名稱為'Toolbox_V32-STEP 7-Micro WIN' 的指令庫,將它解壓并且安裝到Micro WIN當中就可以使用了,安裝后會在Micro WIN的庫文件當中出現上圖標記的三個庫,其中Port0和Port1都可以做Modbus Master,而Slave只有Port0口可以做。


      (3)Modbus庫文件的使用

      圖片


      使用方法很簡單,打開Modbus主站指令庫會有相應的指令塊出現,直接把指令塊拖拽到程序當中進行調用就可以了。

      圖片


      在調用Modbus庫指令的時候,需要注意一定記得為Modbus庫文件分配庫存儲區。具體的方法是右鍵單擊庫,然后選擇庫存儲區,在彈出來的對話框當中可以選擇建議地址,自動分配一個程序里面不會用到的地址區間,也可以人為地手動填寫起始地址,這個區間在程序當中不可以和其他的數據區相沖突,否則Modbus功能將不正常。


      所謂的庫存儲區其實就是Modbus指令庫能夠正常工作所必須的一部分背景數據,只要給它分配好區間并保證不與程序當中其他的地址相沖突就可以了。

      (4)Modbus從站指令


      圖片


      從站指令一共有兩條,條是從站的初始化指令(MBUS_INIT),另一條是MBUS_SLAVE從站指令,在Modbus從站的初始化指令當中涉及哪些內容呢?

      首先,個引腳Mode表示等于1的時候是啟動Modbus,等于0的時候是關閉Modbus,Addr表示的是這個從站的從站地址,Baud表示波特率,Parity是奇偶校驗,0是無校驗,1是奇校驗,2是偶校驗,Delay是附加字符之間的延遲,MaxIQ表示的是大I/Q地址(默認128),MaxAI表示的是大AI長度(默認32),MaxHold表示的是大的V存儲區(VW),關鍵的是HoldStart,表示的是V區起始地址(對應40001),在之前已經提到過S7-200作為從站的時候,它的V區地址對應于Modbus標準地址的起始地址是可更改的,那么就在這里進行設定,在本例中如果HoldStart寫的是VB0,那么40001對應的地址就是VW0,40002對應的地址是VW2,40003對應的地址是VW4,以此類推,每一個標準的Modbus地址碼對應的是一個Word,以字為單位,同樣如果這里設的是VB100,那么40001對應的就是VW100,40002對應的是VW102,以此類推。


      這一條初始化指令只需要調用一次就可以了,所以在上圖中用的是SM0.1在上電的時候執行一次就可以了。


      MBUS_SLAVE這個功能塊必須要用前面的條件必須是一直為1的,上圖中用SM0.0。

      注:因為文章太長,后面的5、6、7內容明天分享,敬請期待~



      聯系方式

      • 電  話:17838383235
      • 經理:徐嘉泉
      • 手  機:17838383235
      • 微  信:17838383235