国精产品一区一区三区有限,国产欧美日韩,97热久久免费频精品99,初尝黑人巨砲波多野结衣

PLC企業資訊
    西門子s7-200 smart中的modbus rtu通訊
    發布者:bjigbt  發布時間:2022-06-08 11:22:49

    西門子s7-200 smart中的modbus rtu通訊

    s7 200 smart做為主站,從站為一個環保數采儀,從站地址為1:9600:8:無:1

    1、主站讀取從站的三個模擬量:400001(float),400083(int),400085(int)
    請問主站如何設置指針地址以及寄存器地址,需要做輪詢嗎,如何做。(多從站需要輪詢,這種單從站的如何讀跨度較大地址的數值)

    1、400001-400085 這一片連續區域讀,儀表允不允許讀,這個要看說明書;

         即使允許讀,數據量大,有效數占比很少,無用數多,會增加通訊負載;
         所以建議分次讀,用多條指令,輪循的方法。
         如 400083-400085 都允許讀,則用二條主站讀指令
    2、同一個從站,從站地址為1,基于上面
    第一條 MBUS_MSG 主要管腳
    Slave    1   從站地址
    RW       0   讀寫請求:0 = 讀, 1 = 寫
    Addr     400001   讀寫從站的保持寄存器起始地址
    Coun t  2   數據個數,這個數據類型是浮點數,點2 個字
    DataPtr  &VB0, 則VD0為讀來的從站 400001 保持寄存器數據
    第二條 MBUS_MSG 主要管腳    
    Slave    1   從站地址
    RW       0   讀寫請求:0 = 讀, 1 = 寫
    Addr     400083   讀寫從站的保持寄存器起始地址
    Coun t  3   數據個數,400083-40085 是3個字
    DataPtr  &VB4, 則VW4為讀來的從站 400083  保持寄存器數據
                                   VW6為讀來的從站 400084  保持寄存器數據
                                   VW8為讀來的從站 400085  保持寄存器數據
    3、如果要改成三條,參考上面給出的方法,也是可以的。
    4、參考資料

     

    Modbus RTU 主站指令庫

    西門子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站協議庫(西門子標準庫指令)。


    圖 1. 西門子標準指令庫(STEP 7-Micro/WIN SMART)

     注意:

    1. Modbus RTU 主站指令庫的功能是通過在用戶程序中調用預先編好的程序功能塊實現的,該庫對 CPU 集成的 RS 485 通訊口 和 CM 01 信號板有效。該指令庫將設置通信口工作在自由口模式下。
    2. Modbus RTU 主站指令庫使用了一些用戶中斷功能,編其他程序時不能在用戶程序中禁止中斷。
    3. Modbus RTU 主站指令庫不能同時應用于CPU 集成的 RS 485 通訊口 和 CM 01 信號板。

    使用 Modbus RTU 主站指令庫,可以讀寫 Modbus RTU 從站的數字量、模擬量 I/O 以及保持寄存器。

    Modbus RTU 主站功能編程

    1. 調用 Modbus RTU 主站初始化和控制子程序

    使用 SM0.0 調用 MBUS_CTRL 完成主站的初始化,并啟動其功能控制:


    圖 2. 用 SM0.0 調用 Modbus RTU 主站初始化與控制子程序

    各參數意義如下:

    a.
    EN
    使能:
    必須保證每一掃描周期都被使能(使用 SM0.0)
    b.
    Mode
    模式:
    為 1 時,使能 Modbus 協議功能;為 0 時恢復為系統 PPI 協議
    c.
    Baud
    波特率:
    支持的通訊波特率為1200,2400,4800,9600,19200,38400,57600,115200。
    d.
    Parity
    校驗:
    校驗方式選擇
     
    0=無校驗
    1=奇較驗
    2=偶較驗   
    e.
    Port
    端口號:
    0 = CPU 集成的 RS 485 通訊口 ; 1 = 可選 CM 01 信號板 。
    f.
    Timeout
    超時:
    主站等待從站響應的時間,以毫秒為單位,典型的設置值為 1000 毫秒(1 秒),允許設置的范圍為 1 - 32767。
     
     注意: 這個值必須設置足夠大以保證從站有時間響應。
    g.
    Done
    完成位:
    初始化完成,此位會自動置1。可以用該位啟動 MBUS_MSG 讀寫操作(見例程)
    h.
    Error
     
    初始化錯誤代碼(只有在 Done 位為1時有效):
     
    0= 無錯誤
    1= 校驗選擇非法
    2= 波特率選擇非法
    3= 超時無效
    4= 模式選擇非法
    9= 端口無效
    10= 信號板端口 1 缺失或未組態

     

    2. 調用 Modbus RTU 主站讀寫子程序MBUS_MSG,發送一個Modbus 請求;


    圖 3. 調用Modbus RTU 主站讀寫子程序

    各參數意義如下:

    a.
    EN
    使能:
    同一時刻只能有一個讀寫功能(即 MBUS_MSG)使能
     
     注意:建議每一個讀寫功能(即 MBUS_MSG)都用上一個 MBUS_MSG 指令的 Done 完成位來激活,以保證所有讀寫指令循環進行(見例程)。
    b.
    First
    讀寫請求位:
    每一個新的讀寫請求必須使用脈沖觸發
    c.
    Slave
    從站地址:
    可選擇的范圍   1 - 247
    d.
    RW
    讀寫請求:
    0 = 讀, 1 = 寫
     
     注意:
    1. 開關量輸出和保持寄存器支持讀和寫功能
    2. 開關量輸入和模擬量輸入只支持讀功能
    e.
    Addr
    讀寫從站的
    選擇讀寫的數據類型
     
     
    數據地址:
    00001 至 0xxxx - 開關量輸出
     
    10001 至 1xxxx - 開關量輸入
     
    30001 至 3xxxx - 模擬量輸入
    40001 至 4xxxx - 保持寄存器
    f.
    Count
    數據個數
    通訊的數據個數(位或字的個數)
     
     注意: Modbus主站可讀/寫的最大數據量為120個字(是指每一個 MBUS_MSG 指令)
    g.
    DataPtr
    數據指針:
    1. 如果是讀指令,讀回的數據放到這個數據區中
     
    2. 如果是寫指令,要寫出的數據放到這個數據區中
    h.
    Done
    完成位
    讀寫功能完成位
    i.
    Error
    錯誤代碼:
    只有在 Done 位為1時,錯誤代碼才有效
     
    0 = 無錯誤
    1 = 響應校驗錯誤
    2 = 未用
    3 = 接收超時(從站無響應)
    4 = 請求參數錯誤(slave address, Modbus address, count, RW)
    5 = Modbus/自由口未使能
    6 = Modbus正在忙于其它請求
    7 = 響應錯誤(響應不是請求的操作)
    8 = 響應CRC校驗和錯誤
    -
    101 = 從站不支持請求的功能
    102 = 從站不支持數據地址
    103 = 從站不支持此種數據類型
    104 = 從站設備故障
    105 = 從站接受了信息,但是響應被延遲
    106 = 從站忙,拒絕了該信息
    107 = 從站拒絕了信息
    108 = 從站存儲器奇偶錯誤

    常見的錯誤:

    • 如果多個 MBUS_MSG 指令同時使能會造成 6 號錯誤
    • 從站 delay 參數設的時間過長會造成主站 3 號錯誤
    • 從站掉電或不運行,網絡故障都會造成主站 3 號錯誤

    3. 在 CPU 的 V 數據區中為庫指令分配存儲區(Library Memory)

    Modbus Master 指令庫需要一個286個字節的全局 V 存儲區。

    調用STEP 7 - Mciro/WIN SMART Instruction Library(指令庫)需要分配庫指令數據區(Library Memory)。庫指令數據區是相應庫的子程序和中斷程序所要用到的變量存儲空間。

    如果在編程時不分配庫指令數據區,編譯時會產生許多相同的錯誤。

    操作步驟:

    1)在指令樹的Project(項目)中,以鼠標右鍵單擊Program Block(程序塊),在彈出的快捷菜單中選擇Library Memory。如圖4所示:


    圖4. “庫存儲器”按鈕

    2)在彈出的選項卡中設置庫指令數據區,如圖5所示:


    圖5. 缺省情況下是從VB0開始,但要保證該存儲器使用地址范圍與其他程序使用的地址不能有重疊。按“建議地址”按鈕也可以自動分配。

     可以使用 “建議地址” 設置數據區,但要注意編程軟件設置的數據區地址,只考慮到了其他一般尋址,而未考慮到諸如Modbus數據保持寄存器區等的設置。應當確保不與其他任何已使用的數據區重疊、沖突。不應重復按 “建議地址” 按鈕,否則也會造成混亂。

    關于 Modbus RTU 主站協議庫的補充說明

    Modbus 地址

    通常 Modbus 地址由 5 位數字組成,包括起始的數據類型代號,以及后面的偏移地址。Modbus Master 協議庫把標準的 Modbus 地址映射為所謂 Modbus 功能號,讀寫從站的數據。Modbus Master 協議庫支持如下地址:

    • 00001 - 09999:數字量輸出( 線圈)
    • 10001 - 19999:數字量輸入(觸點)
    • 30001 - 39999:輸入數據寄存器(通常為模擬量輸入)
    • 40001 - 49999:數據保持寄存器

    Modbus Master 協議庫支持的功能

    為了支持上述 Modbus 地址的讀寫,Modbus Master 協議庫需要從站支持下列功能:

    表 1. 需要從站支持的功能

    Modbus 地址 讀/寫 Modbus 從站須支持的功能
    00001 - 09999
    數字量輸出
    功能 1
    功能 5:寫單輸出點
    功能 15:寫多輸出點
    10001 - 19999
    數字量輸入
    功能 2

    30001 - 39999
    輸入寄存器

    功能 4
    40001 - 49999
    保持寄存器
    功能 3
    功能 6:寫單寄存器單元
    功能 16:寫多寄存器單元

    Modbus 地址和 S7-200 SMART 存儲區地址的映射

    S7-200 SMART 通過 Modbus Master 和 Slave 協議庫通信時,Modbus 地址和 S7-200 SMART CPU內存儲區地址的 映射關系都類似。

    Modbus 保持寄存器地址映射舉例:

    Modbus 保持寄存器地址

    40001

    12 34
    40002 56 78
    40003 9A BC

    S7-200 SMART 存儲區字尋址

    VW200

    12 34
    VW202 56 78
    VW204 9A BC

    S7-200 SMART 存儲區字節尋址

    VB200 12
    VB201 34
    VB202 56
    VB203 78
    VB204 9A
    VB205 BC

    Modbus 數字量地址映射舉例:

    位地址(0xxxx 和 1xxxx)數據總是以字節為單位打包讀寫。第一個字節中的最低有效位對應 Modbus 地址的起始地址。如下圖所示:


    圖6 . 數字量地址映射舉例

    Modbus RTU 主站例程

    為了更好地理解 Modbus 主站的編程,可參考下面的輪詢例程。

     注意:

    1. 該例程使用 STEP 7-Micro/WIN SMART 編寫,針對端口0。
    2. 該例程僅訪問一個從站,多個MBUS_MSG指令輪詢執行,若訪問不同的從站,可通過改變從站地址來實現。

     Modbus RTU 主站指令庫應用例程

     

    版權聲明PLC信息網轉載作品均注明出處,本網未注明出處和轉載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內容的真實性。如轉載作品侵犯作者署名權,或有其他諸如版權、肖像權、知識產權等方面的傷害,并非本網故意為之,在接到相關權利人通知后將立即加以更正。聯系電話:0571-87774297。
最新資訊
    An error occurred on the server when processing the URL. Please contact the system administrator.

    If you are the system administrator please click here to find out more about this error.