欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

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熟女视频| 婷婷五月超碰| 丁香五月天色| 亚洲综合五月天婷婷| 五月丁香在线看| 大香蕉在线观看9| 人人摸人人搞| 狠狠色丁香婷婷久久综合| 激情com| 欧在线一区| 99色在线视频| 99ri精品在线| 日日噜狠狠色综合久| 99视频久久| 人人操人人妻| 成人午夜视频精品一区| 色色射| 婷婷五月天偷拍| 六月色婷婷色| 亚州色婷婷| 婷婷色网址| 玖玖伦理电影| 99日韩| 色五月激情问网站| 噢美99| 久久国产色| 日日爽日日爽| 久久婷婷五月草视频| 伊人久久婷婷| 色婷| 亚洲视频二区| 丁香六月激情| 殴美日比视频| 99热国产精品| 国产午夜成人免费看片无遮挡| 久久九九色| 婷婷五月天成人动漫| 9久久久| 久久婷婷五月天| 婷婷五月AV| 91精品久久久久久综合五月天| 老司机午夜福利视频金瓶梅| 五月婷丁香花| 激情啪啪五月天| 一级精品999WWW| 超热久碰.com| 337p大胆噜噜噜噜噜91Av| 激情五月天色播| 六月丁香好婷婷| 九九99视频精品| 亚洲啪啪啪啪| 婷婷丁香五月综合| 激情婷婷五月女| 91久久综合亚洲鲁鲁五月天| VA五月激情在线| 九月影院義母在线播放| 操碰91| 91一起操| 丁香五月综合狠狠| www.韩日视频| 色天堂97| 五月丁香啪啪网| 久久综合影院| 九九av| 婷婷的久久网站| 色色色色色五月丁香| 色站9/| 日韩有码一区| 久久大香免费| 91九色在线| 婷婷五月丁香六月| 日本五月婷婷久久久六月丁香| 丁香六月开心| 韩国婷婷丁香五月| 五月色婷婷影院| 99在线视频喷水| 91久久九九| 亚洲AV无码成人电影| 国产操逼视频网站| 五月天综合激情网| 五月婷婷新网站| 九九热在线亚洲免费视频| www.激情五月天.com| 草操AV在线| 天天开心AV色综合婷婷五月天| 成人狠狠成人狠狠成人狠狠成人狠狠| 精品久久久人妻| 激情综合五月婷婷六月丁香| 五月婷婷激情网| 草草操操| 五月Huangsewang| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 天天色中文字幕女优AV| 久色激情| 五月激情综合五月| 五月综合色| 色五月天丁香婷婷| 人与禽A片啪啪| 韩国97天堂| 久久五月天色婷婷| 久久这里只有精品网| 丁香五月停停av| 天天草天天爽| 国产精产国品一二三在观看| 成人视频在线免费播放| 久久成人性爱| 五月天操逼网| 少妇熟女视频一区二区三区| 六月婷婷视频| 日韩AAA| 丁香美女主播视频在线观看| 日日夜夜婷婷| 色婷婷色五月综合| 五月色无码| 丁香激情综合| 婷婷五月天网| 五月天激情久久| 九九这里只这里只有精品| 色天天综合成人网| 五月天激情小说网| 色狠狠综合入口| 欧美狠狠草| 五月成人综合| 亚洲熟妇AV乱码在线观看| 人人操超碰| 色婷天天| 99热一区| 国产一级黄色影片,| 爆乳熟妇一区二区三区爆乳照片| 六月丁香久久| 欧美色男人网站| 婷婷五月天中文字幕| 欧美欧盟性爱网| 天天做天天爱天天玩夜夜爽| 激情网五月天| 婷婷香香五月| 久婷婷婷| 99热大| 丁香五月天激情婷婷丁香六月| 色色五月婷婷丁香| 99人妻碰碰久久久禁片| 色婷婷五月六月丁香综合视频| 99精色| 91九色精品熟女内射| 五月天激情日色在线| 99综合视频一体| 有哪些A片网站| 五月天婷婷基地| 99精品女人天堂| 第六色在线| 精品久久99| 四川操逼站| 亚洲久久婷婷丁香五月天| 亚洲另类电影| 影音先锋四区| 黄网免费看| 五月综合激情网| 一起草av| 久久这里只有精品99| 欧美三级视频下载| 夜夜干天天操| 综合色吧| 久久色亭亭五月天| 久久在线大香蕉| 亚洲日日操| www,婷婷,com| 久久这里只有精品1| 欧美色五月| 精品久热| 综合99久久| 人人操人人看97干| 国产26uuu| 亚洲乱码日产精品BD| 色婷婷六月性| BBWCUCKOLD精品熟妇| 激情综合青草| 99ER热精品视频| 色色无码日韩| 成人午夜天| 激情网战码亚洲A| 久久九区| 秋霞三级影视资源| 日韩精品一区二区三区,四区,五区视频| 亚洲激情亚洲激情| 狠狠精品干练久久久无码中文字幕 | 校园春色亚洲色| 激情WWW| 狠狠操狠狠爱| 人人看人人要| 涩 五月 婷婷 狠狠| 五月天婷婷久久视频| 亚洲成人av在线观看| 婷婷五亚洲| 性爱激情五月| 人人草人人视| 久久色五月| 丁香婷婷六月天| 97在线视频人妻九色| 欧美影院| 99re热精品视频国| 日韩不卡123| 亚洲成人黄色网| 日本欧美999久久久三级片| 玖玖资源站蜜臀| 五月婷婷亚洲综合在线| 玖玖五月丁香| 天天日天天做天天舔| 久久五月丁香| 五月天伊人手机在线播放AV| 五月 激情视频| 婷婷激情五月综合| 天天拍久久| 九九九干精品| 六月婷婷狠狠色在线观看| 久草热8精品视频在线观看| 婷婷深爱五月天在线| 性做爰A片免费视频A片直播| 丁香五月六月| 超级碰碰碰久久网站| 99热精品在线免费观看| 色噜噜狠狠色综合日日| 五月婷婷欧洲| 日本一级一级一级一级| 五月丁香六月婷婷视频| 丁香六月婷婷综合激情欧美| 婷婷五月天 丁香五月天 裸体| 可以免费看的AV网站| 久操福利| 这里只有精品96| 久久久久久人妻| 噜噜噜噜噜久| 18久久| 亚洲色五月天| 天天日夜夜拍| 手机激情网| 91干在线视频| 国精产品一区一区三区免费视频| 亚洲操逼片| xx综合网| 国产熟女一区二区三区五月婷| 99热在线观看| 亚洲精品国产setv| 久草热视频在线观看| 久久五月网| 亚洲AV免费在线| 五月天天爽| 天天日天天做天天舔| 波多野结衣不卡AV| 可以免费观看的AV| 亚洲精品色| 天天噜天天爱| 狠狠色综合网| 超碰a女人的天堂| 蜜桃五月天| 色爱99| 日韩成人精品一区久久久久| 在线视频色五月| 91丨九色丨老农村| 9久精品| 99re在线精品视频| 狠狠激情五月天| www.激情.com.| 九九色婷婷五月天| 极品少妇XXXX精品少妇偷拍| 99性视频| 亚洲色夜| www.激情五月| 久久性爱视频这里只有精品| henhencao国产在线| 色婷婷久久综| 婷婷九色| 99re视频在线播放| 婷婷亚洲欧美丁香五月| 开心五月综合激情综合五月| 婷婷伊人无码| 激情五月丁香婷婷夜夜操| 色色综合五月| 91人在线观看| 欧美电影在线观看| 极品人妻XXXXOOOO| 北京熟妇搡BBBB搡BBBB| 91久久久久久久久18| 久热91精品| 婷婷五月视屏| 国产亚洲网站在线| se色综合网| 五月丁香婷婷欧美色图视频五月丁香777电影 | 色色色色色色综合| 思思re视频在线| 色狠狠激情五月| 婷婷性爱网| 草榴视频网| 91在线观看www| 国产一级黄色影片,| 中文字幕丰满孑伦无码专区| 亚洲激情AV| 国产在这里只有精品| 五月天婷婷丁香导航| 五月丁香啪啪综合| 第四色五月婷婷| 99在线精品视频| 99热99在线精品| 婷婷激情五月天桃花网| 五月婷婷,六月婷婷| 丁香花狠狠婷婷亚洲中文字幕| 久久A极片| 亚洲爆乳无码精品AAA片蜜桃| a久久| 亚洲视频99| 991国产精选视频在线播放下载| 天天操婷婷| 婷婷五月天开心网| 99狠狠色| 色色性爱视频| www.五月天| 丰满少妇猛烈A片免费看观看| 九月婷婷| 五月丁香婷婷激情图片| 丁香香蕉婷婷| 91人人操.COM| 色五月丁香一区在线| 天天日天天摸天天| 激情九九综合网| 狠狠五月综合在线| 丁香五月先锋| 99色婷婷| 亚洲这里只有精品| 五月综合丁香婷婷| 九九在线视频| 五月婷婷黄色网址| 国产免费av在线| 久久人人超| 五月色综合| 亚洲俩性性爱图片久久第六页| 中文不卡一二三区| 日日操夜夜爽| 婷婷五月天成人| 五月婷婷六月丁香| 在线91日韩| 色优久久| se99视频| 丁香五月色| 大香久久综合网| 五月婷久久草| 91视屏在线观看com.wwwvv| 色月丁| 操逼三区| 99热这里精| 婷婷五月天狠狠| 久热 91| 99免费在线视频| 色综合99无码 | 丁香五月婷婷五月天在线| 深爱开心五月天| 99热这里只有精品首页| 五月丁香影院| 日本97在线| 五月丁香六月婷婷综合在线| 狠狠色综合精品视频在线| 日韩AAAAA| 婷婷久久色| 色综久久久| 99久在线观看| 久久视频这里99| 无码人妻激情| 精品自拍99| 久久综合五月天| 六月丁香婷婷色69| 五月天激情久久| 国产69久久久欧美黑人A片| 影音先锋91男人资源在线播放| 噜噜色天天开心| www一区二区三区| 五月六月婷婷激情网| 五月天在线视频尤物视频在线看| 草草视频91| 第四色色六月色综合| 久久这里只有精彩| 黄网在线观看免费| 影音先锋一区二区资源站| 九色91视频| 久99久热| 97碰碰在线观看视频| 丁香六月婷婷色XXXX| 亚洲天堂久久| 99ri国产在线| 久久久婷婷五月亚洲97号色| 99网| 丁香五月婷婷少妇| 激情五月婷婷老师| 天天色2017| 色婷婷视频| 丁香五月成人社区| 久久久久亚洲AV成人无码电影| 久久五月综合| 婷婷丁香色女人| oVV4WIB3vFi8D| 人人添人人| 另类图片天天影视在线观看| 91色婷婷综合久久中文字幕二区| 五月天操逼网| 4399在线日本A片| 日本色爽| 九九人人自拍| www.婷婷六月天| 色五月婷婷伊人| 99思思| 超级碰碰碰久久网站视频| 五月丁香综合啪啪対白| 色欲色欲久久宗合网| 第六色在线| 欧美激情性做爰免费视频| 日本色噜| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 色哟哟精品| 天天操中文字幕| 激情AV在线| 91综合国免费久入| 亚洲色9| 色99色| 伊人五月天日日夜夜久久久天天| 亚洲视频一区| 九九色视频| 亚洲婷婷91丁香| 任你操精品免费| 久9久成人精品视频| 人妻aV在线| 婷婷五月丁香六月| 人人草成人视频| 性爱综合网| 爱草视频在线观看| 波多野结衣成人作品在线| 五月天激情小说欧美激情| 91性人人| 丁香五月天啪啪| www.91.com处女在线直播| 国产婷婷色综合AV蜜臀AV| 激情婷婷另类| 9伊人网| 亚洲在线操| 婷婷久久久| 日本狠狠干| 思思精品久久艹 | 五月天另类图片区99| 99热这里都是精品| 久久小视频免费| 人妻激情久久| 色五月激情| 丁香亭亭久久| 热婷婷av| 狠狠狠狠狠干| 99热无码| 婷婷五月天堂网| 久久综合婷婷激情| 久久久激情视频| 久久久久久草黄色片AV在线观看| 99在线免费视频播放| 91综合色| 丁香五月婷婷激情123| 91九色无码内射| 婷婷五月综合在线| 99色在线观看视频| 99热日本| 久99久视频精选| 婷婷五月天激情文学| 另类小说婷婷色| 色色色在线观看| 色婷婷丁香五月| 国产激情婷婷| 久久五月激情网| www.99精品视频| 狠狠爱综合网| 五月丁香啪啪啪| 妻久久久久| 亚洲av成人电影在线观看| 日日操夜夜爽| 亚洲色热| 亚洲99在线视频| AV五月丁香| 超碰色碰碰| 久久九九综合| 五月天婷婷久久| 91九色PORNY肉丝在线| 手机旧版看人妻1025| 五月婷婷六月爱| 综合久久高清| 久色大香蕉| 欧美色频| 综合色五月| 亚洲久热无码| 久久99热这里| 色人久久| 美欧日韩国产成人在战| 午夜福利成人AV91| 久久婷婷五月天大香蕉| 五月丁香六月激情综合| 黄网在线播放| 五月天婷婷AV| 婷婷久久色| 丁香五月深爱五月婷婷| 精品五月丁香| 97色婷婷成人综合在线观看| 成人免费高清在线播放| 碰人人97| 久久3级片| 丁香五月精品| 五月天开心婷婷久久| 婷婷午夜精品久久久| 伊人影院久久网| 99ER热精品视频| 婷婷五月天综合在线| 99热1| 婷婷伊人网| 丁香五月激情澎湃一区| 五月婷综合性中心| 激情五月天在线| 超碰99在线| 色五月婷婷影院| bukadeavzaixian| 九九九干精品| 超碰人人摸AV| 婷婷综合玖玖五月| 五月刺激丁香月综合| 免费无码毛片一区二区A片| 色色色综合网| 99热精品在线| 五月婷丁香| 伦99热| jiujiu无码五区| 婷婷五月亚洲激情| 【乱子伦】黄色| 成人五月天在线观看| 99久久9| 丁香婷婷久久| 婷婷五月成人有| 美女va| www.99热国产| 亚洲乱码成人| 婷婷五月丁香综合人妻| 日日夜夜狠狠操| 99热a片免| 欧美色婷婷| 91日日日| 高清无码视频网址| 丁香婷婷综合激情五月色| 欧美大片免费播放器| 中文字幕日产A片在线看| 专区无日本视频高清8| 疯狂做受XXXX高潮A片| 怡红院一二三| 91久久电影| 九九热99免费视频| 99免费在线| 成人日韩欧美| 999热视频精品99免费在线| 男人的天堂99| 美欧日韩国产成人在战| 欧美成性色| hd五月婷婷在线| 五月婷婷自拍视频| 久久色五月天| 丁香五月天堂网| 91人人人人人| www.com色播五月天| 五月丁香六月婷婷啪啪| 日韩成人五月天| 久热这里只有精品在线| 亚洲AV网站在线观看| 在线只有精品| 五月婷护士| 亚洲免费观看高清完整版AV线| 色玖玖| 婷婷丁香婷婷97| 天天干,天天操,天天射| 五月丁香婷婷无码中文| 久 久9 9 热 视 频| 成人五月天丁香婷| 国产美女无遮挡裸体毛片A片| 婷婷情色五月| 激情婷婷丁香| 婷婷伊人綜合中文| 久久人妻久久久久| 日本五月婷婷| 久热超碰| 九九精品热播| 婷婷精品在线| 91久久1118| 亚洲成人AV电影在线| 狠狠色婷婷7777久综合| 婷婷五月激情基地| 天天操婷婷| 免看黄大片AA | 一起草无码| 三级成人网站| 丁香六月婷婷综合| 亚洲av网站在线观看| 五月天成人综合| 日日噜噜久久婷婷五月天| 九九色色| 日本美女五月天| 少妇AB又爽又紧无码网站| 日亚二欧美| 99热99免费| 亚洲另类婷婷综合| 色约约视频一区二区三区四区五区 | 我爱va亚洲va52| 天天操无码| 综合网精品99| 99这里有精品免费| 九九re精品视频在线观看| 激情九月婷婷九月| 亚洲精品va| 99在线免费观看| 91精品激情9| 91精品91久久久中77777| 婷婷婷婷色| BBWCUCKOLD精品熟妇| 99热在线精品观看| 天天插综合网| 日日操夜夜操中国无码| 日本成人噜噜噜噜噜| 激情五月综合网| 超碰97久久| 五月婷网站| 欧美性猛交 XXXX 乱大交| 亚洲无码播放| 九月婷婷激情| 色欲丁香| 五月丁香久久综合色| 5月丁香六月婷婷| 天天日夜夜| 日本综合久久| 97人人干人人操| 99精品女人天堂| 亚洲五月天婷婷在线| 免费视频WWW在线观看网站| 思思99热这里只有精品| 大香蕉久艹| 久久Xx| 日韩啊啊啊| 无码一区二区三区四区五区91c| 午夜九九电影| 欧美三级A做爰在线观看| 九九Av| 婷婷精品视频| 91精品久久久久久| 日韩啪啪网| 99热在线精品播放| 91爱操| 黄色五月婷婷| 99精品热| av 一区三区四区| 青青草五月天| 五月激情五月丁香| CHINESE熟女老女人HD视频| 色婷婷内射| 99色热| 婷婷六月丁香久| 国色天香成人网| 呦呦v线| 秋霞少妇AV网站| 99精品视频免费观看,| 字幕网AV中文字幕| 丁香五月乱中文字幕| 5Www色5夜| 激情五月天色网站| 亚洲天天| 激情婷婷亚洲五月| 影音 五月 婷婷 久久| 丁香六月无码| 秋霞丝袜啪啪啪| 久久99精品久久久久久噜噜| 九九aV| 色五月亚洲| 婷婷五月情色| 无码碰碰| 天天干天天爽| 婷婷中文字幕| 国产肥白大熟妇BBBB视频| 欧美丁香五月天| 任你搞在线观看视频| 手机旧版看人妻1025| 色色日韩网| 国产午夜成人AV在线播放| 五六月丁香激情视频| 91在线看片| 色噜噜狠狠色综合网| 依人大香蕉| 丁香五月婷婷色偷偷| 999精品久久久久久久| 九月婷婷激情| 第2色五月婷| 99在线视频观看| 婷婷综合视频| 五月色亭丁香| 久久日曰| 99色在线视频| 婷婷 月 丁香| 99ri在线| 色婷婷狠狠久久综合五月| 看全色黄大色大片| 五月视频日本免费观看| 人操人人| 激情小说五月天| WWW五月| 丁香五月激情宗合| 五月丁香色色色| 99精品久久久久久久婷婷| 激情黄色五月天| 天天综合久久| 精品国产一区二区三区四区阿崩| 激情丁香五月| 丁香五月亚洲无码| 久久久99婷婷久久久久久| 成人免费120分钟啪啪| 精品久久99| 六月婷综合| 九九综合精品| 99re思思热久久| 五月天国产成人| 丁香五月97视频| www.狠狠| 婷婷五月天Av| 亚洲婷婷激情五月天| 色优久久| 天堂网色色| 成人无码精品1区2区3区免费看 | 思思re99视频在线观看| 色欲色香伊人| 狠狠五月丁香色婷| 五月丁香六月婷婷啪啪| 久久婷鲁| 办公室少妇激情呻吟A片在线观看| 丁香六月婷婷久久综合| 无码婷婷五月天| 91超级碰碰碰| 97干婷婷| 色婷婷av综合网| 99国产精品久久久久久久久久久| 97影院一级片| 五月天婷婷综合免费| 六月米奇色综合| 午夜大香蕉| 欧美精产国品一二三区| 激情网五月婷婷| 精品视频99看在线视频| 97碰啪啪| 91九色精品| 色综合久久88色综合天天| 极品人妻VIDEOSSS人妻| AV九九| 五月天婷婷操逼视频| 色吧五月婷婷| 国色天香伊人狠狠色| 十月丁香婷婷| 性色欲情 网站| 亚洲五月天婷婷| 4399高清无码视频| 五月婷婷国产| YW无码| 热日韩欧美| 欧美情色一区| 99ree6| 免费看欧美成人A片无码| 色五月欧美| 99熟女| 亚洲超碰在线| www色色色com| 日本三级大片| wwwss在线观看| 99热日本| 色五月激情五月天| 丁香五月成人社区| 婷婷色五月天在线观看| 国产无套精品一区二区| 伊人五月天在线| 26UUU欧美| 五月天激情国产综合婷婷| 狠狠爱综合网| 亚洲激情五月| 99色在线视频| 国产毛片精品一区二区色欲黄A片| 91中文在线| 国产精品人成A片一区二区| 性色99| 深爱激情网五月天| 噜噜色婷婷| 思思久久99| 天天色粽合合合合合合合| 激情人妻综合| 丁香六月婷婷开心| 丁香五月天色婷婷| 中文人妻AV久久人妻18| 男人操女人高潮91视频| 以及AA大片看看| 人人操大| 色狠狠色综合久久久绯色AⅤ影视| 丁香色综合| 九九这里只有精品在线视频| 五月天六月天| 风流少妇A片一区二区蜜桃| 爱的综合网| 亚洲五月天婷婷综合| 夜夜操天天爽| 99综合| 国产成人综合在线| 五月天激情婷婷| 亚洲亚洲人成综合网络| 五月婷婷综合在线视频| 久99久99精品免| 色婷婷亚洲婷婷| 欧美成人热| 久久久精品人妻录| 玖玖婷婷色五月| 五月丁香婷婷六月| 亚洲春色奇米影视| 综合超碰熟| 丁香五月天激情| hd五月婷婷在线| 色99网| www.99视频| 亚洲乱码日产精品BD| 99精品网址| 久热九九| 极品五月天| 色色综合激情| 国自产拍偷拍精品啪啪一区二区| 九月色婷婷婷| 色五月综合激情| 婷婷开心综合人妻小说网址| 婷婷五月影院| 天天插天天干| 日韩久综合| 五月婷婷五月天激情视频| 久久99性爱视频| 亚洲中文字幕网| 九色综合网| 五月丁香无码| 中出内射的人妻视频| 狠狠爱婷婷| 人妻熟女一区二区AV| 特级操b片| 五月天婷婷久色| 黄网在线观看免费| 激情都市另类| 久操婷婷| 人人干人人操人人摸| 久久婷婷五月综合激情国产| 婷婷五月天伊人网| 婷婷五月色| 亭亭五月基地在线| 99热这里只有精品一| 色欲天天综合| 97操碰日本女人| 天天玩天天摸| 欧美性爱五月天| 97碰碰碰免费公开在线视频| 久热AA| 999热成人在线综合网| 99综合视频| 爱狠射| 2020夜夜操天天爽| 日本色道视频网站| 久久久九九九 99| 婷婷五月欧美综合| 午夜天堂啪啪| 亚洲精品网址| 国产精品激情五月天色婷婷| 久久久97| 亚洲美女高潮久久久久久69| 五月天综合在线观看| 超pen个人视频97| 亚洲99综合| 开心五月婷婷婷美女| 9久热精品在线视频| 久久久这里都是精品| 丁香五月av| 五月色亭丁香| 久久99久久99精品免视看婷婷| 九九色精品| 99色| 欧美成人性爱网| 综合福利网| 色9999综合久久| 五月丁香亭亭成人电影| 亚洲五月花| 久久五月天视频| 五月天综合视频网| 国产97在线日韩亚洲女人被黑人巨大| 青青草a在线| 99热9| 人人操插| 99热综合在线| 日韩欧美一道四区中文字幕| 亚洲日日日| 婷色综合| 啪啪亚洲综合| 婷婷丁香六月天激情四射网| 激情婷婷六月| 色五月综合激情网| 另类小说五月天综合网| 风流少妇A片一区二区蜜桃| 综合五月草 | 九九爱精品网站| 日日激情网| 婷婷伊人五月天| 噜噜噜噜在线| 思思久久久婷婷| 色天天综合成人网| 潘金莲AAAAAAAAAA| 六月丁香激情综合| 大香蕉婷婷婷| 久久最新色| 激情九九六月激情免费视频| 色五月天丁香婷婷色| 韩国激情五月天综合网| 久久综合五月| 日韩在线99| 五月婷婷狠狠干| 国产激情综合五月久久| 天天爽在线视频| 99热| 丁香5月综合啪啪| 国产精产国品一二三在观看| 精品九九视频| 丁香婷婷六月| 精品人妻久久久久久| 91人碰| 五月婷网| 人妻性爱av网站| 荡乳尤物3HP1V5| 色情免费视频播放| 色开心五月婷婷丁香HD| 九九无码| 伊人干综合| 操人91| 天天干天天 亚洲| 九九久久色| 99综合网| 亚洲久热| 99年操人人爽| www.henhengan| 婷婷丁香花五月天| 色情五月丁香| site:feetmall.com| 久久婷婷综合拍| 91精品久久久久久| 五月天六月天| 欧美婷婷色五月网| 五月综合激情| 精品无码色| 开心婷婷五月综合| xx久久| 成人超碰AV| 日韩五月婷婷久久| 久热黄色| 色欲丁香久久| 91精品综合久久久五月天| 色情综合| 99精品爱| 91精品综合久久婷婷九色| 五月激情综合网| 国产精品久久7777777精品无码| 182TV大香蕉| 能看的AV| 99视频只有精品| 日日天天天| 色婷婷成人久久| 五月婷婷中文字幕| 色色九区| 激情丁香五月婷婷| 色婷婷丁香五月在线观看| 99熟女| 67久久| 久久99精品久久只有精品| 99惹精品视频| 色99网| 亚洲传媒在线观看| 中文字幕成人| 蜜臀嫩草| 影音先锋按摩| 婷婷丁香黄色| 婷婷五月天激情网| 五月天播播| 天天拍天天做视频| 九九人人精品| 婷婷香蕉精品| 99热精品在线观看| 五月丁香六月婷婷综合网站| 丁香五月网络网络| 日本3级片一区2区| 乱乱av| 激情五月天婷婷| 噜噜色噜噜网| 成人小说 五月天 婷婷| 久久9热| 97luluse| 99视频精品| 99热网址| 色婷婷激情五月天| 亚洲精品欧洲精品| 色五月婷婷在线| 婷婷情色五月| 国产又粗又大又爽又黄| av久热| 五月天婷婷影院影院观看| 婷婷激情五月天在线视频| 五月激情网站| 99色在线免费观看视频| 99re热视频这里只精品| 啪啪啪大香蕉| 人人干女人| 综合久久人妻| 婷婷五月免费在线| 精品国产一区二区三区四区阿崩| 亚洲综合九九| 亚洲成人网站在线播放| 色婷婷色婷婷五月| 99精彩视频在线观看| 开心婷婷中文字慕| 色月九九| 玖玖婷婷精品| 六月婷婷AV| 四色五月婷婷| 懂色av粉嫩av蜜臀av| av大香蕉| 丁香五月婷婷五月| www.激情| 婷婷色情网| 五月婷婷草| 性色五月天| 激情欧美五月丁香| 天天色综合网1| 婷婷激情五月综合丁| 伊人丁香五月| 久久丁香五月婷婷激情综合网| 婷婷丁香在线| 日韩成人AV在线| 久久婷婷五月天蜜桃| 婷婷九月狠狠色| 狠狠干在线| 97自拍99| 日本丁香久在线| 停停五月色宗合| 99热全是精品| 玖玖婷婷婷丁香五月| 国产免费一区二区三州老师F1F1……| 激情国产五月| www.韩日视频| 九九在线91| 99热天堂| 色吧五月婷婷| 色碰碰视频| 久久丁香五月天| 九九热在线99| 久久久久9| 99热官网| 国产毛片精品一区二区色欲黄A片 99国产在线精品视频 | 婷婷99狠狠| 九九精品亚洲| 丁香婷婷五月天激情四射| 婷婷五月天堂| 婷婷五月天综合在线| 天天日天天操心| 99爱视频| 五月丁香婷婷欧美色图视频五月丁香777电影 | 人妻第九页| 操日本99| 一级七香蕉| 久久精品综合色| 五月婷婷六月丁香综合| 日本综合久| 激情综合网,婷婷| 大狠狠在线| 六月丁香婷婷六月激情综合| 99A片| 色玖玖爱| 九九综合| 五月婷婷六月激情| 99啪视频在线观看| 亚洲色图45p| 免费AAAAA网| 夜夜夜夜操| 色五XX| 狠狠爱五月婷婷| 九九精品热| 欧美性猛交99久久久久99按摩| 久操香蕉| 久久超视频| 99视频色在线观看| 色婷五月天网站| 天天综合网91| 丁香五月婷婷啪| 亚洲男人的天堂婷婷色五月| www夜夜操| 久操操| 国产黄色在线观看| 五月婷婷日本| 五月婷婷在线视频免费观看| 五月激情基地| 狠狠99| 国产人妻人伦精品一区二区| 久久人视频| 欧美在线视频99| 激情五月天婷婷视频| 色婷婷色99国产综合精品| 欧美婷婷综合| 九月丁香婷婷网| 免费亚洲婷婷中文字幕| 天天操夜夜夜拍拍拍| 五月丁香综合网| 五月婷婷色| 99色视| 婷婷久久五月| 26uuu在线观看| 五月色丁香| 欧美六月婷婷| 激情综合女人网五月播播| 婷婷五月天在线观看免费| 亚洲成人免费电影| 亚州男人天堂婷婷五月| 激情床戏| 操逼棍操逼| 天天天干夜夜夜操| 综合久久8| 美女亚洲五月丁香| 噜噜视频| 国产精品久久久久久久久久| 激情五月天的婷婷| 五月婷婷之激情五月| 九九操操| 偷拍99在线视频观看| 99精品国产在热久久| 亚洲综合婷婷五月| A A色色| www.日日夜夜.com| 99玖玖精品| VA国产在线综合网站| 99狠狠操一| 久久精品熟女亚洲AV麻豆| 欧美日韩999| 久久久天天啊| 六月丁花香啪啪激情欧美| 亚洲九九夜夜| 婷婷成人五月天成人文学| 婷婷不干网| 丁香五月综合高清在线| 五月婷婷啪啪综合网| 丁香伍月婷电影全集| 99热综合在线| www.婷婷,com| 婷婷色综合中心站| 六月婷五月丁香| 五月婷色| 久久婷婷五月综合激情国产| 国产精品久久7777777精品无码| 看片视频在线免费日产在线看| 加勒比日本一区二区三区| 婷激情五月| EEUSS鲁片一区二区三区| 色~性~乱~伦~噜| 开心五月天激情网| 天天久久九九| 久久婷婷五月天激情| 五月综合色| 91超级碰碰| 99激情网| 色蜜婷婷| 色婷婷狠狠| 日本97在线观看| 亚洲、热| 亚洲精品久久久久久久久久飞鱼| 色一区高清| 操操碰| 超碰在线免费| 色五月欧美| 狠狠爱婷婷色| 五月丁香六月情| 91碰操| 伊人AV五月婷| 91午夜婷婷狠狠久久综合9色| 丁香婷婷久久激情| www.激情| 丁香六月天婷婷在线| 五月婷婷无码| 99免费综合网| 日本一级一级一级一级| 日韩欧美一级大黄网站| 丁香婷婷五月天激情四射| 毛片新网地| 99免费热视频在线| 伊人五月婷婷| 亚洲av网站| 337p大胆噜噜噜噜噜91Av| 97热视频| 日本欧美在线| 五月丁香六月欧美综合网站| 色色色综合网| 人妻操在线看| 国产69久久久欧美黑人A片| 开心婷婷五月天电影院| 亚洲国产精品二二三三区| 五月综亚洲| 色婷婷六月| 天天摸人人摸| 丁香花操逼| 任你搞网站| 久久99婷婷| www.夜夜操.com| 婷婷综合网在线| www婷婷色| 六月综合在线| 色五月大| 91精品久久久久久| 色八月婷婷| 熟女少妇内射日韩亚洲| 五月婷婷手机在线| 欧美婷婷综合| 久re在线| 免费AAAAA网| 婷婷丁香六月天| 日 日干 日日做| 丁香五月亚洲综合丝袜| 丁香五月婷婷六月| 成人中文字幕在线| 91久久99久久91熟女精品| 丁香五月婷婷久久久| 国产黄色在线观看| 五月婷视屏在线观看| 久久久久久99精品无码| www.99热| 伊人国产婷婷五月天| 久久久久视剧HD| 丁香九月综合| 丁香五月天色综合| 婷婷五月天桃花网| 天天色噜| 99er日韩| 色婷婷呢狠禁久禁| 99re6久热只有精品6在线直播| 欧洲不卡视频| 日本欧美成人片AAAA| 欧美va在线| 欧美在线干| 日韩AV无码影片| 九九精品免费| 思思99热热热99| 亚洲精品第一国产综合亚AV| 久久性爱视频| 六月婷婷俺也去| 超碰免费电影| 色综合久久久久| 99热这里只有精品33| 男女99免费视频| www.久久五月天.com| 欧美啪啪网| 97人人干人人操| 99成人免费热视频| 五夜婷婷| 五月婷视频| 97超碰人人操| 日本激情五月| 99九九在线| 视频一区二区在线| 五月婷婷色色| 亚洲色色香蕉|