九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Modbus RTU V4及以上版本新功能
【導(dǎo)讀】博途V15版本開始,Modbus(RTU)指令集更新到V4.0及以上版本,S7-1200固件至少需要V4.2版本,本文主要闡述Modbus RTU V4及以上版本的新功能。
S7-1200 運動控制實例下載 
S7-1500模擬量模塊接線圖
PLC手動和自動程序編程方法 
很實用的西門子常用編程技巧
(一)概述
以V16為例,如圖1所示,Modbus (RTU)指令集為V4.4版本,該版本的 Modbus RTU指令有以下重要功能的更新。
圖1 Modbus RTU V4 指令集1、Modbus_Master指令變化:DATA_PTR 接口的DB可以支持"優(yōu)化塊訪問"
2、Modbus_Slave指令變化:MB_HOLD_REG 接口的DB可以支持"優(yōu)化塊訪問"
可以選擇對輸入輸出過程映像區(qū)的讀訪問限制
可以自定義訪問DB中的數(shù)據(jù)區(qū)域,而不是默認(rèn)的IQ區(qū)與MB_HOLD_REG)
(二)優(yōu)化塊的支持
DATA_PTR 參數(shù)指向要寫入或讀取的 DB 或 M 地址。如果使用數(shù)據(jù)塊,則必須創(chuàng)建一個全局?jǐn)?shù)據(jù)塊為讀寫 Modbus 從站提供數(shù)據(jù)存儲位置。1、自指令版本V4.0起:該參數(shù)可以指向優(yōu)化的DB數(shù)據(jù)塊,在優(yōu)化數(shù)據(jù)塊中,允許使用以下數(shù)據(jù)類型的單個元素或者數(shù)組:Bool、Byte、Char、Word、Int、DWord、DInt、Real、USInt、UInt、UDInt、SInt或 WChar。MB_HOLD_REG指向Modbus RTU保持寄存器,可以是M存儲區(qū)或者DB數(shù)據(jù)塊。2、自指令版本V4.0起:該參數(shù)可以指向優(yōu)化的DB數(shù)據(jù)塊,在優(yōu)化數(shù)據(jù)塊中,允許使用以下數(shù)據(jù)類型的單個元素或者數(shù)組:Bool、Byte、Char、Word、Int、DWord、DInt、Real、USInt、UInt、UDInt、SInt或 WChar。3、舉例說明:使用V16博途軟件,1215CPU配置CM1241 RS422/485模塊作為Modbus RTU主站,1214CPU配置CM1241 RS422/485模塊作為Modbus RTU從站。(1)1215CPU在OB1中編寫Modbus主站的程序,創(chuàng)建優(yōu)化DB數(shù)據(jù)塊DB3-Master,DATA_PTR填寫該優(yōu)化的DB塊區(qū)域:
圖2 1215CPU主站Modbus編程
圖3 優(yōu)化的數(shù)據(jù)塊DB3-Master(2)1214CPU在OB1中編寫Modbus從站的程序,創(chuàng)建優(yōu)化的DB數(shù)據(jù)塊DB8,MB_HOLD_REG填寫該優(yōu)化的DB塊區(qū)域:
圖4 1214CPU從站Modbus編程
圖5 優(yōu)化的數(shù)據(jù)塊DB8(3)主站Master的REQ管腳觸發(fā),主站讀取從站的保持性寄存器40001,長度為5個字,讀取結(jié)果如圖所示:
圖6 主站Master讀取到的數(shù)據(jù)(二)Modbus Slave指令的使用
1、Modbus_Slave V4 背景DB的數(shù)據(jù)內(nèi)容如下圖7所示:
圖7 Modbus_Slave V4 背景數(shù)據(jù)塊2、用戶程序可以修改圖7中圈出的變量:(1)紅色為Modbus RTU V4 指令集中 Modbus_Slave 增加的變量,要求的版本是博途V15及其以上,CPU版本 V4.2及其以上。QB_Read_Start
QB_Read_Count
IB_Read_Start
IB_Read_Count
Data_Area_Array
(2)黑色為Modbus_Slave V3指令集中 Modbus_Slave V3增加的變量,要求的版本是博途V14SP1及其以上,CPU版本 V4.1.1及其以上。QB_Start
QB_Count
(3)藍(lán)色為Modbus_Slave V3指令集中 Modbus_Slave V2的變量(即初始版本),要求的版本是博途V13SP1及其以上,CPU版本 V4.1.1以及其上。HR_Start_Offset
Extended_Addressing
(三)過程映像讀寫訪問限制
1、過程映像中寫入?yún)^(qū)域的定義:QB_Start:CPU 可寫入的輸出字節(jié)的起始地址QB_Count:CPU 可寫入的輸出字節(jié)的字節(jié)數(shù)。如果 QB_Count = 0,則CPU 的輸出字節(jié)均無法寫入。默認(rèn)是QB_Start為0,QB_Count為65535,即所有輸出字節(jié)區(qū)域均可以寫訪問。示例:要想只允許 QB10 到 QB17 可寫入,則 QB_Start = 10且 QB_Count = 8。2、過程映像中讀取區(qū)域的定義:QB_Read_Start:CPU 可讀取的輸出字節(jié)的起始地址QB_Read_Count:CPU 可讀取的輸出字節(jié)的字節(jié)數(shù)。如果 QB_Read_Count = 0,則CPU 的輸出字節(jié)均無法讀取。默認(rèn)是QB_Read_Start為0,QB_Read_Count為65535,即所有輸出字節(jié)區(qū)域均可以讀訪問。示例:要想只允許 QB10 到 QB17 可讀取,則 QB_Read_Start = 10 且 QB_Read_Count = 8。IB_Read_Start:CPU 可讀取的輸入字節(jié)的起始地址IB_Read_Count:CPU 可讀取的輸入字節(jié)的字節(jié)數(shù)。如果 IB_Read_Count = 0,CPU 的輸入字節(jié)均無法讀取。默認(rèn)是IB_Read_Start為0,IB_Read_Count為65535,即所有輸入字節(jié)區(qū)域均可以讀訪問。示例:要想只允許 IB10 到 IB17 可讀取,則 IB_Read_Start = 10 且 IB_Read_Count = 8。(四)訪問DB中的數(shù)據(jù)區(qū)域而不是直接訪問Modbus地址
Modbus_Slave 指令版本 V4.0 以及 S7-1200 CPU 固件 (FW) 版本 V4.2 起,用戶可訪問數(shù)據(jù)塊中的數(shù)據(jù)區(qū)域,而不用直接訪問過程映像和保持寄存器。為此,在全局 DB 屬性頁中,必須取消選中"僅存儲在裝載存儲器中和"優(yōu)化塊訪問復(fù)選框。
1、如果 MODBUS 請求到達(dá)時,尚未定義相應(yīng)功能代碼的 MODBUS 數(shù)據(jù)類型的數(shù)據(jù)區(qū)域,請求會按之前的指令版本處理,即直接訪問過程映像和保持性寄存器。2、如果 MODBUS 請求到達(dá)時,已定義功能代碼的 MODBUS 數(shù)據(jù)類型的數(shù)據(jù)區(qū)域,則 Modbus_Slave 指令會對此數(shù)據(jù)區(qū)域執(zhí)行讀寫操作。具體是讀操作還是寫操作取決于作業(yè)類型。3、單個 MODBUS 請求只能對一個數(shù)據(jù)區(qū)域進(jìn)行讀寫操作。如果要讀取覆蓋多個數(shù)據(jù)區(qū)域的保持性寄存器,則需要多個 MODBUS 請求。4、數(shù)據(jù)區(qū)域的定義規(guī)則如下:最多可以定義8個數(shù)據(jù)區(qū),位于Data_Area_Array[1..8]中。
數(shù)據(jù)區(qū)數(shù)組元素定義必須連續(xù),如果中間某數(shù)組元素定義無效,則后面的區(qū)域不生效。
如果在數(shù)據(jù)區(qū)定義了保持寄存器,則MB_HOLD_REG映射失效,如果在數(shù)據(jù)區(qū)定義了過程映像輸出,則對應(yīng)的Q區(qū)映射失效,如果在數(shù)據(jù)區(qū)定義了過程映像輸入,則對應(yīng)的I區(qū)映射失效,如果在數(shù)據(jù)區(qū)定義了輸入寄存器,則對應(yīng)的AI區(qū)映射失效。也就是說,如果在數(shù)據(jù)區(qū)內(nèi)沒有定義哪個區(qū)域,則原有的映射依然保留。
單個MODBUS 請求只能對恰好一個數(shù)據(jù)區(qū)域進(jìn)行讀寫操作。
每個字段元素 Data_Area_Array[x](其中 1 <= x <= 8)都是 MB_DataArea 類型的UDT,結(jié)構(gòu)參見表1:
參數(shù)數(shù)據(jù)類型
含義
data_typeUInt
映射到此數(shù)據(jù)區(qū)域的 MODBUS 數(shù)據(jù)類型的標(biāo)識符:
· 0:空字段元素或未使用數(shù)據(jù)區(qū)域的標(biāo)識符。此時,db、start和length的值無效。
· 1:過程映像輸出(與功能代碼 1、5 和 15 一起使用)
· 2:過程映像輸入(與功能代碼 2 一起使用)
· 3:保持寄存器(與功能代碼 3、6 和 16 一起使用)
· 4:輸入寄存器(與功能代碼 4 一起使用)
dbUInt
映射的數(shù)據(jù)區(qū)編號,該DB必須是非優(yōu)化DB
startUInt
映射到數(shù)據(jù)塊中的首個 MODBUS 地址,從0開始
lengthUInt
Bool數(shù)(對于data_type 1或者2),Word數(shù)(data_type 3或者4)
表1 Data_Area_Array數(shù)組的元素及其含義4、舉例說明:本例中,使用V16博途軟件,1215CPU配置CM1241 RS422/485模塊作為Modbus RTU主站,1214CPU配置CM1241 RS422/485模塊作為Modbus RTU從站,主站訪問從站的數(shù)據(jù)塊 (DB) 中的數(shù)據(jù)區(qū)域:(1)主站配置:在OB1中,拖入Modbus_Comm_Load 指令和Modbus_Master 指令,MODE=0,DATA_ADDR=40006,DATA_LEN=5,如圖8所示:
圖8 主站調(diào)用Master指令(2)從站配置:在OB1中,拖入Modbus_Comm_Load 指令和Modbus_Slave指令,參考圖4所示,從站的背景DB中Data_Area_Array進(jìn)行如圖9配置:
圖9 1214CPU Modbus_Slave背景DB中Data_Area_ArrayData_Area_Array[1]:data_type = 3,db = 3,start = 0,length = 5,,即DB3.DBW0-DB3.DBW8對應(yīng)40001-40005。Data_Area_Array[2]:data_type = 3,db = 4,start = 5,length = 5,,即DB4.DBW0-DB4.DBW8對應(yīng)40006-40010。Data_Area_Array[3]:data_type = 3,db = 5,start = 10,length = 5,,即DB5.DBW0-DB5.DBW8對應(yīng)40011-40015。Data_Area_Array[4]:data_type = 0,db = 0,start = 0,length = 0。Data_Area_Array[5]:data_type = 3,db = 6,start = 15,length = 5,即DB6.DBW0-DB6.DBW8對應(yīng)40016-40020,由于Data_Area_Array[4]參數(shù)為空,所以Data_Area_Array[5]參數(shù)失效。(3)在1214CPU創(chuàng)建4個非優(yōu)化DB塊,DB3/DB4/DB5/DB6,如圖11所示:
圖11 1214CPU創(chuàng)建數(shù)據(jù)塊(4)1215CPU的Master塊讀取40006-40010地址,對應(yīng)1214CPU的DB4塊中的DB4.DBW0-DB4.DBW8內(nèi)容,Master塊讀取到內(nèi)容如圖12所示:
圖12 主站CPU讀取到的數(shù)據(jù)(5)如果主站Master讀取從站Modbus地址40016,數(shù)據(jù)長度5,如圖13所示:
圖13 主站調(diào)用Master指令(6)由于從站1214CPU沒有40016-40020地址對應(yīng)的數(shù)據(jù)區(qū)域,所以Master指令執(zhí)行之后報錯,如圖14所示,16#8383:請求幀中的數(shù)據(jù)地址無效。
圖14 Master指令執(zhí)行報錯(五)HR_Start_Offset
1、HR_Start_Offset 用于指定 Modbus 保持寄存器的起始地址,存儲在Modbus_Slave 背景數(shù)據(jù)塊中,默認(rèn)是0。2、Modbus 保持寄存器地址從 40001 或 400001 開始。這些地址與保持寄存器的 PLC 存儲器起始地址對應(yīng)。通過組態(tài)"HR_Start_Offset"變量,可以將 Modbus 保持寄存器的起始地址定義為除 40001 或 400001 之外的其它值。(1)例如,如果保持寄存器被組態(tài)為起始于 MW100 并且長度為 100 個字(即MB_HOLD_REG設(shè)置為P#M100.0 WORD 100)。偏移量 20 可指定保持寄存器的起始地址為 40021 而不是 40001。低于 40021 和高于 400119 的任何地址都將導(dǎo)致尋址錯誤。HR_Start_Offset地址最小值最大值
0Modbus地址4000140099
S7-1200地址MW100MW298
20Modbus地址4002140119
S7-1200地址MW100MW298
(2)例如,將 Modbus_Slave 放入 LAD 程序段后,可以切換到先前的程序段,分配HR_Start_Offset 值。該值必須在執(zhí)行 Modbus_Slave 前分配,如圖6所示:
圖15 從站的Slave編程注意:使用Data_Area_Array修改保持寄存器區(qū)域,不建議修改HR_Start_Offset。(六)Extended_Addressing
Modbus 從站尋址可組態(tài)為單字節(jié)(Modbus 標(biāo)準(zhǔn)方式)或雙字節(jié)。擴(kuò)展尋址用于對單一網(wǎng)絡(luò)內(nèi)陸址超過 247 進(jìn)行尋址。選擇擴(kuò)展尋址后,最多可以對 65535 個地址進(jìn)行尋址。
1、Extended_Addressing 為FALSE(默認(rèn)設(shè)置):1 字節(jié)地址,地址范圍0 到 247。2、Extended_Addressing 為TRUE :2 字節(jié)地址,地址范圍0 到 65535。
大家都在看
【視頻】德國工程師是如何制作PLC柜的?
【視頻】德國威圖電氣柜是如何生產(chǎn)出的?
【視頻】德國工程師的辦公環(huán)境是怎樣的?
【視頻】PROFINET為何比PROFIBUS更牛?
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
S7-1200plc作為從站的編程詳解
SIAMATIC S7-1200 中通過Modbus RTU如何讀取地址范內(nèi)的輸入字
Modbus RTU 主站指令庫
西門子s7-200smart modbus-tcp通信實例編程詳細(xì)指導(dǎo)
周報145期 | PLC知識三十問!
羅克韋爾AB Micro850實現(xiàn)Modbus RTU主站
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服