免费国产精品自在自线-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
返回資訊列表
www激情婷婷com| 夜夜撸天天日| 久久182| 久久婷婷五月综合色和| 五月婷婷五月丁香综合| 九月婷婷激情| 综合久久激情久久| 九九色色| 激情四射五月天| 欧美97p| 激情婷婷五月| 玖玖五月丁香| 玖玖综合玖玖| 婷婷久久色| 九九热视频在线观看| A片天天| 夜夜爽天天爽| 激情小说视频图片| 激情九九综合网| www.色婷婷| 碰超在线九色| 色色色五月天激情资源| 韩日AV片| www网站在线观看| 国产乱人偷精品人妻A片| 91人人爽狠狠狠| 五月婷婷六月综合| 综合网视频| 色亭亭五月天网扯| 欧美色六月婷婷| 欧美久热| 婷婷五月69| 无码一级片| 另类综合国产| 久热视频这里只有精品68| 综合99综合久久久久久久| 日日操无码| 成人免费120分钟啪啪| 色99在线视频| 九九热只有精品| 激情综合一| 天天舔天天摸视频| 思思热久热| 激情网综合| 亚洲欧洲自拍图片专区五月天| 亚洲操人| 伊人日日干| 激情啪啪五月天| 久热大香蕉| 久久精品99久久久久久| 色欲天天综合| 五月天婷婷丁香蜜桃91| 亚洲 六月 综合| 五月婷婷成人w| 99国产精品久久久久久久久久久| 国产午夜精品一区二区三区四区| 九九热9| 国产午夜精品一区二区三区四区| 九月色婷婷婷| 丁香五月婷婷啪| 欧美天堂久久| 亚洲色情免费网| 色情·com| 天天狠天天狠| 色五月六月| 丁香五月天资源网| 激情开心五月天| www.超碰| 久久久久视剧HD| www.久久9| 国产4P视频精品五区| enecarbon-materials.com污K127封锁请涟系@wip1688 | 成人婷婷桔色| 天天色综网| 99看片| 亚洲激情另类| 九九碰九九爱97超碰| 九八Av| 五月婷婷碰碰| 久99久在线| 免费99情趣网视频| 色爱综合网| 99综合久久| 五月婷婷久久综合| 婷婷的色色五月天| 人人爽人人爽人人爽人人爽| 人人干99| 99色嘟嘟精品网站| 五月丁香激情综合网| 五月综合婷婷开心网| 狠狠999| 五月丁查人人| 亚洲国产精品VA在线看黑人| 色哟哟www| 婷婷五月天直播| 天天操天天操天天操天天操天天操天天操| 亚洲美女高潮久久久久久69| 欧美,日韩成人在线| 久草五月天| 青青草a在线| 五月天另类图片| 91凹凸在线| 成人精品一区日本无码网| 色婷婷AV久久| 色播五月丁香综合| 婷婷久久五月| 激情综合网五月| 狠狠搞综合色| 五月天狠狠| 狠狠色噜噜色狠狠狠综合色 | 五月天丁香成人社| 丁香婷婷浪潮AV久久综合| 变态另类9| 激情的五月| 日本色色网站| 丁香五月婷婷婷桃花影院| 婷婷丁香五月亚洲欧美| 九九Av| 超级碰碰碰久久网站视频| 亚洲综合激情五月久久| 中文字幕AV网址| 日韩在线看AV| 狠狠干青青草| 51精品国自产在线| 五月丁香综合伦理片| 在线观看av网站| 美女被操一区二区| 丁香五月欧美色综合| 天天婷婷综合亚洲亚洲| 4399成人黄A片| 五月五婷婷| 狠狠操狠狠插| 综合在线丁香五月| 久久综合婷婷激情| 影音先锋 萱萱| 久久久999精品| 激情五月天色婷婷综合| 国产97在线日韩亚洲女人被黑人巨大| 五月综合六月婷婷| 热99玖玖99玖玖99九九| 色五狠狠| 婷婷激情四射五月天| 五月丁香婷婷五月色| 狠狠干在线| 久操干| 婷婷丁香人妻天天久久| 日韩有码久久| 亚洲视频五区| 色五月涩涩婷婷蜜桃| 久9热| 九色PORNY自拍成人精彩视频| 丁香月六月| 五月天婷婷色小说| www.lchjjc.com| 五月色导航| 99ER热精品视频| 狠狠操狠狠爱| 国产精品久久久久9999小说 | 五月激情丁香啪啪| 五月天网站亭亭| 久久久久久婷| 亚洲婷婷91丁香| 日本婷婷在线| 超碰久热| 狠狠插狠狠操| 色婷婷五月开心六月综合| 99婷婷| 色噜噜狠狠色综合无码久久欧美| 97色婷婷| 五月丁香综合激情| 少妇丁香婷婷 | 97人人操人人拍| 都市激情五月婷婷亚洲| 色婷婷在线播放| 五月婷六月| 日本va欧美va国产激情| 天天舔日日肏夜夜爽| 91VIP在线观看| 久久精品夜色噜噜亚洲a∨| 91在线视频综合| 久99综合婷婷| 六月天六月婷| 玖玖爱综合网| 怡红院AV亚洲一区二区三区H | 天天色视频| 婷婷激情五月天天天开心| 偷偷与邻居做爰完整视频| 深爱激情九九五月天 | 久婷婷五月天影院| 免费视频WWW在线观看网站| 五月天婷婷高清无码| 大香av| 色婷婷小说网| 少妇达人正片在线播放_ikun_福利吧| 丁香六月婷婷久久综合| 欧美激情 日韩无码 婷婷 五月天| 五月天成人在线视频网站| 久热9| 超碰成人黄色网| 五月综合无码| 婷婷 亚洲图片 丁香| 久久婷婷大香蕉| www.激情| 天天做天天爱| 婷婷综合五月色播| 色婷婷色五月另类综合| 另类激情四射| 91精品久| 97在线观视频免费观看| 99热这里只有精品66| 久久婷婷一级片| 久99久热| 香蕉97碰碰碰超视精品| 五月丁香久久综合91| 碰碰女| 99在线视频在线观看| 五月丁香婷婷综合视频| 91jiuseshunv| 婷婷六久久| 97干在线| 成人在线不卡| 日韩免费视频| 一起草av在线观看| 亚洲亚洲人成综合网络| 91精品久久久久久| 五月天伊人久久久久| 婷婷中文字幕版| 另类视频综合| 欧美综合123区| 国产操B| 久热婷婷| 婷婷色九月| 停停五月丁香| 97丁香五月| 五月天婷亚洲综合在线嫩草网| 亚洲色色五月天| 久久九久久| 99热精品在线| 青青草免费公开视频| 激情五月天色色| 天天干天天干天天| www,色婷婷| www,av好吊操| 婷婷五月丁香基地| 成人丁香五月| 亚洲人人操| 五月天婷婷视频| 久久伊人日日夜夜| 婷婷香五月| 婷婷五月俺要去| 玖玖婷婷五月天| 丁香五婷婷| 国产婷婷五月| 99久久99久久| 级情九色| 五月天成人在线精品| 入口五月婷婷六月香| 色婷操逼| 激情图片婷婷| 日韩爱操视频| 日本女人久久| 五月天桃色深爱网| 91男同视频| 国产肥白大熟妇BBBB视频| 伊人无码高清| 婷婷丁香五月在线观看91| 色天使久久综合| 日本97人人| 日噜噜色| 色婷婷狠狠爱| 亚洲综合五月天综合| 五月婷婷就去色| 五月丁香久久综合精品| 啪啪小说五月天| AV性爱在线| 五月天播播| 99九九在线视频| 91.com男女操| 久久99综合| BBWCUCKOLD精品熟妇| 欧美69久成人做爰视频| 九九九九九九综合| 久久精品爱爱| 婷婷五月天免费视频| 激情五月综合亚洲另类| 高清一区二区三区日本久| 超碰av在| 97人妻碰碰碰久| 欧日美女Va| 伊人婷婷色激情丁香| 亚洲综合色色色| 99噜噜| 国产激情视频在线观看| 久久婷婷的综合色丁香五月| 丁香五月亚洲AV| 情欲综合网| 四色99久久| 丁香六月综合激情| 9999热免费视频视频| 婷婷色五月天色| 另类天堂| 五月婷婷丁香婷婷| 亚洲成av人影院| 国产永久一黄| 岛国资源网| 婷婷99狠狠| 另类视频五月天| 五月久久综合| 99 热| 热久久99热欧美国产亚洲| 99久在线视频| 国内久久婷婷| 在线综合婷婷| 亚洲热视频| 97丁香视频| 婷婷丁香射射| 最新久久网址| 婷婷五月激情五月丁香五月| 丁香婷五月| 亚洲综合无码| www.99精品视频| 一本久久亚洲五月婷婷| 99亚州综合精品成人网| 国产操B视频| www.婷婷,com| 欧美性猛交AAAA片黑人 | 久色激情| 99精品小视频| 国产97在线日韩亚洲女人被黑人巨大| 天干天天干天天天天天| 久久久性爱视频| 久久五月情| 五月永久激情| 公的粗大挺进了我的密道| 久一网站| 激情五月婷| 黄色录像网点| 天天插天天干天天舔| 九九视频在线观看| 99re66热这里只有精品| 超碰在线91| 1234操逼网| 激情久久五月网| 五月丁香六月激情综合| 四月婷婷五月色综合| 亚洲午夜电影| 超碰免费99| 99热97| 丁香婷婷影院| 婷婷丁香人妻天天久久| 久久99免费视频网站| 日批在线看| 香蕉AV777XXX色综合一区| 久久五月视频| 五月婷婷久久综合| 天天日夜夜夜操操操操| 伊人高清无码| 婷婷激情社区| 一本色道久久88加勒比—| 99热无码| 成人在线日韩欧美| 色情五月丁香| WWW五月婷婷| 中文激情网| 亚洲婷婷视频| 97夫妻超碰| 少妇婷婷五月天| 婷婷D区| 色色色色色色97| 日本操天堂| 日韩AV色色色| 婷婷五月六月| 337p大胆噜噜噜噜噜91Av| 久操婷婷| 日本黄色三级片内射| 在线A色| 久久婷婷五月综合色丁香花| 开心激情站| 成人网在线视频| 99性视频| 色婷婷九月综合| 色婷婷色综合| 91丨九色丨大屁股| 丁香婷婷五月天色播| 超碰只有精品在线| 天天插天天插| 天天日夜夜高潮| 日本eVa一区=区视频| 婷婷五月美女直播| 久热9| 国产精品久久久久久妇女6080| 这里只有精品在线播放| 男人的天堂五月丁香| AV大香蕉| 激情五月天伊人av| 性爱AV天堂| 男女啪啪做爰高潮无遮挡| 这里只有精彩视| 九九精彩久久| 99精品偷自拍| 丁香五月区| 五月天婷综合网站| 五月天综合久久丁香91| 国产精产国品一二三在观看| 天天操婷婷| 亚洲狠狠婷婷综合久久久| 激情久久月| 色播播五月天| 婷婷五月婷婷| 五月成人网天天| 日本高清久| 中字幕视频在线永久在线观看免费| 激情婷婷六月天| 五月丁香美女| 狠狠第四色| 亚洲精品又粗又大又爽A片| 六月婷婷五月丁香| 激情婷婷丁香色五月| 亚洲黄色精品| 婷五月天| 六月五月天婷婷涩播在线| 久久婷婷六月综合| 综合精品99| 天天狠狠夜夜狠狠2023| 亚洲色婷婷| 五月丁香婷婷婷婷综合网| 亚洲情色一区| 狠狠综合色网| 黄色AAAAAAA| 色99色| 天天综合网91| 婷婷成人五月天| 色宗合久久五月婷婷| 综合久久婷婷| 色婷婷操逼| 在线不卡的视频| 欧美搡BBBBB摔BBBBB| 96精品久久久久久久久| 天天日天天舔| 夜夜操天天干| 五月丁香激情婷婷| 激情婷婷六月| 五月永久激情| 激情婷婷亚洲五月| 99无码免费视频| 99热老司机| 色射7856五月天激情四射| 久久99成人性爱高清视频| 五月婷丁香花| 日本色噜| 99亚洲综合| 五月婷婷xxx| 爽极品色| 五月丁香啪啪网| 91色涩| 五月丁香婷婷啪啪网| 色五月激情图片| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 天天爽天天| 中文字幕视频在线播放| 激情五月婷| 激情五月婷婷五月| 91超级碰在线| 99色天堂| www.yw尤物| 激情久久久| 极品少妇高潮啪啪AV无码| 亚洲色婷婷五月天| 熟女人妻一区二区三区免费看| 91久久久久久久久18| 91狠狠综合久久| 日本啪啪网| 国产成人在线精品| 98毛片| jiujiu热在线视频| 狠狠va| 久久五月天激情视频| 婷婷五月永远18免费久久久| 996日日爱| 色播激情五月天| 婷婷亚洲综合| 欧美性爱五月天| 六月丁丁香| 99色在线| 日本一区二区三区精品视频| 99热这里都是精品| 五月婷婷天天色| 天天拍久久| 激情六月婷| 婷婷色五月婷| 激情四射五月天| 成人中文网| 啪啪啪丁香五月| 特级操b片| 91操碰| 激情五月亚洲综合网| AV天堂婷婷五月天| 99热在线精品播放| 苗黎美女四级成人版一级二级毛片| 97色射| 激情婷婷网| 91丨九色丨熟女|新版| 狠狠五月激情在线| 怡红院视频| 99色婷婷| 亚洲 成人 电影av在线观看| 婷婷五月激情网站| 99免费热视频在线| 被男人添B超爽视频| 中文字幕丰满乱孑伦无码专区 | 五月丁香天堂网| 9色在线视频| 久久AAAA片一区二区| 色婷婷亚洲在线观看| 丁香啪啪| 欧美色性色好| 国产精品成人AV在线观看春天| 五月天激情综合网| 欧美色骚婷婷五月天| 久久色五月天激情小说| 9l视频自拍9l九色成人| 99久在线精品99re5热视频| 久久五月天精品视频| 毛片色五月| 激情综合婷婷| 最新色色五月天| 婷婷五月天第四色| 中文字幕在线观看视频www| 色九月丁香婷婷蜜桃在线观看| 全亚洲最大的婷婷五月天网站COM| 婷婷五月天综合色| 亚洲va综合va国产va中文| 伊人九九综合| 久热A| 另类小说五月天| 九九色院| 日本成人噜噜噜| 日比网免费国产| 日韩色色色色色| 九九热在线观看视频| BBWCUCKOLD精品熟妇| AV成人在线播放| 五月婷婷啪啪啪啪| 亚洲天堂婷婷| 深爱丁香激情| 久久性爱视频| 精品久久婷婷五月天| 大香蕉久久久| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 思思热久热| 国精产品一区一区三区免费视频 | 色色色综合网| 蜜乳9188| 91操碰| 五月天婷婷色色| 丁香五月人妻| 激情综合在线观看| 99在线视频精品| 成人毛片在线免费观看| 色情成人五月天| 亚洲国产成人AV在线| 五月天婷婷伊人| 国产AV一区二区三区日韩 | 色婷婷香蕉丁丁网| 人妻无码视频网| 亚洲日韩26uuu| 91欧美| 激情六月丁香综合| 伊人综合网站| 五月婷六月丁| 久久99草五月婷婷| 99热这里只有精品中文字幕| 日本久草福利| 日本精品99| 久久xxxx| 日日夜夜天天| 丁香五月在线观看综合| 黄色高清无码| www.激情五月| 色色五月丁香婷婷| 天天日天天插| 秋霞电影理论| www.99操.com| 欧美日韩成人免费在线| 五月开心婷婷极品激情| 无码日本精品XXXXXXXXX| 色五月丁香一区在线| 激情操逼婷婷| 五月天激情网图片| 色婷婷成人| 一起草av| 六月丁香影院| 91操在线视频| 蜜桃人妻无码AV天堂三区| 九九热这里只有精品12| 五月天激情综合网| 亚洲五月天婷婷| 丁香伊人激情| 中文在线成人| 五月天成人免费视频| 丁香五月婷婷88在线| 99久久婷婷国产综合亚洲| 五月综合色| 久久久久久xxxxx| 婷婷五月天天| 在线色色| 人人草人人爱手机视频看看| 成人在线不卡| 综合久久激情久久| 久久色婷婷| 婷婷色5月天在线。| 久久五月婷综合网| 激情综合网五月婷婷| 精品99只有。| 丁香五月天啪啪| 久久综合婷婷激情| 91久操| 综合五月激情网| 丁香伊人网| 中文字幕中文有码在线| 91狠狠综合久久| 我要看激情五月天| 婷婷五月激情网站| 伊人综合婷婷| 亚洲偷| 91婷婷丁香| 色婷婷视频综合| 一区色色色色网| 69人人操人人爽| 99这里都是精品6| 欧美一级操逼视频| 色综合久久88色综合天天人守婷| 丁香五婷| 亚洲99热| 久久小说网| 99精品久久久| 五月婷婷中文字幕| 六月丁香婷婷开心综合基地| 超碰国产在线| 九色七七| 欧美亚洲成人在线| 婷婷中文字幕欧美| 综合久久99| 久热九九| 亚洲综合1024| 久久亚洲无码| 五月天婷婷成人| 男女久久婷婷五月天| 在线观看五月婷婷网| 九九性爱网| 97碰 在线视频观看| 疯狂做受XXXX高潮A片动画| 久久丁香网| 色婷婷久久7777| 婷婷五月天成人网| 天天做天天爱天天爽在| 香蕉久操| 日本人妻伦在线中文字幕| 综合婷婷| 久久婷综合| 日本系列_4页_777FP| 直接看的AV| 不卡影院午夜理论片| 日日操夜夜爽天天天| 丁香六月婷婷久久综合八月| 99亚洲精品视频在线观看| 五月丁香六月色| 亚洲视频无| 伊人久久大香线蕉综合网站| 亚洲黄色av网站| 色综合久久无码| 婷婷综合玖玖五月| 31色区视频免费看| 综合九九久久| 五月天三级久久| www.色九月| 久久伊人9| 五月婷婷激情久久| 97人人干人人操| 丁香五月激情婷婷| 琪琪秋霞| 狠狠色狠狠色综合日日91| 操逼123网| 久香草视频在线观看| 五月丁香六月情亚洲| 久久久久久丁香五月| 丁香五月网在线观看| 婷婷丁香激情五月天色色| 婷婷丁香五月天中文字幕| 色婷婷色五月天| 丁香六月婷婷色播| 97干在线| 国精产品一区一区三区免费视频| 97在线观看| 精品久9| AV免费在线网站| 精品网站:999WWW| 操久久网| 69婷婷丁香午夜| 日韩精品无码99| 天天做天天爱| 色噜噜狠狠一区二区三区| 极品少妇高潮啪啪AV无码| 久久黄色片| 99ri视频在线播放| 综合在线网| 日日夜夜小色哥| 91要啪| 九九久久精品| 热久久这里只有三级视频| 日本欧美国产| 精品无码人妻一区| 99热亚洲| 国产精品扒开腿做爽爽爽A片唱戏 亚洲爆乳无码精品AAA片蜜桃 | 9l视频自拍9l视频自拍九色学生| 丁香六月婷月91婷月| 日韩综合大黄| 九九色人| 亚洲AV成人在线观看| 久久综合综合久久| 26UUU精品一区二区c〇m| 久久思思热| 国产全是老熟女太爽了| 五月婷婷六月丁香玖玖玫瑰91| 色婷婷手机在线| 六月丁香久久| 国产亚洲99久久精品| 婷婷基地成人五月天| 天天舔天天插天天爱| 五月婷婷在线综合| 五月天社区| 色www.con| 天天碰天天插天天操| 伊人网碰碰| 人妻激情久久| 99re最新地址视频| 五月天婷婷综合| 538在线精品| 五月丁香六月婷| 天天色综网| 国产精品扒开腿做爽爽爽A片唱戏| 偷拍九九五月丁香婷婷| site:publishdd.com| 九九免费视频| 182TV大香蕉| 国产精品香蕉| 搡BBBB搡BBB搡18 | 婷婷五月丁香五月丁香| 91丨九色丨白浆秘| 超碰AV成人| 99惹精品视频| 五月婷婷激情| 99在线er热| 97人人干人人操| 91岛国片| 丁香五月天论坛| 丁香五月综合网| 五月天成人在线视频丁香| 免费黄色视频网址| 久久92| 久久人妻精品| 99热在线看| 五月天色婷婷伊人网| 99久久国产宗和精品1上映| 久久天天天| 色五月首页| 久久婷婷网| 五月丁香啪啪综合| 精品99在线| 99久久精品国产色欲| 人人搡人人| 日本色视| 亚洲AV无码影院| 26uuu精品一区二区| 久久五月天丁香花| 婷婷五月天欧美| www.婷婷五月.com| 免费观看欧美成人AA片爱我多深 | 婷婷五月天堂| 色婷婷色| www.激情| 午夜成人网站在线观看| 91黄址| 久热大香蕉| 色欧洲| WWW.夜夜操.com| 亚洲天堂热| 婷婷丁香高潮了| 免费观看全黄做爰的视频| 我爱婷婷五月天综合88| 久久44| 天天干夜夜谢| 成年人夜夜喷水| 99自拍视频在线| 婷婷亚洲五| 风流少妇A片一区二区蜜桃 | 久久激情五月婷婷| 国产精品久久在线观看技巧| 人妻熟女一区二区AV| 综合色色婷婷| 色色色色色综合| 性欧美日本| www。狠狠干。com| 色婷婷狠狠禁18久久| 五月丁香六月综合激情无码软件亮点 | 婷婷五月av| 婷婷丁香亚洲五月天| 天堂在线婷婷| www.丁香五月| 99热这里只有精品13| 丁香九月激情在线视频| 亚洲综合另类| 亚洲99激情| 99色综合久久| 99热1| 日日操夜夜操狠狠操| 久久五月天影院| 色爱99| 在线VA视频| 久草视频大香蕉99| 99操视频| 淫荡工a| 99婷婷国产最新视频| 综合激情婷婷| av狠狠操| 丁香亭亭久久| 色偷偷人人| 婷婷中文字幕| 婷婷五月深爱五月| 三级三久久线久久99久目本WW| 丰满老熟妇BBBBB搡BBB| 五月综合视频| 色九月激情综合网| 婷婷久久综| 人妻日日日| 大香蕉久久久| www久热com| 开心五月婷婷激情| 日本A片一区| 日本婷婷五月天| 日婷婷久久开心| 99久久国产成人精品| 9久久久| 四LLL少妇BBBB槡BBBB| 六月婷婷激情| 麻豆123区| 色五月婷婷中文字幕| #NAME?| 色色色综合网| 色婷婷中文在线| 婷婷五月六月丁香综合| 丁香五月婷婷六月婷婷| 色综合久久综合| 中文字幕无码AV| 婷婷五月天亚洲| 激情五月天婷婷在线网址发给我| 五月社区婷婷激情| 婷婷五月天色| 99啪啪网| 91男人资源站| 亚洲亚洲人成综合网络| 色五月激情婷婷| 色五月av| 狠狠色综合久久| 夜夜夜叫天天天做| 深爱女色婷婷丁香五月亚洲图区| 狠狠爱婷婷爱| WWW久| 97se在线视频| 婷婷五月丁香基| 黑人糟蹋人妻HD中文字幕| 欧洲毛片基地c区| 人人草人人看| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 色综合久久88色综合天天| 五月激情另类| 九月丁香婷婷综合激情| 丁香色五月 97干| 激情久久久久久久久久久| 成人AV综合在线| 日韩一级| 九九九九热99超碰| 播丁香五月婷婷欧美| 无码AV久久久久久久久| 色五月激情网| 午夜不卡久久精品无码免费| 婷婷五月天综合网| 99热这里只有精品5| 啊v视频在线观看| 亚洲乱码w在线观看| 激情综合网五月天| 日韩AAAAA| 婷婷激情小说| 久久久人妻| 91九色精品| 超碰超碰在线| 99热精品在线观看| 五月色丁香| 99热免费| AA片在线观看视频在线播放| 午夜不卡久久精品无码免费| 久久婷婷青青草| 久久综合站| 综合超碰熟| 在线视频99| 久久六月天| 天天做天天要天天爱| 五月天色播网| 国产热精品| 激情小说五月欧美亚洲丁香| 日日夜夜狠狠操| 亚洲熟妇无码乱子AV电影| 久青操| 五月天婷婷在线播放| 成人看片网站| 黄色录像网点| 超色欲天天| 亚洲视频五区| 99高级会所久久| 日本欧美国产| 伊人玖玖网| 99爱在线免费视频| 丁香五月激动深爱欧美| 热久久婷婷| 婷婷色啪| 亚洲成色综合网站免费观看| 99综合99| 久久精品性爱| 五月天色区| 婷婷丁香五月天综合在线日韩| 99丝袜精品视频网站| 99热碰碰热| 综合在线丁香五月| 丁香久久| 99爱这里只有精品免费视频| 99热热热99精品丁香| 久久综合五月| 亚洲精品网站色视频| 激情五月天婷婷视频| 婷婷成人AV| 无码99| 欧美在线视频9| 久久只有精| 婷婷五月天激情在线| www.久久久久| 狼人伊人天堂| 成人在线精品| 色五月视频,小说| 色婷婷免费观看| 日韩黄色中文字幕| 99操无码视频观看| 天天日人人爽| 婷婷色中文字幕| 欧美色激情四射| 丁香六月婷婷开心| 操逼棍操逼| 思思热精品在线| 男人的天堂在线婷婷| 五月丁香网视频| 开心网五月色婷婷| 国产真人做爰视频免费| 伊人网碰碰| 丁香五月婷婷综合网| 天天日,天天插| 大香蕉在线观看9| 人妻性爱| 97香蕉久久超级碰碰高清版| 97日本在线播放| 亚洲激情亚洲激情| 俺去也婷婷| 九九操屄| 开心 五月 综合| 猫咪伊人久久| 九九中文色色| 天天综合天天做天天综合| 99在线69| 9热久久| 日逼免费视频| 色99视频| 色五月天丁香| 色色99| 色色草97| 99人人操人人摸| 免费看欧美成人A片无码| w婷婷五月婷婷w| 九九婷婷网五月天| 丁香婷婷激情网站| 狠狠擼综合| 丁香五月天综合| 97狠狠色| 97碰碰视频在线观看免费| 亚洲在线播放| 99在线亚洲| 日韩99无码| wwwxxx五月婷婷小说| 操91| 五月伊人综合| 九九在线精点品| 99激情在线| 99色五月| 91日日日| 色色色在线观看| 99热在线观看99| 99在线精品免费视频| 久久性都花花世界成人免费视频| 五月丁香婷婷六月天| 日本精品久久久久中文字幕| 色综合色综合婷婷热| 思思热视频| 五月婷俺去也| 一本色道久久综合狠狠躁小说| 久久色情| 婷婷五月天综合在线| 久久99综合| 婷婷五月天堂| 开心 五月 综合| 五月色综合| 欧美综合激情五月丁香| 日本精品人妻无码77777| 丁香婷婷六月天| 久久久天堂国产精品女人| yazhouzonghesese| 亚洲超碰中文字幕| 五月婷婷真爱激情网| se99热久久一本| 99乱视频| 天天做天天爱天天爽夜夜揉| 五月丁香婷婷综合| 婷婷五月激情丁香激情| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 九九热re99re6在线精品| 狠狠第四色| 久久只有18视频| 草美女在线观看视频在线播放 | 秋霞av吧| 婷婷五月天激情诱惑| 日本毛片内射| 久久婷婷热| 99亚洲综合| 蜜臀av 粉嫩av 懂色av| 极品人妻VideOssS人妻| 啪啪激情综合| 国产精品a无线| 五月婷婷丁香狠狠撸久久| 婷婷色基地在线看 | 丁香五月婷婷啪| 丁香六月综合激情| 丁香婷婷五月基地| 2017人人操| 久久五月视频| 亚洲丁香五月在线观看| 日本人人干| 婷婷香蕉| 婷婷六月啪啪| 色色色五月婷婷| 成人五月天综合网| 五月天激情四射网站| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 久久激情网| 九九国产精视频| 三日本无码| 97干在线视频| 婷婷五月天成人基地| 97色色婷婷五月天| 欧美电影在线播放| 日本色爽| 五月天亚洲最大成人| 1024你懂的欧美曰韩| 天天做夜夜爽| 色狠久| 激情六月下句是什么| www狠狠爱com| 人妻啪啪啪| 五月婷婷综合久久| www.99热日韩.com| 99热 在线播放| 中文字幕欧美日韩VA免费视频| 亚洲色频| 五月天婷婷青青| 色哟哟精品| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 97碰超级人人看| 五月婷婷综合潮喷| 99er这里只有精品视频| 九九美女视频| 色婷婷亚洲婷婷| 亚洲午夜电影| 五月婷婷久| 99热欧| 大香蕉婷婷五月天| #NAME?| 久久精品99国产精品日本| 综合一区二区三区| 亚洲第一视频 久久| 婷婷五月天中文字幕.| 黄色一级影片| 9精品国产在热久久| 蜜桃五月天| 色五月激情婷婷| 综合色色婷婷| 狠狠狠夜夜夜| 亚洲十月婷婷综合| 婷婷六月丁香在线| 色热久| 踪合专区啪啪| 九九综合88| 色五月丁香A欧美com| 婷色五月天| 五月天婷婷色综合| 亚洲情色一区| 日韩啊啊啊| 五月天社区狠狠| 婷婷五月开心中文字幕色| 日本老女人黄页在线播放| 丁香九月综合激情| 91丨九色|PRNY熟妇| 天天射色五月天| 日比视频91| 五月停停大香蕉| 色噜噜狠狠色综无码久久合欧美| 五月天色五月| 人人干人人看| 人妻中文在线| 色情综合| 亚洲AV成人在线| 91操网| 久久久久久久久久8888| 久久久久久综合88| 国产三级片91| 超碰在线观看9| 97色天堂| 超碰在线人人| 日韩综合久久| 色五月综合激情| 人人操AV| 99自拍视频| 久久这里只有精品热在99| 丁香六月色婷婷| 九九在线精点品| 婷婷伊人綜合中文字幕| 色色热| 久久久国产精品黄毛片| 一级AV片| 激情婷婷护士激情| 久久九九re热| 久久五月天网| 亚洲综合色色| 99热欧美在线观看| 欧美综合激情五月丁香| 丁香五月亚洲婷婷| 丁香五月激情综合啪啪| 丁香五月激情在线| 99热精品在线| 色欲天天综合网| 成人五月天在线观看| 综合五月草| 天天日夜夜操五月| 26uuu精品国产| www.五月婷婷.com| 四色99久久| 日产精品久久久久久久蜜臀| 色99综合色88| 人人叉久| 亚洲九区| 亚洲AV无码久久精品色欲| 中文乱子伦视频| 色情五月婷| 五月天丁香网| 婷婷色综合网日韩国产| 9 1大香蕉| 这里只有精品久久| A片天天| 99人人精品| 五月婷成人| 欧洲亚洲激情五月天在线| 九九这里有精品| 激情欧美五月丁香| 亚洲午夜成人av电影网| 婷婷va| 婷婷丁香六月五月天| 婷婷丁香五月天在线| 色激情五月| 极品少妇XXXX精品少妇偷拍| 五月停停99| 五月丁香啪啪综合| 色999五月色| 99在线免费视频| 国产精品国产成人国产三级| 9久操| www.激情五月天。com| 久久欧洲综合网| 五月天色色网站| 婷婷婷婷婷婷婷婷婷婷丁香| 91色在线| 求可以看的AV网址| 五月天婷婷免费| 51精品国自产在线| WWW免费视频碰碰碰碰| 五月天婷婷网站| 96精品久久久久久久久| 搡BBBB搡BBB搡18| 日本婷久久| 第四色婷婷五月| 1024手机在线观看看片_日韩精品| 狠狠色丁婷婷日日,伊人激情综合网| 少妇达人正片在线播放_ikun_福利吧| 五月丁香婷婷六月| 野外99热| 亚洲丁香五月天在线视频| 激情五月丁香六月综合AVXXXX| 做爰丰满少妇1313| 国产精典视频在线观看| 天天免费日日夜夜夜夜| 99色在线视频| 极品另类| 久热精品视频| 欧美日韩成人| 性爱网五月天| 色吧五月婷婷| 少妇人妻丰满做爰XXX| 亚洲综合九九| 一丁香五月天月AV| 久久五月婷综合| 天天天天天天天干| 亚洲欧洲国产精品| 91九色成人原创视频| 婷婷五月丁香伊人网| 色五月婷婷在线| 成片免费观看视频大全| 色五月涩涩婷婷| 亚洲AV成人一区二区在线观看| www.99热国产| 色日本五月天| 激情另类综合| 亚洲99在线| 婷综合六月| 激情久久综合网| 少妇性BBB搡BBB爽爽爽视頻| 狠狠色丁香五月婷巨| 亚洲成人AV在线观看| 色情开心五月| 99亚洲精品视频| 五月丁香亚州综合网| 99爱免费视频在线观看| 亚洲成av人影院| 狠狠色婷婷7| 五月丁香六月情| 国产67194| 日韩无码专区| 欧美在线97| 色私五月婷婷| 丁香色成人| 色婷婷先锋| 26uuu丁香婷婷五月| 大香蕉久久婷婷精品综合| 六月婷婷AV| 五月婷婷之综合激情| 99碰碰碰| 亚洲视频图片婷婷五月| 97成人在线视频| 99re热视频这里只精品| www.激情五月天.com| 伊人五月天在线| 一起肏在线视频| 成人视频在线免费播放| 色婷婷88|