免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

C#上位機(jī)調(diào)用匯川Modbus DLL全指南:寄存器映射、字節(jié)序與多線程避坑實(shí)踐

C#上位機(jī)調(diào)用匯川Modbus DLL全指南:寄存器映射、字節(jié)序與多線程避坑實(shí)踐 1. 項(xiàng)目背景與整體方案解讀1.1 為什么要用StandardModbusApi.dll而不是自己硬啃Modbus協(xié)議做上位機(jī)開發(fā)的工程師應(yīng)該都有同感PLC通信這塊最怕的不是協(xié)議本身難而是“業(yè)務(wù)邏輯和協(xié)議?;煸谝黄稹?。我早期做過一個(gè)設(shè)備數(shù)據(jù)采集項(xiàng)目最初自己封裝Modbus TCP報(bào)文讀寫一個(gè)線圈還能應(yīng)付但一旦涉及float讀寫、批量寄存器操作、異常重連這些場(chǎng)景代碼量就直線上升。每一處都要處理字節(jié)序、幀格式、報(bào)文解析出了Bug根本分不清是協(xié)議問題還是業(yè)務(wù)邏輯問題。匯川提供的StandardModbusApi.dll本質(zhì)上就是把Modbus協(xié)議棧封裝好了對(duì)外暴露簡潔的讀寫接口。好處非常明顯不用自己組幀、不用算CRC校驗(yàn)、不用處理TCP粘包拆包只管往里面?zhèn)鳌凹拇嫫鞯刂? 數(shù)據(jù)類型 值”SDK內(nèi)部完成協(xié)議轉(zhuǎn)換。這對(duì)于C#開發(fā)者來說確實(shí)能把主要精力放在業(yè)務(wù)邏輯而不是通信底層。但請(qǐng)注意這個(gè)DLL不是萬能黑盒。我用的過程中最大的感受是它省掉了協(xié)議層的重復(fù)勞動(dòng)卻把一堆“參數(shù)細(xì)節(jié)”的坑留給了調(diào)用方。比如寄存器地址到底按PLC側(cè)地址還是Modbus協(xié)議地址傳、讀float和讀兩個(gè)連續(xù)寄存器是什么關(guān)系、返回值里哪些是錯(cuò)誤碼、DLL內(nèi)部線程是否安全這些官方文檔寫得不夠細(xì)或者寫了但項(xiàng)目一緊張起來根本不會(huì)逐字去翻。這篇文章想把我在實(shí)際項(xiàng)目里用StandardModbusApi.dll踩過的坑和驗(yàn)證過的做法整理出來。不管你剛接觸C#上位機(jī)開發(fā)還是已經(jīng)寫過不少串口通信和Modbus TCP代碼這些細(xì)節(jié)應(yīng)該都能幫你省下不少排查時(shí)間。先說清楚文章里涉及的API名稱基于匯川SDK的常見形態(tài)具體以你手上的SDK版本和官方手冊(cè)為準(zhǔn)但排查思路和避坑邏輯是通用的。1.2 環(huán)境準(zhǔn)備與DLL引用的兩種方式先聊環(huán)境配置。開發(fā)環(huán)境建議直接用Visual Studio 2022或2019.NET Framework 4.6.1及以上或者.NET 6/8都行。匯川這個(gè)DLL通常在安裝匯川PLC編程軟件后獲得或者從官網(wǎng)下載SDK包解壓出來。拿到手后你面對(duì)的第一件事就是怎么把它引用到C#項(xiàng)目里。引用DLL有兩條路第一條是直接右鍵項(xiàng)目引用添加引用瀏覽到DLL文件加入項(xiàng)目然后在引用屬性里把“復(fù)制本地”設(shè)為True第二條是用DllImport做P/Invoke調(diào)用把DLL放到程序運(yùn)行目錄通過靜態(tài)方法聲明來調(diào)用。我推薦第二種方式原因后面細(xì)說。到了這一步最容易踩的坑就出現(xiàn)了目標(biāo)平臺(tái)設(shè)置。如果C#項(xiàng)目默認(rèn)是AnyCPU在64位系統(tǒng)上運(yùn)行時(shí)進(jìn)程是64位的而DLL如果是32位的運(yùn)行時(shí)就會(huì)拋出BadImageFormatException或者提示“未能加載文件或程序集”。這個(gè)問題在開發(fā)機(jī)上不一定暴露因?yàn)殚_發(fā)機(jī)可能裝了32位組件兜底但一到現(xiàn)場(chǎng)就完蛋。注意匯川的StandardModbusApi.dll具體是32位還是64位以你拿到的SDK信息為準(zhǔn)。我項(xiàng)目里遇到的版本按32位方式處理沒有問題但不同版本可能有差異拿到SDK后先確認(rèn)這一點(diǎn)能省一大半的啟動(dòng)報(bào)錯(cuò)排查時(shí)間。解決方式也很簡單在項(xiàng)目屬性 - 生成 - 平臺(tái)目標(biāo)里明確選x86或x64不要用AnyCPU。還有一點(diǎn)容易被忽略如果勾選了“首選32位”在32位系統(tǒng)上沒問題換到64位系統(tǒng)上就炸。所以發(fā)布時(shí)最好確定目標(biāo)機(jī)器架構(gòu)統(tǒng)一打包成x86省得現(xiàn)場(chǎng)折騰。再說DLL文件放哪。用P/Invoke方式時(shí)DLL建議放在程序運(yùn)行目錄bin目錄不要放系統(tǒng)目錄也不要放在項(xiàng)目根目錄否則發(fā)布時(shí)容易漏掉。發(fā)布時(shí)記得把exe、StandardModbusApi.dll以及它依賴的其它運(yùn)行庫一起拷走。我遇到過同事只帶了exe去現(xiàn)場(chǎng)結(jié)果現(xiàn)場(chǎng)發(fā)現(xiàn)DLL沒帶白跑一趟。2. 核心API調(diào)用細(xì)節(jié)與避坑點(diǎn)解析2.1 初始化與連接超時(shí)、端口、IP這三件套大部分工業(yè)動(dòng)態(tài)庫的設(shè)計(jì)套路都是“初始化 - 連接 - 讀寫 - 斷開”。StandardModbusApi.dll大致也是這個(gè)流程。我的項(xiàng)目里連接前需要先初始化SDK再調(diào)用連接函數(shù)傳入PLC的IP地址和端口號(hào)。這里的坑有三個(gè)比較典型。第一個(gè)坑連接超時(shí)時(shí)間不能按默認(rèn)走。有些版本的DLL連接函數(shù)會(huì)一直阻塞等待或者反過來超時(shí)時(shí)間特別短。我實(shí)測(cè)時(shí)發(fā)現(xiàn)PLC如果處于斷電或正在重啟的狀態(tài)連接調(diào)用可能會(huì)阻塞十幾秒甚至更久。如果直接在UI線程里調(diào)連接函數(shù)窗口直接進(jìn)入“未響應(yīng)”狀態(tài)客戶看著會(huì)以為程序死了。處理方式把連接操作放到后臺(tái)線程或Task里UI只負(fù)責(zé)顯示“正在連接”的狀態(tài)。外部再加一層超時(shí)控制超過5秒標(biāo)記連接失敗提示操作員檢查PLC供電和網(wǎng)絡(luò)。不要相信DLL內(nèi)部默認(rèn)超時(shí)自己控制才最穩(wěn)妥。第二個(gè)坑端口號(hào)要和PLC側(cè)配置一致。匯川PLC的Modbus TCP默認(rèn)端口通常是502但有的場(chǎng)景下PLC同時(shí)開了多個(gè)服務(wù)端口可能被改成別的值。上位機(jī)這邊端口填錯(cuò)就會(huì)出現(xiàn)“ping得通但連不上”的詭異情況。排查的時(shí)候不要想太多先確認(rèn)端口。第三個(gè)坑連接前先確認(rèn)IP可達(dá)。用Ping命令先測(cè)一下能快速區(qū)分是網(wǎng)絡(luò)問題還是DLL調(diào)用問題。這個(gè)方法看起來簡單但實(shí)際聯(lián)調(diào)時(shí)特別省時(shí)間。有一次現(xiàn)場(chǎng)反饋連不上我遠(yuǎn)程一看根本不是代碼問題是網(wǎng)線沒插牢。先Ping一下10秒定位比反復(fù)查代碼高效太多。連接成功后DLL通常會(huì)返回一個(gè)連接句柄或會(huì)話ID后面所有讀寫操作都要帶上這個(gè)值。這個(gè)句柄要用全局變量或單例模式存起來斷開時(shí)置空防止后續(xù)誤用。有些SDK在連接失敗時(shí)會(huì)返回?zé)o效句柄直接忽略了后面再拿這個(gè)句柄去讀寫返回的全是錯(cuò)誤碼你還沒處查。2.2 讀寫寄存器的幾個(gè)隱蔽坑方法重載與返回值判斷讀寫寄存器是核心功能。SDK一般會(huì)提供多種重載讀單個(gè)寄存器、讀多個(gè)寄存器、讀浮點(diǎn)數(shù)、寫單個(gè)寄存器、寫多個(gè)寄存器、寫浮點(diǎn)數(shù)等。我項(xiàng)目里用得最多的組合是“讀多個(gè)連續(xù)寄存器”然后自己解析數(shù)據(jù)類型以及直接調(diào)用DLL提供的浮點(diǎn)讀寫接口。先說返回值判斷。這類動(dòng)態(tài)庫的返回值約定一般是0表示成功非0表示錯(cuò)誤碼。但問題在于很多人會(huì)直接忽略返回值或者只判斷“不等于0就算失敗”。這會(huì)導(dǎo)致一個(gè)很隱蔽的問題讀操作返回錯(cuò)誤碼時(shí)輸出參數(shù)里的數(shù)據(jù)到底是什么是上次殘留的舊值還是被清空成0不同DLL實(shí)現(xiàn)不一樣有些DLL在讀取失敗時(shí)根本不會(huì)動(dòng)輸出緩沖區(qū)。我踩過一次很深的坑讀壓力數(shù)據(jù)的時(shí)候偶爾會(huì)讀到很大的異常值查了很久最后發(fā)現(xiàn)是讀失敗后DLL沒有清空輸出緩沖區(qū)返回了上一次成功的數(shù)據(jù)。而我的代碼里“返回值非0就丟棄數(shù)據(jù)”的判斷只加在了一條分支上另一條分支直接把數(shù)據(jù)用了。所以建議所有讀操作用完緩沖區(qū)后顯式清零每次讀之前先初始化。不要假設(shè)DLL會(huì)幫你清數(shù)據(jù)。再說方法重載的參數(shù)類型。C#調(diào)用這類DLL時(shí)最常見的編譯錯(cuò)誤就是參數(shù)類型不匹配。比如讀浮點(diǎn)的接口參數(shù)是“寄存器地址”類型看起來是int但你要讀的PLC地址可能是40001這種顯示地址而DLL內(nèi)部實(shí)際要的是Modbus協(xié)議地址偏移量兩者之間差一個(gè)基準(zhǔn)值。后面專門講寄存器地址映射這里先記住一個(gè)原則調(diào)用前一定確認(rèn)每個(gè)參數(shù)在SDK內(nèi)部是怎么被解釋的不要憑直覺填。接著是批量讀寫的長度限制。Modbus協(xié)議里一次讀多個(gè)寄存器的數(shù)量一般有限制常見是125個(gè)寄存器寫多個(gè)寄存器一般限制在123個(gè)。如果你一次性讀200個(gè)寄存器部分SDK會(huì)直接返回錯(cuò)誤碼部分SDK會(huì)自己分包處理但性能會(huì)明顯下降。穩(wěn)妥做法是自己控制批量大小超過100個(gè)寄存器就分批讀避免觸發(fā)SDK內(nèi)部的隱性限制。3. 寄存器尋址與數(shù)據(jù)類型轉(zhuǎn)換這一塊是C#上位機(jī)調(diào)用匯川PLC時(shí)最容易出問題、也最值得花時(shí)間研究的。很多人覺得地址不就是40001嗎填進(jìn)去就完了但實(shí)際遠(yuǎn)沒那么簡單。3.1 寄存器地址映射手冊(cè)地址和Modbus地址差在哪Modbus協(xié)議里的數(shù)據(jù)模型有四種線圈Coil、離散輸入Discrete Input、輸入寄存器Input Register、保持寄存器Holding Register。匯川PLC的DLL一般會(huì)把地址分類常見是以0x開頭表示線圈區(qū)、1x開頭表示離散輸入、3x開頭表示輸入寄存器、4x開頭表示保持寄存器。但在C#調(diào)用DLL時(shí)API里傳的地址通常不是這種“4xxxx”顯示地址而是Modbus協(xié)議地址偏移量。舉個(gè)例子PLC的保持寄存器起始地址在觸摸屏或手冊(cè)里顯示為40001在Modbus協(xié)議里對(duì)應(yīng)的協(xié)議地址是0而在DLL接口里你要傳的可能是0而不是40001。這個(gè)差異是不同廠家的標(biāo)注習(xí)慣不同造成的并不統(tǒng)一。我的經(jīng)驗(yàn)是以官方示例代碼為準(zhǔn)不要自己猜。拿到SDK后先把文檔里給的示例程序跑通注意看示例里寄存器地址是傳40001還是0。如果文檔里同時(shí)給了“PLC地址表”和“協(xié)議地址表”優(yōu)先按協(xié)議地址表來因?yàn)镈LL內(nèi)部一般就是按協(xié)議地址處理的。還有一類坑是寄存器編號(hào)從0開始還是從1開始。Modbus標(biāo)準(zhǔn)里協(xié)議地址從0開始但有些設(shè)備手冊(cè)喜歡從1開始做人機(jī)可讀地址結(jié)果就是“差1錯(cuò)位”問題你想讀地址10的數(shù)據(jù)實(shí)際讀到的可能是地址9的數(shù)據(jù)。排查這類問題最快的方法寫一個(gè)已知值到某個(gè)地址再連續(xù)讀附近幾個(gè)地址看數(shù)據(jù)落在哪個(gè)索引上一輪就能確定偏移量。這招在聯(lián)調(diào)現(xiàn)場(chǎng)非常實(shí)用。另外要提醒一點(diǎn)不同的PLC區(qū)域D區(qū)、M區(qū)、R區(qū)在DLL里對(duì)應(yīng)的Modbus功能碼可能不同。比如D區(qū)對(duì)應(yīng)保持寄存器功能碼03/06/16而I區(qū)對(duì)應(yīng)輸入寄存器功能碼04你在DLL接口里傳的“區(qū)域標(biāo)識(shí)”不對(duì)讀回來的數(shù)據(jù)肯定不對(duì)。這類問題往往不報(bào)錯(cuò)只是數(shù)據(jù)全亂特別迷惑人。3.2 數(shù)值轉(zhuǎn)換字節(jié)序、符號(hào)位、ASCII碼的連環(huán)坑讀寄存器的結(jié)果一般是ushort或者byte[]數(shù)組接下來要轉(zhuǎn)成float、int、bool或字符串。這一步的坑最隱蔽因?yàn)閱栴}往往不會(huì)立刻暴露而是“數(shù)據(jù)偶爾不對(duì)”或者“換了一臺(tái)設(shè)備就出問題”。字節(jié)序問題PLC存儲(chǔ)float或int時(shí)不同廠家、甚至同一廠家不同系列的字節(jié)序都可能不同。常見有大端模式和小端模式還有更復(fù)雜的“字序翻轉(zhuǎn)”。C#的BitConverter默認(rèn)使用本機(jī)字節(jié)序通常是Little-Endian而Modbus協(xié)議傳輸時(shí)是大端所以當(dāng)你拿到兩個(gè)寄存器的byte[]后直接用BitConverter.ToSingle()轉(zhuǎn)換數(shù)據(jù)很可能不對(duì)需要對(duì)byte[]做前后排列調(diào)整。處理方式寫一個(gè)字節(jié)序轉(zhuǎn)換的輔助函數(shù)把讀到的4字節(jié)或8字節(jié)先按協(xié)議要求的字節(jié)序排列好再轉(zhuǎn)成float或double。不要在每一處讀取點(diǎn)都臨時(shí)處理統(tǒng)一封裝一個(gè)轉(zhuǎn)換類。后面遇到另一臺(tái)PLC字節(jié)序不同時(shí)只需要改輔助函數(shù)不需要全局改代碼。符號(hào)位問題有些參數(shù)可能是負(fù)值比如溫度、壓力補(bǔ)償值存的是有符號(hào)整數(shù)但寄存器里以16位無符號(hào)數(shù)0~65535呈現(xiàn)直接轉(zhuǎn)int會(huì)得到一個(gè)非常大的正數(shù)。正確做法是用shortInt16來轉(zhuǎn)換或者手動(dòng)判斷最高位。這類問題在“讀取模擬量負(fù)值”的場(chǎng)景特別常見。你看到數(shù)據(jù)突然是65535先懷疑是不是符號(hào)問題別急著調(diào)地址。ASCII碼問題有些PLC的數(shù)據(jù)區(qū)存的是ASCII字符串比如掃碼槍讀到的條碼內(nèi)容。DLL可能提供了讀字符串的方法也可能只提供讀寄存器的方法需要把多個(gè)寄存器的ushort值轉(zhuǎn)成char再拼成字符串。這里要注意字符串長度怎么約定字符編碼是ASCII還是UTF-8末尾是否需要截?cái)嗫兆址@些細(xì)節(jié)不處理輕則末尾多一堆\u0000或空格重則整個(gè)字符串亂碼。32位數(shù)據(jù)跨寄存器float或32位整數(shù)在保持寄存器里占用兩個(gè)連續(xù)的寄存器比如40001和40002。讀的時(shí)候要連續(xù)讀兩個(gè)寄存器再拼接成4字節(jié)。但這里有個(gè)“高字在前還是低字在前”的問題。PLC側(cè)的數(shù)據(jù)格式不同拼接順序就不同。建議用已知數(shù)值的寫入測(cè)試來驗(yàn)證寫一個(gè)float值如1.0讀出來看哪個(gè)順序是對(duì)的然后統(tǒng)一封裝。我記得有一次調(diào)試壓力變送器數(shù)據(jù)讀出來永遠(yuǎn)是0.0001之類的奇葩值折騰了兩個(gè)小時(shí)最后發(fā)現(xiàn)是高字和低字順序反了把byte[]的索引0和1換成索引2和3后問題立刻解決。從那以后我再也不敢不看協(xié)議就去拼接數(shù)據(jù)了。4. 多線程調(diào)用與通信穩(wěn)定性上位機(jī)軟件的通信模塊幾乎不可能只有一個(gè)線程在運(yùn)行。界面刷新在UI線程數(shù)據(jù)采集在后臺(tái)線程報(bào)警檢測(cè)可能在另一個(gè)線程如果這些線程同時(shí)調(diào)用DLL讀PLC數(shù)據(jù)問題就來了。4.1 定時(shí)器/線程里調(diào)用DLL的鎖與超時(shí)處理StandardModbusApi.dll內(nèi)部是否有鎖、是否線程安全官方文檔通常不會(huì)明確寫。但根據(jù)我用過的多個(gè)廠家SDK的經(jīng)驗(yàn)?zāi)J(rèn)認(rèn)為它線程不安全是最穩(wěn)妥的。為什么這么說因?yàn)檫@類DLL底層往往維護(hù)著一個(gè)全局的通信上下文包括socket連接狀態(tài)、收發(fā)緩沖區(qū)。如果兩個(gè)線程同時(shí)調(diào)用“讀寄存器”接口底層socket讀寫就會(huì)交錯(cuò)輕則數(shù)據(jù)錯(cuò)亂重則直接把連接搞死后續(xù)調(diào)用全部超時(shí)。處理方式自己封裝一個(gè)通信服務(wù)類提供一個(gè)用lock或SemaphoreSlim保護(hù)的統(tǒng)一入口所有DLL調(diào)用都走這個(gè)入口。換句話說全局只允許一個(gè)線程真正訪問DLL其它調(diào)用排隊(duì)等待。這么做看起來損失了一點(diǎn)并發(fā)性但換來了極大的穩(wěn)定性工業(yè)現(xiàn)場(chǎng)你寧可慢一點(diǎn)也不要讓連接掛掉。不要以為加個(gè)鎖就萬事大吉。加鎖之后還會(huì)遇到兩個(gè)問題超時(shí)和重入。如果PLC響應(yīng)慢一個(gè)讀操作阻塞了3秒后面所有調(diào)用都排隊(duì)等著隊(duì)列越積越多。所以每次DLL調(diào)用要設(shè)置合理的超時(shí)時(shí)間超過就放棄本次調(diào)用不能讓一個(gè)慢操作拖垮整個(gè)通信模塊。另外如果鎖的持有者線程卡死了鎖釋放不了其它線程會(huì)永遠(yuǎn)阻塞。建議優(yōu)先使用帶超時(shí)的SemaphoreSlim而不是lock至少能保證調(diào)用方只在限定時(shí)間內(nèi)等待。關(guān)于定時(shí)器上位機(jī)常用System.Windows.Forms.Timer或System.Timers.Timer做周期采集。但要注意Timer的回調(diào)線程模型。System.Windows.Forms.Timer的Tick事件在UI線程執(zhí)行如果讀PLC時(shí)阻塞幾百毫秒界面就會(huì)卡頓System.Timers.Timer默認(rèn)在線程池線程執(zhí)行沒有UI卡頓問題但存在多線程并發(fā)風(fēng)險(xiǎn)。我一般用System.Threading.Timer或者一個(gè)獨(dú)立的采集線程配合ManualResetEvent來控制采集節(jié)奏這樣更可控也方便動(dòng)態(tài)調(diào)整采集周期。4.2 異常斷開后的重連策略PLC通信沒有“永遠(yuǎn)在線”這回事。現(xiàn)場(chǎng)最常見的場(chǎng)景PLC重啟、網(wǎng)線松動(dòng)、交換機(jī)斷電、程序更新時(shí)PLC暫時(shí)停止響應(yīng)這時(shí)候上位機(jī)不能掛掉必須有一套完善的重連機(jī)制。我的做法分三層第一層是檢測(cè)層。每次讀寫操作只要返回錯(cuò)誤碼就標(biāo)記通信異常。但不建議一次異常就觸發(fā)重連因?yàn)榕紶栆淮味秳?dòng)很正常。我一般是連續(xù)3次讀寫異常才觸發(fā)重連避免單次抖動(dòng)導(dǎo)致頻繁重連反而干擾PLC。第二層是重連層。重連用指數(shù)退避策略。比如第1次等1秒、第2次等2秒、第3次等4秒、最多等10秒就封頂。這樣PLC沒恢復(fù)時(shí)上位機(jī)不會(huì)用每100毫秒一次的頻率去反復(fù)沖擊。等PLC恢復(fù)后最遲10秒內(nèi)重連成功操作員不會(huì)覺得等待太久。第三層是恢復(fù)層。重連成功后把未完成的讀寫請(qǐng)求重新執(zhí)行一次同時(shí)通過事件把“通信恢復(fù)”狀態(tài)發(fā)給UI層讓操作員知道系統(tǒng)已恢復(fù)正常。如果重連失敗也要及時(shí)通知UI讓操作員知道當(dāng)前數(shù)據(jù)可能不是最新的。還有一個(gè)容易忽略的問題斷開后要釋放舊的句柄或連接再創(chuàng)建新連接。有些DLL如果反復(fù)連接但不釋放舊連接底層句柄會(huì)耗盡最終導(dǎo)致再也連不上只能重啟上位機(jī)程序。所以重連邏輯里先調(diào)用斷開接口再調(diào)用初始化或連接接口這個(gè)順序不能省。我在實(shí)際項(xiàng)目里遇到過一次“上位機(jī)運(yùn)行幾天后越來越卡”的問題排查到最后就是DLL連接沒釋放socket句柄一點(diǎn)點(diǎn)耗盡系統(tǒng)整體變慢。加上正確的重連邏輯后這個(gè)問題徹底消失。所以別小看“斷開釋放”這一步長期運(yùn)行的項(xiàng)目這一步直接決定程序的穩(wěn)定性。5. 常見問題與排查技巧實(shí)錄這部分整理成一份“速查表”都是我在聯(lián)調(diào)現(xiàn)場(chǎng)遇到過的或者被同事問得最多的問題。遇到類似情況可以直接對(duì)著排查不必大海撈針。5.1 典型報(bào)錯(cuò)對(duì)照表現(xiàn)象可能原因解決辦法程序啟動(dòng)就報(bào)BadImageFormatException項(xiàng)目目標(biāo)平臺(tái)與實(shí)際DLL架構(gòu)不一致打開項(xiàng)目屬性生成頁把平臺(tái)目標(biāo)改為與DLL一致通常是x86或x64連接超時(shí)ping也不通網(wǎng)線、網(wǎng)卡、PLC IP配置問題先ping檢查PLC是否上電、IP是否配置正確、網(wǎng)線是否插牢ping得通但連不上端口不對(duì)或PLC側(cè)服務(wù)未使能確認(rèn)Modbus TCP端口去PLC側(cè)檢查服務(wù)是否啟用讀到的數(shù)據(jù)全是65535或0寄存器地址偏移量不對(duì)或數(shù)據(jù)類型轉(zhuǎn)換錯(cuò)誤用官方示例核對(duì)地址映射寫測(cè)試值驗(yàn)證讀取邏輯讀float數(shù)據(jù)值明顯不對(duì)字節(jié)序或字序問題封裝字節(jié)序轉(zhuǎn)換工具用已知值測(cè)試確認(rèn)高字低字順序偶爾讀到舊數(shù)據(jù)讀失敗后輸出緩沖區(qū)未被清空讀前清零輸出變量讀后先判斷返回值再使用數(shù)據(jù)程序長時(shí)間運(yùn)行越來越卡連接未釋放或線程鎖死檢查重連邏輯斷開時(shí)釋放鏈接使用帶超時(shí)的信號(hào)量多線程同時(shí)讀數(shù)據(jù)時(shí)數(shù)據(jù)錯(cuò)亂DLL非線程安全外部全局加鎖統(tǒng)一入口串行調(diào)用寫寄存器時(shí)PLC側(cè)沒任何反應(yīng)功能碼不支持或區(qū)域類型不匹配確認(rèn)目標(biāo)區(qū)域是否可寫檢查地址區(qū)域類型與功能碼關(guān)系讀字符串亂碼字節(jié)序、編碼方式或長度不對(duì)確認(rèn)字符串編碼截?cái)嗫兆址藢?duì)寄存器數(shù)量與字符長度換算5.2 實(shí)測(cè)有效的調(diào)試三板斧如果代碼邏輯看起來沒問題但通信數(shù)據(jù)就是不對(duì)我建議按這三步排查。第一步先用官方調(diào)試工具驗(yàn)證。匯川PLC編程軟件一般自帶調(diào)試窗口或者用第三方Modbus Poll工具前提是你的PLC支持標(biāo)準(zhǔn)Modbus TCP連接。先用這些工具直接讀同一個(gè)地址確認(rèn)PLC側(cè)配置和數(shù)據(jù)本身是正確的再回頭懷疑自己的代碼。這一步能砍掉一大半的排查范圍。第二步寫最小化測(cè)試用例。不要在大項(xiàng)目里排查。新建一個(gè)控制臺(tái)程序只做一件事連接PLC、讀幾個(gè)固定地址、把原始返回值直接打印出來。對(duì)比預(yù)期值快速定位問題出在“地址”還是“轉(zhuǎn)換”還是“連接”。這一步能極大縮小問題范圍。我有一次排查數(shù)據(jù)錯(cuò)亂新建了一個(gè)50行的測(cè)試程序10分鐘就定位到是地址偏移問題。第三步加日志記錄調(diào)用過程和返回值。在DLL調(diào)用前后把傳入地址、讀取長度、返回值和原始數(shù)據(jù)都寫入日志。很多DLL不提供底層幀日志但你自己記錄這些信息足夠排錯(cuò)了。排錯(cuò)時(shí)日志比斷點(diǎn)好用因?yàn)楝F(xiàn)場(chǎng)往往不在你身邊你只能靠客戶傳回來的日志判斷。日志里建議加時(shí)間戳和線程ID配合多線程問題排查效率更高。還有一個(gè)建議聯(lián)調(diào)時(shí)一定要先實(shí)測(cè)數(shù)據(jù)范圍。比如你的傳感器量程是0~100PLC存儲(chǔ)的原始值可能是0~4095上位機(jī)里要做換算。這種換算邏輯建議寫成獨(dú)立的純函數(shù)方便單元測(cè)試不要跟通信代碼混在一起。否則到時(shí)候數(shù)據(jù)不對(duì)你得同時(shí)排查通信和換算非常痛苦。拆開之后哪塊出問題一目了然。結(jié)尾實(shí)際用過StandardModbusApi.dll之后我最深的體會(huì)是C#調(diào)用動(dòng)態(tài)庫本身并不復(fù)雜復(fù)雜的是工業(yè)現(xiàn)場(chǎng)那種“看起來代碼沒錯(cuò)但數(shù)據(jù)就是不對(duì)”的排查過程。很多坑不是SDK的bug而是我們對(duì)Modbus協(xié)議、寄存器地址、字節(jié)序、線程模型這些底層知識(shí)理解不夠?qū)е掠昧隋e(cuò)誤參數(shù)或者漏了判斷條件。最后分享一個(gè)小技巧如果項(xiàng)目允許盡量在通信層和業(yè)務(wù)層之間加一層抽象接口比如定義一個(gè)IPlcService方法命名直接用業(yè)務(wù)語義比如GetCurrentPressure、SetTargetTemperature具體實(shí)現(xiàn)里再調(diào)用DLL。這樣做的好處是萬一以后換了PLC品牌或者換了通信方式比如從Modbus TCP換成OPC UA業(yè)務(wù)代碼完全不用動(dòng)只需要寫一個(gè)新實(shí)現(xiàn)類。我后面好幾個(gè)項(xiàng)目能快速切換設(shè)備平臺(tái)全靠當(dāng)初留了這個(gè)抽象層。工業(yè)通信這塊提前做好封裝永遠(yuǎn)比臨時(shí)重構(gòu)要省事得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香啪| 99人人干人人| 色呦呦美女| 大香蕉伊人久久| 99成人| 久久九九大香蕉电院| 97超碰欧美中文字幕| 亚洲操人| 色婷婷丁香五月综合| 五月婷婷六月丁香五月| 久久久久这里只有精品| 日韩免费99| 综合视频五月| 久思思热视频在线观看| 99热这里只有精品1025| 九九综舍久久| 99ri视频在线观看| 天天久久婷婷| 蜜臀av 粉嫩av 懂色av| 六月成人网| 99热青青草| 夜夜做天天爽| 婷婷色五月色妇| 久久婷婷色情7777网站| 欧美人人超级碰| 激情综合久久| www狠狠| 伊人玖玖婷婷| 人人爱人人草| 少妇达人正片在线播放_ikun_福利吧| 岛国av电影网站| 丁香久久| 深爱五月月天| 色综合99| 新99思思视频| 五月丁香啪啪拍| 九九伊人网| 高清成人综合| 日韩人妻无码精品| 超碰免费成人| 天搞天天天天天| 欧美色色色色色色| 久久精品婷婷| 丁香五月激情综合| 丁香色五月婷婷17C| 久久婷婷的综合色丁香五月| 91丨人妻丨国产丨丝袜| 久久婷中文字幕| 99久久九九视频| 激情久久久| 婷婷99狠狠| 99久久婷| 色区久久| 天天操天天插天天射| 国产性av| 伦乱人妻| 五月天婷婷香蕉狠狠超碰综合| 亚洲国产成人AV在线| 亚洲深喉AV| 午夜性做爰电影| 婷婷成人视频| 亚洲国产精品成人午夜| 丁香六月青青草| 激情AV中文| 丁香花婷婷五月天| 九色视频91| 99色激| AV中文在线| 亚洲av网站在线观看| 婷婷色在线视频| 亚洲无码www| 国产九九一区二区三区| 色之综合网| 丁香五月婷婷五月天在线| 狠狠色五月激情| xxxx五月| 亚洲精品永久久久久久| 99色天堂| 丁香五月天天| 丁香五月婷婷呀| 丁香五月老师| 五月婷婷色播| 一本色道久久88加勒比| av激情在线| wwwxxx五月婷婷小说| 97热视频| 久久综合久色欧美综合狠狠| 五月丁香六月婷婷激情四射| 婷婷丁香69精华| 狠狠草天天草| 91精品综合久久久久久五月丁香 | 丁香五月天综合网| 丁香五月Av| 99ER热精品视频| 日本性视频| 九九av在线| 人人干人人看| www色中色综合| www.99热在线| 五月天激情网址| 国产1区2区3区| 99精品偷拍视频| 六月丁香色色| 琪琪色五月天| 综合久久五| 色五月,婷婷大香蕉| 六月婷色| 五月天婷婷深深爱| 女人天堂AV| 丝袜熟女一区二区三区| 99久久99热| 五月丁香做爱视频| 中文字幕免费高清电视剧| 99riAV国产精品视频| 深爱激情综合网| 先锋影音av色五月天资源站| 九九Av| 99热青青草原| 久久99久久99精品免视看婷婷| 91碰碰碰久久久久| 九九久久五月天综合伊人| 久久婷丁香五月| 99re青青草| 五月天婷婷色播| 婷婷色情网| 亚洲综合激情五月久久| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 夜夜爽天天干| 丁香婷婷六月天| 五月婷婷之美女图片| 丁香婷婷六月天| 综合在线色婷婷| 成人片在线播放| 另类专区在线观看| 国产偷人爽久久久久久老妇APP| 久草a片| 九九無妻| 国产成人+综合亚洲+天堂| 天天爽综合| 超碰精品在线| 亚州激情在线视频| 熟女少妇内射日韩亚洲| 五月色欧洲| 综合色七七| 亚州美女| 久久婷综| 99热精品网| 99热精品一区| 久久精品熟女亚洲AV麻豆| 亚洲综合激情五月天婷婷| 激情com| 丁香五月天婷婷久久综合| 99riAV成人在线视频| 天堂网亚洲色图| 五月噜噜| 日韩三及成人AV片| 热九九九九| 9久热这里只有精品| 久热免费视频| 狠狠色丁婷婷日日,伊人激情综合网| 五月婷综合| 五月久久婷婷| 婷婷色综合| 九九亚洲视频| 久久精品一区二区三区四区| 66精品成人免费网站在线观看| 中文字幕无码人妻少妇免费视频 | 色区域网站视频| 五月天激情小说婷婷| 日韩成人无码| www国产亚洲色婷婷com| 狠干综合| 婷婷伊人| 欧洲综合色| 色色五月婷婷狠狠| 激情五月色婷婷| 天天综合五月| 五月天婷婷基地| 激情5月婷婷狠狠干| 欧美日本免费一道免费视频 | 久久曰曰| 99热国产在线| 日本91在线| 激情丁香婷婷六月天| 狠狠爱综合网| 无码区婷婷五月花开| 久久婷五月综合| 高清无码视频网址| 99爱在线精品视频免费观看| 激情综合女人网五月播播| 五月丁香亚洲婷婷| 综合激情视频| 亚洲色 视频| 91N 一起草| 色综合久久88色综合天天看| 精品无码色欲AV| 玖玖爱伊人网| 丁香六月综合| 婷婷五月激情中文字幕| 人人干Av| 婷婷五月电影| 99婷婷精品推荐在线视频| 噜噜噜色噜噜| 久99久在线| 蜜臀AV在线观看| 这里只有精品网| 色久女| 乱精品一区字幕二区| 中文字幕色色| 丁香五月日啪| 丁香大香蕉| 激情五月天婷婷播播久久综合91 | 亚洲综合色婷| 久久婷婷五月| 26.uuu丁香五月婷婷| 六月激情婷婷色| 热九九九九| 开心五月六月婷婷| 啪啪东京热| 久久性视频| 久久人人看| 伊人激情| 99热.com| 97碰免费视频在线| 殴美日韩成人| 五月丁香啪啪综合| 色婷婷丁香五月色综合网| 99久久婷婷国产综合精品草原| 超碰cap| 色婷婷六月| 亚洲成人五月| 九九热经典视频在线观看| 丁香五月电影| 99久在线精品99re5热视频| 在线综合婷婷| 婷婷伊人激情婷婷| 亚洲激情无码久久| 五月天激情网图片 - 百度| 五月丁香毛片| 99ri国产精品| 天堂在线婷婷| 五月丁香婷婷99| 影音先锋91在线资源站| 国产成人AV| www.操.com| 五月天婷婷爱| 五月丁香婷婷久久| 天堂五月婷婷| 色五月激情| 婷婷99狠狠躁| 婷婷久久丁香| 久久亚洲无码| 丁香六月婷婷综合| 激情五月天综合| 伊人www22综合色| 狠狠色噜噜狠狠狠狠狠色综合久久| 在线只有精品| 五月天电影网| 丁香婷婷五月天成人| 五月婷婷黄色网址| 婷婷伊人綜合中文| 五月丁香成年黄色| 香蕉大综综综合久久| Av狠狠色丁香婷| 久久亚洲婷婷| 婷婷丁香五月视频| 亚洲99视频| 五月开心啪啪| 99久| 五月天丁香花婷婷| 天天综合 99久久婷婷| 丁香 亚洲 久久| 久色大| www99热| 色婷婷五月视频| 激情五月天在线视频| 97碰在线视频| 婷婷五月天成人网| 国产熟妇乱子伦hd| 99视频在线看| 国产欧美第五十五页| 成人 视频免费观看网站| 丁香婷婷六月天| 五月丁香综合在线| 五月天激情网图片 - 百度| 再次出发二| 五月激情偷拍婷婷| 婷婷五月天伊人| 亚洲区视频| 99热这里都是精品| 婷婷五月天涩涩| 永久免费一区二区三区| 色色99色色| 五月丁香六月情婷婷久久| 777色色色| 综合网天天| 久久er九九| 91日精品| 日日天天天| 全国最新疫情| 碰碰女| 天天干天天拍| www91久久| 丁香五月激情五月| 狠婷婷五月| 97色操| 五月婷在线| 熟女人妻视频| 第四色激情网| 六月婷婷五月天| 啪啪啪综合网| 播五月开心婷婷欧美综合| 91视频精品99| 香蕉久操| www色色com| 日日操人人操| 伊人久久婷婷| 在线观看av网站| 婷婷色色综合激情| 久婷| 亚洲一级AV在线免费播放| 久草五月天| 天天干天天色综合| 日B日潘金莲BB| w婷婷五月婷婷w| 色99综合视频| 亚洲成av人影院| 99色日本| 99精品在这里| 二区成人视频| 婷婷激情丁五月| 成人国产综合| 91艹人| 亚洲噜色| 深爱五月激情| 热99色| 五月天六月丁香| 五月天婷婷基地| 久久婷婷五月天| 六月婷婷激情| 五月婷丁香| 99热综合网| 香蕉婷婷五月| 天天色天天噜| 亚洲亚洲人成综合网络| 91人妻色色网| 激情综合网五月婷婷| 日韩美一级毛卡片| 综合色播| 婷婷综合一二三| 91久久婷婷人人澡草| 97色色视频| 色欲天天综合| 激情五月小说婷婷| 九九视频免费| 激情五月天网| 夜夜噜夜夜奇| 国产AV影片| 婷婷激情伍月网| 日韩在线视频网站| 天天看A片| 99福利导航| 亚洲无码黄色| 日本99久久| 99色中文| 狠狠操狠狠插| 丁香激情合作五月| 91聚色综合网| 狠狠草在线观看| 午夜]香婷婷深深爱| 丁香六月激情网C0W| 日本激情综合| 色播播婷婷| 人妻中文av| 亚洲va欧洲va国产va不卡| 91日婷婷在线| 丁香六月婷婷色播| 狠狠做五月| 五月丁香成人网| 五月www| 婷婷五月天av| 五月草影视| 男女av免费看| 99在线免费视频| 日韩无码专区| 影音先锋一区二区三区| 亚洲热久| 99在这里有精品| 九久热| 成人丁香五月| 色色综合色视频| 国产欧美精品AAAAAA片| 久久国产色| 色天使色婷婷| 欧洲第一无人区观看| 涩涩五| 白度黄视频| 亚洲色五月| 婷婷99狠狠| CHINESE熟女老女人HD视频| 婷婷丁香激情五月| 久热中文字幕| 最新无毒无码AV| 丁香六月成人| 六月婷婷网| 99色综合久久| 色色丁香| 五月天最新网| 天天插天天很| 99热主页日本| 色婷婷aV四虎| 成人做爰A片免费看视频| 九九精品视频在线6| 97色在线观看视频| 99久操视频| 99久.| 99久久99热这里只有精品| www.综合久久.com| 欧美日韩成人综合9| 9久久久久| 能看的av片| 亚洲免费av在线| 噼里啪啦在线观看免费完整版视频 | 五月激情四射婷婷丁香| 99色五月| 亚洲精级| 久久久亚洲精品一区二区三区浴池| 狠狠色成人影片| 亚洲色五月天是什么| 99视频在线啪| 五月婷婷影视| 色一情一乱一伦一区二区三区| 欧美色性色好| 色婷婷六月天在线| 26UUU精品一区二区Com| 亚洲性爱干干| 97色碰| 大香蕉九九操| 亚洲第二AV| 欧亚成人A片一区二区| 97人人看| 婷婷狠狠18禁久久| 婷婷丁香六月| 丁香五月天之婷婷影院| 天天激情站| 激情影院免费视频婷婷五月天| 婷婷91| 天天肏高清在线| 久久月天堂| 四川BBB搡BBB爽爽视频| 91精品国产综合久久久不卡电影| 久久er99热精品一区二区| 丁香五月久久| 天天色宗合| 丁香久久综合| 91无码视频| 日日日日日| se影音资源在线观看| 五月丁香激情婷婷综合| 五月婷在线视频免费播放| 涩综合在线| 五月综合色播播丁香婷婷| www.yw色| 色色综合网www| 欧美色五月| 热99在线| 日本熟女视频一区二区| 婷婷五月成人有| 五月天五月色婷婷综合| 亚洲色爽| 婷婷丁香五月天在线| 狠狠久综合| 欧美性丁香色色五月天| 六月色丁香中文字幕| 激情五月视频| 色狠狠婷婷| 婷婷五月在线观看| 婷婷操逼| 成人做爰高潮A片免费视频| 极品人妻VIDEOSSS人妻| 国产激情一区| 五月天婷婷狠狠| 99热日| 99热费观看| 丁香久久综合| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 激情五月综合网| 婷婷五月天综合在线| 久久久久久人妻| 久99热| 国产AV一区二区三区最新精品 | 99久久婷婷国产综合精品草原| 婷婷色激情五月天| 婷婷她六月天| 视色综合| AV在线免费网站| 综合久久99| 97色色网| 免费人人操| 五月婷婷啪| 色综合爱综合| 激情五月综合| 色婷婷成人做爰A片免费看网站 | 99日本黄站| 妻久久久久| 国产色99| 综合xx网| 91精品啪| 久热91| 色婷婷88| 婷婷五月天VI| 伊人久久大香线蕉av一区| 快乐激情五月色婷婷| 欧美性爱特黄一级aaaassss| 丁香伊人网| 色情五月丁香婷婷网| 激情五月丁香综合网站| 99热这里只有精品22| 日韩欧美成人一区二区三区| 九九综合九九| 久色欧美| 天天色情站| 欧美日韩国产一区二区| 五月丁婷婷| 婷婷午夜综合| 婷婷丁香五月社区亚洲| 日韩一66精品| 在线不卡视频| 九九热在线视频观看免费10| 五月天自拍视频| 色色五月丁香婷婷| 亚洲免费av观看| 六月综和久久| 夜夜操夜夜操| 99这里有精品视频| 五月丁香六月色| 欧美S码亚洲码精品M码| 91色久| 五月婷婷丁香俺日污视频| 夜精品无码A片一区二区蜜桃| 9久久久久| 五月激情久久综合网| 狠狠干综合| 日日爽日日爽| 色婷婷五月天成人网| www,婷婷,com| 99re久热只有精品6在线直播| 五月天激情小说网| www.色色com| 九九这里精品| 中文中文在线| 激情婷婷亚洲五月| 五月婷婷无码| ,99视频久久| 综合亚洲AV| 婷婷天天综合| 少妇真实被内射视频三四区| www.天天干.com| 丁香五月综合激情啪啪| 中文字幕成| 天天插插天天| 五月丁香日逼| 五月激情影视| 女人天堂久久| 97在线刺激| 丁香六月婷婷色播| 欧洲一区二区| 91九色国产| 婷婷综合五月天| A片一曲| 五月激情综合网| 99日在线视频| 五月天色婷婷综合| 99这里只有免费的精品| 国产毛多水多女人A片| 成人精品一区二区三区四区五区| 狠狠干狠狠色| www,婷婷五月天777me,com| 色欲一区二区三区精品A片| 婷婷大美在线| 香蕉狠狠爱视频| 99色色视频| 色色综合无码| 国产又爽又猛又粗的视频A片| 久久亚洲色导航| 丁香五月花| 婷婷丁香五月噜噜噜| 六月丁香婷婷综合在线| 五月色网| 狠狠干五月丁香| 五月婷婷视频| 日韩在线一级| 婷婷五月天天天日日夜夜| 青青青在线视频国产| 五月天激情婷婷五月天久久| 日噜噜色| 91人人操人人| 五月天婷五月天综合网在线观| 欧美性猛交99久久久久99按摩| 五月婷婷婷婷婷| 正宗黄色毛片| 六月丁香网| 婷婷五月丁香六月天亚洲综合| 91操在线| 丁香五月伊人| 天天爽日日爽夜夜爽| 婷婷六月视频| 精品一二三区久久AAA片| 26uuu欧美日本| 91人妻人人做人碰人人爽九色| 99热只有| 婷婷激情视频欧美视频自拍视频欧美剧| 丁香激情四射| 日本女色人人| 影音先锋色婷婷| 丁香综合伊人AV| 操久久精| 26uuu淫色| www.99久久久| anquye五月| 色婷婷A| 精品爱欲五| www.久久爱.com| www。五月天。com| 久热中文字幕| 十二区无码| 婷婷五月激情中文字幕| 丁香五月综合AV在线| 99视频色在线观看| 天天综合网~91| 国产在线aaa片一区二区99| 久久久无码精品成人A片小说| 色婷婷丁香五月天在线视频| 伊人狠狠丁香婷婷综合尤物| 狠狠干狠狠干狠狠干狠狠干| 日本色道视频网站| Www.狠狠| 一本色道久久综合狠狠躁一二三| 激情影院丁香五月| 亚洲午夜视频| 可以看的av| 色色色com| 99色亚洲| 五月丁综合在线观看| 五月丁香操婷逼| 国产91在线视频| 大香蕉520| 婷婷爱五月天| 久久AV无码精品人妻系列试探| 日韩在线观看亚洲| 午夜丁香五月天综合| 秋霞午夜理论| 这里只有精品视频222| 色噜噜五月丁香婷婷| 伊人网色婷婷五月天| 激情五月天色色网| 婷香五月激情视频| 五月婷婷激情综合| 久婷婷婷| 99热主页日本| 色狠狠999综合| 五月婷婷丁香俺日污视频| 九九热在线视频,| 免費亭亭成人| 六月伊人婷婷| 成人AV在线网站| 婷婷伊人无码| 六月丁婷婷| 成人深爱丁香五月| 噜噜综合网| 久久网站观看免费欧洲国产| 欧美经典片免费观看大全| 婷婷五月电影院| 亚洲无线视频| 色色五月天 亚洲| 亚洲区视频| 另类综合色| 97婷婷五月| 99综合免费视频| 五月丁香另类网| 六月婷婷激情小说网| 69er小视频| 五月丁六月婷| 五月婷婷中文字幕| 精品99在线| 五月丁香成人| 久久天天| 9国产在线视频| 3p九色在线| 9色免费网| 大香蕉狼人久久| 性爱先锋AV| 熟妇高潮一区av| 99热免费18| 五月丁香A∨在线| 色www.con| 色丁香久久| 夜夜涩涩涩| wwwxxx五月婷婷小说| 五月丁香六月婷婷综合网缴情| www,色色色网站| 影音先锋91| 超碰成人电影| 五月丁香六月日逼| 手机免费福利视频| 亚洲av综合网| www。久久久久一b。Cc| 丁香97综合| 青青草五月天| 99九九综合久久九九| 涩五月婷婷| 拍真实国产伦偷精品| 九久热| 狠狠久久婷五月| 色天天狠狠干| 丁香五月婷婷五月| 婷婷五月天色色| 丁香影院五月综合| 东京热免费视频| 99热99这里有免费的精品| 五月丁香性| 噜噜噜久久| 九九综合九九| 六月婷婷毛片| 九九九热精品| 色很久综合| 五月综合久久| 思思精品热在线| 99免费热视频在线| 99热很操老逼| 五月婷婷亚洲综合网| 激情综合五月天| 成人午夜视频精品一区| 婷婷六月激情| 五月天婷婷丁香六月| 热99这就是精品视频| 婷婷五月天性爱视频| 六月婷婷成人| 日本一级特黄大片AAAAA级| 国产肥白大熟妇BBBB视频| 五月天激情久久| 丁香五月开心婷婷| 五月天激情网站| 日本九九热| 激情黄色五月天| 香蕉综合网| 91九色最新视频| 99操视频| 26uuu丁香婷婷五月| 91人妻人人操| 色播播之激情五月婷婷| 亚洲激情网| 无码A片一区二区免费| 五月天婷亚洲综合在线嫩草网| 婷婷色基地| 黄桃AV无码免费一区二区三区| 99性视频| 久热 91| 亚洲狠狠婷婷| 五月天婷婷影院影院观看| 四川BBB搡BBB爽爽视频| 久久五月天合网| 欧美内射AA| 成人Av在线大片| 丝袜激情网| 五月婷五月婷伊人伊人五月婷| 99热精品在线| 亚洲综合成人网站| 99久久玖玖| 任我干视频在线观看| 狠狠色丁香婷婷基地| 色色五月天丁香婷婷| 日本精品人妻无码77777| av 一区三区四区| 丁香五月婷久久| av在线观看免费| 99在线观看视频| 香蕉视频91| 日韩色五月| 99狠狠色| 色五月婷婷五月丁香五月激情五月视频| 大香蕉五月婷婷| 99九九在线精品热动漫| 夜夜爱伊人| 综合激情在线视频| 九九色逼| 五月丁香六月婷婷啪啪综合| 色五月大香蕉| 丁香激情合作五月| 精品一区久热| 九九九九这里只有精品| 久久aaaaa| www.maotanji.com| 色播综合| 深爱五月天| 激情黄色小说五月天| 蜜臀av 粉嫩av 懂色av| 色偷偷色婷婷| 黄色片精品| 六月激情婷婷| 亚洲激情电影五月天色婷婷丁香一起草| 国产精品久久久久久久久久免费 | 五月婷综合| 天天日天天摸天天| 久久密臀婷婷| 五月天丁香综合久久国产| 久九色| 天天日天天爽| 精品A√| 日韩高清成人| 少妇人妻人伦A片| 人人视频色| 亚洲AV第二区国产精品| www.狠狠操| 欧美亚洲婷婷五月| 操嫩逼电影| 中文字幕在线免费| 五月婷婷色综图片| 久久婷婷桃花五月天| 97人妻碰碰碰久久香蕉| 色色色在线播放| 色婷婷AV久久| 大香蕉九九| 激情久久天天| AV动漫不卡无码免费| 婷婷五月天色色| 香蕉AV777XXX色综合一区| 玖玖爱伊人| 免看黄大片AA | 综合五月天| 婷婷五月天成人动漫 | 久久奄也去色色网站| 九九偷拍网| 99精品在线播放| 色色色色色综合| 国产色色在线| 丁香婷婷婷婷十二月在线观看视频| 色综合色五月| 亚洲综合婷婷六月丁香五月| 爱射综合| 99综合成人视频在线观看| 天天婷婷综合| 久久99日本精品视频免费观看| 99热这里只有精| 综合色色色| 啄木鸟黑丝一区二区| 婷婷狠狠18禁久久| 西西4r午夜剧场| 亚洲最大视频| 欧美这里只有精品| 九玖欧洲亚洲| 免费国产VA国产免费| 亚洲激情五月| WWW色五月| 99热这里| 大香蕉五月丁香| 色五月婷婷综合| 天天插天天干天天舔| 青草青草久热这里只有精品| 久久九九re热| 久久久91精品| 国产成人片| 79精品视频在线观看,| 色爱综合网| 天天射色五月天| a v色婷婷| 亚洲另类婷婷五月丁香在线播放| 91人人超碰在线| 碰超在线九色| 超碰色热| 丁香五月天成人| 丁香激情五月天| va中文资源在线观看| 久久大香蕉同僚| 国产永久一黄| 综合激情九月婷婷,激情综合婷婷中文字| 欧美美女视频| 婷婷色啪| 丁香成人五月天| 天天操无码| 日本色色网站| 亚洲无码色色| 五月色婷婷综合| 综合五月天完整| 久久九九在线视频| 可以免费看的av网站| 久热最新视频 | 日韩五月婷婷| 综合狠狠伊人| 99er这里只有精品视频| 色六月丁香婷婷啪啪啪| 丁香五月激情啪啪| 99热r| 99精品视频免费在线播放| 免费九九热| 婷婷她六月天| 777.色色| 很操日本7| 五月婷久久在线| www.99成人视频| 色五月激情五月天| 国产精品爽爽久久久久久| 色欲午夜无码久久久久久张津瑜| 婷婷大乡焦噜噜| 天天摸天天肏| 26uuu亚洲| 狠狠精品干练久久久无码中文字幕| 婷婷五月花| 五月丁香婷婷伊人| 9 1大香蕉| 久久9热| 五月丁香婷婷久久| 婷婷丁香六月五月天| 色小说婷婷五月天天天| 综合图区激情| 色99在线观看| 色婷婷色99国产综合精品| 激情网五月天| WWW嗯嗯啊啊啊啊| 国产a视频| 亚洲色碰| 天天色伊人| 深爱五月婷| 亚洲成人在线综合| 天天日天天色| 激情五月四色| 99热碰碰| 色99无码| 婷婷午夜| 久久成人综合五月天| 五月天婷婷在线播放免费| 久久色亭亭五月天| 五月丁香六月婷婷啪啪| 精品久9| 日韩操逼大片| 婷婷五月天影视| 日本色综合| 天天玩夜夜操| 超碰人人在线观看| 99无码超碰| 色色色色色色色色色999| 五月丁香婷婷网在线在线| 国内外色色色色色成人视频| 日本性视频| 久久综合干| 色婷五月| 久草大| 五月婷视频| 91无码一起草| 色玖玖| 色九九九综合| 色综合网上班开心婷婷久久| 久久综合激情五月天| a在线观看| 久久久五月婷婷| 免费黄色片子| 91日婷婷在线| 色欲婷婷夜夜| 99热免费| 国产精品第一国产精品| 成人电影在线免费试看| 天天操天天日天天爽| 色五月天激情| a毛片二逼wwwwwwwwww| 深爱五月激情网| 欧美性爱五月天| 99视频这里有精品| 欧美激情综合| 99热这里只有精品在线| 精品亚洲国产成AV人片传媒| 超碰人人操在线| 99热在线免费| 秋霞免费视频| 色~性~乱~伦~噜| 亚洲精品午夜国产va久久成人| 五月丁香狠狠爱| 99这里有精品视频| 九九热在线观看视频| 激情图片亚洲| 久久黄色免费视频| 丁香五月性| www.久久综合| 中美月韩免费A片| 97色在线视频| 人人色婷婷| 五月激情婷婷偷拍| 婷婷五六日| 婷婷五月天社区| 亚洲啪啪啪啪| 久大香蕉| 色婷婷激情五月天| 婷婷激情五月天激情| 五月丁香六月片| 狠狠色丁婷婷日日,伊人激情综合网| 色欲婷婷五月天| 色九九九九| 五月婷激情| av五月丁香| 国产精品香蕉| 激情精品久久| 色宗合,宗合网| 欧美97色| 亚洲婷婷婷| 久久久精品人妻| 九九激情视频| 噜噜噜噜综合在线| 久久33视频| 中文字幕乱轮| 黄色高清无码| 久久少妇视频| 激情婷婷丁香色五月| 激情文学五月丁香六月婷婷| 白度黄视频| 色五狠狠| 激情五月天色色色| 99热6精品| 色 五月 天 婷婷 丁香 九月| 蜜桃五月天| 六月婷婷日| 99久久6| 婷婷六月综合基地| 色丁香五月| 五月婷婷丁香综合| 婷婷丁香人妻天天爽| 久久综合激情五月天| 高清无码网址| 国产熟女日日骚五月丁香爱| www.色欲丁香婷婷| 999热这里只有精品| 99色五月| 五月丁香| 热无码A∨| 国产精品国产成人国产三级| 色五月丁香一区在线| 激情AV网| 俺也去在线视频| 亚洲AV无码影院| 97超碰人人操| 伊人青草成人| 五月天丁香久久综合 | 色5月丁香婷婷| 丁香五月欧美激情| www色婷婷com| 日本综合99| 夜夜爱网站| 五月丁香婷婷色色色| 色无码| 天天操,天天插| 色噜噜五月丁香婷婷| 丁香成人五月天| 激情网狠狠干| 青青草Avb在线| AA丁香综合激情| 九九草热在线观看| 丁香五月天婷婷91| 激情影院丁香五月| 久久婷婷五月综合啪| 五月丁香花激情综合网| 日本欧美成人片AAAA| 久久人妻www| 五月婷婷久久综合| 亚洲AV影片在线观看| 国产美女视频久| 日日日,com| 久久五月婷综合网| www.婷婷五月天.com| 天天精品视频在线观看视频| 亚洲旡码| 九月丁香亭亭| 99碰碰中文| 丁香六月婷婷综合| 九九婷婷网五月天| www.激情在线| 婷五月天六| 五月天婷婷综合网| 五月天成人在线视频网站| 99在线观看精彩视频| 激情五月天色婷婷综合| 成人做爰高潮A片免费视频 | 极品人妻VIDEOSSS人妻| 久久婷婷五月综合色丁香| 四色 爱 婷婷 精品 亚洲 五月天| 狠狠干在线| 江苏少妇性BBB搡BBB爽爽爽| 色婷婷欧美| 欧美激情综合| 五月丁香黄色视频| 久草热视频在线观看| 99热免费网站| 色情婷婷。| 久久3级片| 久久综合婷婷| 人妻久久婷婷| 精品A√| 另类激情五月| 亚洲综合激情五月久久| 亚洲日日日| 美女激情婷婷| 婷婷五月天激情四射五月天激情| 九九色院| 丁香婷婷五月激情四射网| 久久九九99| 婷婷久久五月| 色婷婷69| 日本狠狠网| 久久久久久丁香五月| 777久久久| 另类专区在线| 亚洲激情婷婷| 五月WWW| 天天日夜夜夜操操操操| 99色精品视频| 日韩成人免费电影| 成人免费高清在线播放| 色爱综合五月| 亚洲天堂青草| 超碰人人插| seav天堂| 国产视频色色色色色色色| 99热在线播放| 五月丁香六月婷综合成人综合 | 久人操| 欧美成人精品A片免费一区99| 久久狼人天堂| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 大香蕉九九操| 一区无码| 婷婷丁香五月视频| 国产成人精品123区免费视频| 激情五月丁香六月综合AVXXXX| 婷婷婷婷色| 99精品福利视频| 色婷婷色五月天| 婷婷综合五月天亚洲综合| 亚洲成人黄色网| 美国色五月天婷婷资源站| se99视频| 99热97| 97五月天| 国产avapp 网| 婷婷激情综合| 狠狠干在线| 中文字幕日韩无码制服诱或| www激情网站| 五月婷婷丁香六月| 婷婷六月综合激情| 97干在线免费| 精品久久99| 丁香六月婷婷色XXXXX| 日日撸夜夜操| 婷婷激情四射| 亚洲精品V天堂中文字幕| 久cao香蕉影院| 日韩三级视频一区二区| 久99精品视频| 五月丁香亭亭操逼| 啪啪一区| 深爱激情九九五月天 | 婷婷五月色丁香在线看| 欧美日韩AAAA| 5五月综合网亚洲| 亚洲综合九九| 无码色| 婷婷天堂综合网| 91九色国产熟女| 狠狠舔| 激情五月丁香在线观看直播| 99久久大片| 丝袜人妻| 色伦专区97中文字幕| 婷婷婷五月香蕉| 亚洲综合狠狠艹| 五月丁香网视频| 草婷婷在线| 狠狠干,狠狠操| 色综合五月天| 五月天天综合网色婷婷| 久9免费视频| 婷婷丁香六月影视| 色欲一区二区三区精品A片| 欧美内射AA| 婷婷六月天国产综合| 亚洲AV第二区国产精品| 深爱五月激情网| 五月情婷婷| 五月天综合视频| 久久密臀婷婷| 97操操| 夜夜爽天操| 亚洲天天| 1024欧美看片| 婷婷五月激情网| 五月婷婷我| 99免费| 99艹精品在线观看| 、激情六月天| 婷婷五月天激情电影小说| 天天做天天爽| 久久九九九九| 欧洲日韩一区二区三区| 综合婷婷五月天| 成人亚洲精品久久久久| 五月丁香激情四射综合| 思思久久青草热| 夜夜爽天天爽| 亚洲精品网址| 五月丁香激情综合网官网| 久久大香蕉同僚| 色操综合| 久久激情综合| 久久九九爽| 婷香狠狠爱五月| 99re这里只有精品首页| 五月天婷婷激情小说电影| 激情性爱网站| 激情综合网激情五月欧美| 国产激情久久久| www.99久久久久99| 丁香五月激情澎湃一区| 另类激情综合| 97色欧美| 六月丁香激情网| 玩熟女五十AV一二三区| site:901-07.com| 丁香五月婷婷色情综合| 亚洲国产网站| 伊人色综在线| 成人做爰黄A片免费看直播室男男| 99 热国产在| 婷婷午夜精品久久久| 久久天堂婷婷五月| 亚洲丁香五月| 国产又色又爽又黄又免费| a网站免费观看| 免费AV在线| 色色色国产| 五月天狠狠网| 九色地址91视频| 色噜噜狠狠色综合网| 久久大大香| 2020夜夜操天天爽| 激情四射五月天| 国产一级片| 丁香五月综合婷婷| 免费AV在线| 五月叮香啪| 99热亚洲精品| 五月天婷婷网站| 亚洲色亚洲精品| 色欲AVV| 九九热这里只有精品9| 国产肥白大熟妇BBBB视频| sisi热国产| 性无码专区无码| 六月婷婷之青青草| 色情综合网| 九九视频这里只有精品在线播放| 天天日天天舔| 色色色综合视频| 丁香久久| 综合狠狠干| 五月天sesese| 免费观看欧美成人AA片爱我多深 | 久久精品一区二区三区四区| 婷婷五月丁香基| 五月婷婷很很色|