99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜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
返回資訊列表
日本熟妇乱妇熟色A片蜜桃| 亚洲日韩国产黑丝黑丝AVAV一区二区三区| 丁香五月人妻| 激情婷婷综合五月少妇| 色之综合网| 啪啪日本欧美| 久碰视频| 九九热99热| 天天色天天爱天天爽| 91打屁股视频网站| 99九九视屏| 激情综合女人网五月播播| 国产露脸150部国语对白| 天天操狠狠操| 五月丁香婷婷伊人| 日日干夜夜撸夜夜骑| 丝袜激情网| 国产又爽又猛又粗的视频A片| 青青草五月天| 丁香婷婷色情社区成人小说| 伊人色综在线| 五月婷婷自拍视频| 婷婷综合爱| 狠狠操狠狠插| 久碰视频| 亚洲色频| 亚洲丁香花色| 狠狠综合网| 婷婷婷久久久| 91成人电影| 五月开心深深爱激情综合| 久热这里只有精品性色AV| 九月综合| www.婷婷五月| Xx色综合| 天天插天天很| 战争与艾拉电影免费观看| 立川无码av| WWW99热| 久在线综合69| 亚洲免费视频网站| 第四色大香蕉| www,久久久| 99九精品| 一逼色综合| 在线不卡中文字幕| 婷婷天堂综合| 日韩成人网站精品久久大全| 五月婷婷开心色伊人| 婷婷99狠狠| 丁香五月久久| 思思久久精品视频| 午夜婷婷五月天| 人妻VideOssS人妻| 五月综合激情网| 人妻无码精品一区| 五月婷婷三级| 日韩免费视频| 五月丁香影院| 99re6久热只有精品6在线直播| 99热爱爱干干日| 色九月婷婷综合| 婷婷丁香激情综合色情| 激情五月婷婷综合| 操操熟女| 丁香五月网站| 激情综合五月色丁香婷婷| 这里只有精品视频在线看| 天天天摸夜夜夜玩| 成人在线网| 第四色五月天| 东京热人妻一区二区三区在线| 成人午夜在线视频| 婷婷五月天av网| 激情文学天天| 丁香五月婷婷大香蕉| 99热主页日本| 草草色情综合网| 婷婷五月天国产性感美女演员久久久久| 色婷网站| 综合亚洲六月婷婷在线| 另类小说激情五月天| 操骚货在线| 日日噜狠狠| 色婷婷丁香五月| 久久大香蕉丁香| 91九色 熟| 一起草aV| 狠狠ri| 天天日日| 久久久人妻久久久| 五月天婷婷激情| 五月天成人小说| 777精品久无码人妻蜜桃| 国产精品24r| 日韩不卡DvD| 六月丁香成人| 无码人妻电影| 大香久久伊人网| 超碰人人射| 成年人99热| 另类图片激情五月| 五月天大香焦| 婷婷瑟五月天久久综合| 99A片| 伊人九热| 免费精品66| 婷婷五月婷婷| 黄色成人AV在线| 97碰在线视频| 欧美在线操| 五月综合缴情网| 99九九综合久久九九| AV九九| 第1影院之五月婷婷| 久久九九99| 欧美激情综合色丁香婷婷五月天| 日欧一片内射VA在线影院| 婷婷欧美激情| 五月天精品视频| 天天天天干| www一起操在线观看| 99er免费在线观看| 久久久久9999| 五月伊人综合| 色色com| 综合色网站| 深爱激情久久| 99在线精品免费视频| 99热新网址| 五月天激情网开心网| AV九九| 九色婷婷| 五月天激情国产综合婷婷| 天天综合网色欲香| 深爱激情丁香| 99热只有精品在线| 亚洲午夜一区二区| 中美月韩免费A片| 九九婷婷网五月天| 色爽九九| 夜夜骑夜夜撸| 青草青草视频2免费观看| 最新久久网址| 大香蕉综合网| 日韩免费乱轮网站| 99噜噜噜在线播放| 婷婷五月丁香六月天亚洲综合| 另类少妇人与禽zOZZ0性伦| 九九色欲网| 激情网五月天| 婷婷久久综合久| 亚洲AV网址| 九九99男女视频在线观看| 蜜臀嫩草| 亚洲精品中文字幕成人片| 深爱激情网综合| 久婷婷久草| 99热的无码| 久久九网| 日本九九视频| 琪琪理论片| 久久久久久欧美精品se一二三四| 亚洲 无码 中文字幕 中出| 狠狠操天天干| 黄色激情五月天| 国产综合丁香五月天| 日本在线va| 91色在线 | 日韩| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 99久久综合网| 激情5月婷婷| 天天爽人人爽| 欧美天天搞| 影视av久久久噜噜噜噜噜三级| 伊人碰碰婷婷| 99国产精品久久久久久久久久久| 婷婷激情社区| 天天日天天添| 97婷婷五月| 热99这就是精品视频| 九色地址91视频| 91AV婷婷| 最新亚洲色色网| 中文超碰视在线| 人妻少妇色综合| 99热播放| av在线免费播放观看| 天天搞天天色综合| 超碰国产在线| www狠狠爱com| 五月天激情综合网| 五月婷婷综合丁香视频| 激情99热| 六月丁香色色| 五月婷婷啪啪啪啪| 天天狠狠夜夜狠狠2023| 天天做天天爱天天爽综合网| 日韩三级片一区二区| 激情综合色五月丁香| www婷婷| 日日爱678| 人人肏逼视频在线一区二区| 五月婷婷六月激情| 国産精品| 999热这里只有精品| 男女99免费视频| 五月丁香婷婷啪啪综合网| 色九四色| .精品久久久麻豆国产精品| 99乱视频| 亚洲性色XXXXX| 亚洲啪啪网| 99激情视频| 99热这里只有精品8| 欧美va视频不用播放器的va视频网| 97婷婷五月| 久久婷婷综合五月天| 亚洲激情97五月天| 人人爽人人爽人人爽人人爽| 这里只有精品在线视频精品| 99热这里| 亚洲在线资源| 99九九视频| 激情人妻蜜夜系列区| 丁香婷婷性爱| 超级碰碰91| 中文网av| 婷婷五月天性| 五月婷六月丁香| 久九色| 久久久人人操A V| 欧美电影在线播放| 5月丁香综合网| 久婷婷五月天影院| 狠狠色五月| 五月天丁香久久综合| 久久激情五月婷婷| 亚洲精品国产成人AV在线| 26uuu欧美宗合| 五月丁香综合激情在线观看| 天天肏屄夜夜爽| 亚洲啪啪网| 99热人人操人人操| 91丨九色丨老农村| 98色花堂98t.R| 9999综合99综合人| 欧美激情伊人| A1片久久久| 9久热在线精品| 9l视频自拍九色9l黑人| 超碰99热在线观看| 九九色天堂| 麻豆123区| 丁香五月玖玖| 色月丁| 婷婷久久婷婷色五月| 五月激情综合深爱| 色婷婷社区| 丁香五月婷婷激情蜜桃| 五月天综合在线| 婷婷久久色| 婷婷五月天亚洲| 丁香五月婷综合网| 日韩综合天堂| 影音先锋女人AA鲁色资源| 五月丁香影视| 五月天社区婷婷| 亚洲狠9| 成人五月天。COM| 91呦呦呦| 四虎成人精品永久免费AV九九| 色5月婷婷色| 久久总和99| 91黄址| 狠狠色丁香五月婷巨| www.激情五月天.com| 色五月丁香总合网| 狠狠五月综合在线 | 亚洲色无码| 亚洲欧美999| 成人网址在线观看| 人人摸人人干| 久久婷婷综合色丁香| 婷婷成人AV| 九九综合伊人| 久久久区区一久久久久久| 丁香五月天婷婷大香蕉| 日日噜噜夜夜狠狠久久丁香六月| 99热欧| www,五月天激情| 激情五月天激情五月天| 伊人色综合网| 国产色99| 五月婷高清视频| 热成人网| 色五月激情网| 丁香五月激情综合婷综| 婷婷日| 日本va欧美va欧美va| 99视频网址| 99精彩视频| 激情图片亚洲| 性一交一乱一交A片久久四色| 久热这里只有精品在线观看| 性色五月天| 热99在线| 亚洲AV无码成人精品区电影网| 色婷婷小说| 99re这里只有精品视频了| 成人一级片| 99国产精品久久久久久久久久久 | 深爱网深爱综合网| 91日本在线| 久久精品99国产精品日本| 狠狠色噜噜狠狠亚洲A∨| 天堂A∨在线| 激情五月婷婷综合色播小说| 丁香五月电影| 国产 亚洲 在线| 色欲五月丁香| 久久草人妻| 五月人妻婷婷视频| 碰99在线| 天天撸夜夜爽| 五月花婷婷| 久久色五月天| 最新丁香六月婷婷| 99久久婷婷国产综合精品电影| 欧美婷婷丁香五月社区| 五月天伊人| 丁香五月天堂婷婷| 伦99热| 婷婷久久五月| 色婷婷久久综合久色综| 五月激情六月丁香| 婷婷影院欧美| 久久久精品色| 五月色亭丁香| 播五月丁香六月| 亚洲成人在线播放| 99热这里只有精品国产免费| 婷婷色播婷婷| 久久综合干| 精品久久这里热66| www.久久爱.c n| 丁香色综合| 婷婷五月天激情网| 五月 丁香 欧美| 色999五月色| 五月天婷婷av| 丁香丁香激情网| www久久久久久久97| 超碰99热在线观看| 亚洲男女激情| 精品99在线看| 乱码操操| 爱性综合网| 九九99精品| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 色五月婷婷丁香五月| 五月天伊人| 丁香五月六月激情久久| 五月丁香六月激情综合| 97欧美在线| 深爱五月天 开心网| 热99在线精品| 久9热在线免费观看| 六月婷婷深深爱| 色综合色色| 国外亚洲成AV人片在线观看| 99人碰碰碰| 另类激情网| 日本天天色| 丁香五月婷婷激情四射| 五月婷婷综合久久| 久久精品凹凸分类| 五月婷婷六月丁香激情综合网| 色婷婷88| 久久精品夜色噜噜亚洲a∨| 五月激情综合婷婷| 五月亭亭开心网| 97久久五月丁香婷婷| 五月丁花色综合网| 99在线精品免费视频| 色综合区| 色色婷婷五月天| 五月天色社区| 五月激情久久| 国产成人+亚洲+欧洲| 丁香五月社区| 色婷婷4| 日本一级黄色电影| 国产操碰| 色婷婷成人| 99热在线资源| 丁香婷婷色色| 99视频网址| 久久视频这里有精品99| 97成人在线视频| 婷婷六月久久| 影音先锋 萱萱| 激情的五月| 激情婷婷五月天| 亚洲欧洲另类| 日韩啪啪视频| 色五月久久成人婷婷| 五月天婷婷无码| 996热re视频精品视频| 色爱综合网| 停停综合色色| 一区视频网站| 丁香五月性| 337p大胆噜噜噜噜噜91Av| 色琪琪一综合久久激情五月视频| 婷婷五月丁香久久| 欧美激情丁香五月| 9999久久久久| 人妻肉射免费观看| 潮汕成人AV片在线| 亚洲婷婷久久综合| 涩五月婷婷| 99视频在线| 久久精品爱爱| 人妻丰满精品一区二区A片| 99精品这里只有免费视频| 婷婷综合激情| 99热最新网址| 91pornav在线| 久操热| 在线理论片| 狠狠五月天婷婷| 双性美人被调教到喷水A片| 激情久久天天| 99热精品超碰| 91久久久久久| 五月婷婷色情| 五月丁香六月婷婷久久| 99精品在线| 五月丁香综合啪啪啪啪啪| 天天天天干| Jh7Uf088VHafNm| 97婷婷五月| 久热这里| 成年AAAA色情| 2015在线中文字幕| 丁香五月婷婷超碰在线| 五月天婷婷网站| 超碰成人在线免费观看| 婷婷五月天精品| 777.色色| 热久69| 亚洲成人免费电影| 六月五月婷婷| 9l视频自拍九色9l视频自拍九色9l社区 | AV成人在线播放| 深爱激情六月天| 天天干天天日天天插| 久综合九综合99| 五月婷婷激情日本| 婷婷黄色五月天在线视频| 91狼友视频在线观看| 影音先锋91资源站| 色五月天综合| 成人电影AV在线观看| 亚洲综合九九| 日日日日日| 国产VA播放| 色五月婷婷91在线| 99热精品在线播放| 五月天播播中文字幕| 九九热只有这里精品| 欧洲激情精品婷婷| 亚洲综合网激情五月天| 免费97碰碰| 99网| 婷婷的99视频网站| 人人人人人人人草| 精品久久婷婷五月天| 亚洲成人电影在线免费观看| 狠狠操狠狠插| www.婷婷六月天| 久久在线视频只有这里有精品| 狠狠色综合网站久久久久| 色五月天婷婷| 97精品自拍视频| 秋霞电影理论| 婷婷激情肏屄网| 伊人热婷婷| 夜精品无码A片一区二区蜜桃| 亚洲无码99| 天天摸夜夜爽天天做| 香蕉国产2013| 色播五月丁香综合| 欧美日韩成卜| www.zbzhongsen.com| 人人爱人人草| 日日操夜夜骑| 久久一品区| 激情网五月天| 五月香婷婷| 婷婷五月激情中文字幕| 亚洲人成人五月天| 久热最新视频| 色五月av伊人| 婷婷五月天播| 色色色激情| 天天综合网~91综合网| www.com在线操视频免费观看| 婷婷五月天av| 九九热精品视频| 天天色99| 亚洲一区二区无遮挡A片| 99热在线观看这里只有精品| 五月丁香在线国产 | 国产亚洲色婷婷99精品| 丝袜人妻| 婷婷九月激情| 亚洲成人av在线| 久久大香蕉伊人| 猫咪伊人AV| 性欧美大战久久久久久久83| 噜噜在线| 少妇高潮A片无套内谢麻豆传| 这里只有精品视频99| 色婷婷久久| 亚州色色色| 五月丁香婷爱在线| 婷婷瑟瑟五月天| www.激情五月天| 开心五月婷婷在线| 精品无码99| wwwC0maV五月花| 伊人干练久| 日韩AAA| 婷婷色五月天第7色| 丁香五月网络网络| 色婷婷婷综合五月天| 怡红院院在线导航网| 热久久99视频| 婷婷涩五月天综合| 婷婷六月久久综合导航| 狠狠搞狠狠操| 黄色三级日本| 天天干天天爽| 亚洲V国产V欧美V久久久久久| 99在线精品免费视频| 中文字幕欧美日韩VA免费视频| 国产国产乱老熟女视频网站97| 永久地址 色| 思思热国产在线| 婷婷丁香五月在线播放| 天天干,夜夜爽| 夜夜久久综合网| 深夜男女福利刺激影院一区| 亚洲色婷婷| 精品夜夜澡人妻无码AV| 99在线免费视频播放| 亚洲色图在线视频| 99自拍视频| va中文资源在线观看| 激情丁香五月激情婷婷| 激情五月婷婷开心网| 99操免费视频| 色色色99| 懂色av粉嫩AV蜜臀AV| 亚洲av网址| 女婷久久| 激情五月婷婷综合视频| 99色网站| 九九热免费视频| 五月停停大香蕉| 伊人热婷婷| 五月综合色| 色五月婷婷开心| 丁香六月情| 色色色色色色色色五月先| 97自拍视频在线| 激情玖玖综合网| 久久香蕉丁香| 婷婷激情蜜桃玖玖丁香| 99综合网| 六月婷婷国产| 色色色国产| 亚洲国产精品二二三三区| 欧美日本99| 婷婷色中文字幕| 天天操天天操天天操| 五月天亭亭俺也| 狠狠色成人影片| www.婷婷五月.com| 五月天婷婷综合久久| 五月丁香亭亭天天舔| 国产午夜精品一区二区| 欧美日本免费一道免费视频| 久9热视频在线观看| 99热日本| 色色操| 五月婷无码| 色情五月天视频网| 婷婷五月天在线视频网站| 五月婷婷综合网| 狠狠色狠狠爱| 色五月天网| 人人操日| 五月天丁香欧美激情| 69堂午夜视频最新地址| 久久婷婷内射| 精品自拍97| 开心五月激情| 色综合久久44| se色综合网| 久久九九99字幕| 五月丁香色色网| 久久精品日| 66久久视频在线| 色婷婷成人网| 国产精品视频网| 新激情五月开心五月婷婷五月丁香五月| 任你爽精品免费视频6| 日日操天堂| 色五月婷婷 成人| 日韩精品一品二区三区的使用体验| 爱爱网址9| 99久久久国产大片区| 五月婷婷九九热| 欧美日本不卡黄色片| 天天日综合网射| 欧美三级欧美一级| 99啪啪网| 国产精品VA在线| seuuu婷婷| 凹凸探花电影| 色综合五月| 日本久热| AV在线观看网站| WWW久| 狠狠色噜噜色狠狠狠综合久久成人波| 日日夜夜爽| 亚洲欧洲中文日韩久久AV乱码| 久操婷婷| 亚洲精品国产成人AV在线| 国产一区18| 色五月婷婷色五月婷婷色五月婷婷| 五月婷婷色欲| 热热久久久久久久久| 桃色五月天| 亚洲精品乱码久久久久久按摩观| 色五月婷婷久久| 99热亚洲| 天堂A∨在线| 26UUU欧美激情一区二区| 五月婷视频| 丁香视频| 99狠狠| 九色无码| 激情久久久久久| 任你日视频| AV在线中文| 亚洲av网站| 97人妻碰碰中文无码久热丝袜| 日本久久人人| 久久久网站| 另类小说五月天| 综合激情视频| 婷婷的五月天另类视频| 日韩精品AV一区二区三区| VA国产在线综合网站| 亚洲国产精品SUV| 天天综合色综合| 青青草原亚洲久| 五月丁香六月婷婷在线| 午夜丁香综合婷婷| 久久综合爱| 中文字幕在线免费看线人| 综合激情综合啪啪| 五月婷九月| 天天爱天天做天天操| 久久精品夜色噜噜亚洲a∨| 五月婷婷狠狠干| 色婷婷基地在线| 久久精品99国产精品日本| 婷婷激情五月天亚洲综合| 色综合网页| 少妇性按摩无码中文A片| 五月丁香婷婷综合久久| 丁香久久| 久色欧美| 99ri在线| 影音先锋91在线资源站| 噜噜视频| www。五月天激情| AA片在线观看视频在线播放| 日本色色色| 国产精品成人AV在线| 色五月婷婷久久| 久久亚洲婷婷| 91大神操美女| 99视频| 精品久久人妻| 久久婷婷丁香五月一二三| 五月天婷婷青青草| 久久综合影院| 五月婷婷天天色| av一区二区电影免费在线观看| 丁香婷婷五月色成人网站| 免费AV黄在线播放| 99久免费视频| 久久午夜理论| 久久新地此| 成人看片网站| 色情五月综合婷婷| 99热国产这里只有| 九九色区| 欧美性生交A片免费看| 天天艹夜夜艹| 免费精品66| 天天操五月天| 玩熟女五十AV一二三区| 激情综合五月天| 激情宗合网激情五月天| VA色婷婷| 丁香婷婷久久综合在线| 9l视频自拍9l九色成人| 激情六月婷婷| 狠狠狠狠狠草| VA婷婷| 婷婷九月丁香天堂丁香天堂| 图片区 小说区 区 亚洲五月| 97碰碰视频| 久久成人天| 99色天堂| 99热久97| 碰碰碰97国产| 丁香婷婷大香蕉| 99热资源在线| 婷婷五月天欧美图片在线播放电驴| 婷婷丁五月| 91视频综合网| 五月丁香婷婷伊人日韩| 丁香色色网| 原琪琪色影院| 99爱视频在线观看这里只有精品| 5月婷婷6月丁香aV| 丝袜大香蕉| 日韩一级网站| 99视频日韩| 777影视理论片大全在线观看| 色播六月| 五月天婷婷综合网| 99成人免费热视频| 俺去也在线官网| 琪琪理论片| 99综合久久| jiujiujiuwuyuetian| 超级碰碰碰久久网站| 99久久国产宗和精品1上映| 九九热最新视频| 色久女| 99热这里是精品| 人人操女人| WWW、日本色丁香、co m| 琪琪色网在线| 4399啪啪视频| 91.www综合| 色一情一乱一伦一区二区三区| 久久九九免费视频| 综合啪啪| 99久久99九九99九九九| 9热视频在线观看| 激情综合色婷婷啪啪六月天| 5五月综合网亚洲| 色色色色av色色色色| 99日韩网站| 色五月视频,小说| 开心激情久久久久久久| 伊人国产婷婷五月天| 五月丁香六月日逼| 日本无va视频| 能看的av片| 这里只有精品在线播放| 婷婷免费无视频| 99秘 在线| 五月婷婷婷自由综合| 99爱免费在线视频| 五月婷婷自拍视频| 拳交大逼| 九九热在线观看视频| 四月丁香五月婷婷久久| 色婷婷电影网| 五月丁香激情婷婷| 九九色综合九九色| 色激情五月天| 日韩黄在免| 欧美性爱专区| 91一道本| 第四色激情网| 亚洲视频在线观看99| 色综合五月在线| 麻豆五月丁香婷婷| 六月婷婷五月天| 26uuu丁香婷婷五月| 久久9精品| 综合五月婷婷| 激情五月天久久| 一级性爱大片| 激情性爱五月天| 丁香婷婷五月激情综合| 久热视频这里只有精品68| 99免费视频网| www.五月天色色.com| 久久人人妻| 97超碰免费超级在线观看| 97色综合视频| 91操片| 色五月无码| www色五月天| 亚洲婷婷五月| 五月天婷婷色色| 久久久aaa| 日本WWW九九九| 最新日本A片| 久久人人人人妻| 日本色爽| 99色天堂| 五月婷丁香久久综合| 婷婷久久亚洲| 亚洲国产成人裸舞| www.夜夜操| 天天日天天干天天操| 婷婷五月天 丁香五月天 裸体| 9久久久| 五月丁香怕啪啪| 亚洲五月天婷婷在线| 成人av在线电影| 欧美性色A片免费免费观看的| 亚洲婷婷综合视频| 五月天婷婷色| 99热这里只有精品最新| 91婷婷丁香| 1024国产在线| 超碰97人人操| 五月丁香青草综合啪啪| 97久久人人操| 婷婷九月久久| 99热婷婷| 激情五月丁香六月综合AVXXXX| 97精品综合| 九九中文色色| A一级操| 99热97| 亚洲亚洲人成综合网络| 五月天久久www| 婷婷五月久久| 国产午夜一区二区三区| 丁香五月婷婷高清| 六月婷婷无码| 中文字幕综合| 亚洲成人电影在线免费观看| 色色色777| 五月丁香色综合| 五月开心播播网| 久久五月视频| 99热97| www.wuyuetian啪啪| www.99视频| 五月丁香综合激情| 91干婷婷| 久久九九免费大视频| 亚洲成人网站在线播放| 激情玖玖综合网| 妻久久久久| 色五月婷婷色| 国产激情在线观看| 六月色丁香中文字幕| 五月丁香久久| 色五月综合激情| 欧美这里只有精品| 超碰免费人人肏| 噜噜噜噜噜日本视频| 激情五月天色网站| 5五月综合网亚洲| 这里只有九九精品| 成人国产欧美大片一区| 99热精品在线观看| 爽极品色| 久久婷综合网| 婷婷五月天在线一区| www,奇米影视| 成人欧美一区二区三区在线观看| 久久综合九九| 色六月婷婷| 天天色粽合合合合合合合| 久久婷鲁| 五月丁香六月婷婷亚洲视频| 国产看真人毛片爱做A片| 狠狠大香婷婷爱| 日韩欧美一级大黄网站| 婷婷五月电影| 日熟女| 色五月婷婷五月天激情综合| 久久六月天| 婷婷五月在线| 天天插天天操| 日韩有码一区| 天天插,天天射| 日韩人人操| 99热这里只有精品 搜| 免费观看全黄做爰的视频| 色婷婷五月天亚洲| 五月丁香六月综合激情| 久久伊人大香蕉| 色人久久| 婷婷五月激情的图片| 婷婷五月情| 色婷婷五月天中文字幕| 99热这里全都是精品| 久久五月丁香| 狠狠色噜噜狠狠狠888| 久热久色| 极品少妇高潮啪啪AV无码| 日本色婷婷五月天成人电影| 五月婷婷丁香| 五月 丁香 欧美| 97久久人人人干| 六月婷婷激情小说网| av在线免费播放观看| 婷婷.com| 91色干| 五月久久婷婷| 成人做爰A片免费看网站找不到了| wwwss在线观看| 国产精品久久久99视频| 亚洲第一综合| 狠狠色综合网站| 五月黄色婷婷| 九热免费视频| 亚洲一个色| .精品久久久麻豆国产精品| 99热777| 婷婷色一二三区波多野结衣| 九月综合| 99色这里| 深夜婷婷 丁香| 亚洲欧美国产高清vA在线播放| 久xxxx| 久久亚洲婷婷| 日本色婷婷五月天成人电影| 淫视馆av三区| 激情无码网| 亚洲国产精品成人免费一区久久久在线观看AAAA | 婷婷色五月在线视频| 91九色中文字幕女在线观看| 色婷婷五月综合| 5月婷婷6月丁香aV| 国产精品A片在线| 久久久久激情| 五月综合激情图片| 丁香五月很很肏| 色婷婷九月| 色五月天天| 国产黄色av| 能直接看的av网站| 欧美日本一区二区三区| 人人操人人爽成人AV| 激情综合网激情五月天| 丁香九月婷婷色| 色婷婷19| av中文网| 亚洲av网站在线观看| 精品无码色欲AV| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 五月婷婷草| 色久在| 九九综合图片网| 天天弄天天操| 可以看的AV网站| 日韩色色网| 996黄色片| 久久丁香五月| 五月婷婷无码| 99er这里只有精品| 激情九九九九| 五月丁香婷婷啪啪| 五月丁香色| 综合激情啪啪| 91亚洲天堂| 欧美成人AAA片一区国产精品| 丁香五月六月| 激情五月综合ì香亚洲| 丁香五月色五月| 操老逼综合网| 日本色色图| 久久激情五月天| 久久色频| 五月婷婷日本| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 伊人网碰碰| 综合激情五月丁香| 亚洲综合视频网| 五月丁香六月激情| 亚洲五月花| 噜一噜在线| 亚洲精品小视频| 亚洲激情综合| 五月狠狠| 色婷婷狠狠久久综合五月| 天天爽天天操| 91操在线视频| 夜夜夜夜夜操| 日韩按摩二区| 精品婷婷五| 黄色成人网站在线播放| 中文字幕久久婷九女同| 欧美性色A片免费免费观看的| 色色五月丁香婷婷| 天天摸天天舔天天天天爽| 99视频在线观看视频| 婷婷五月播| 亚洲婷婷久久综合| 五月停亭久久电影| 色色色色色色色色色影院| 国产色色视频| 色色免费网站| 激情五月天开心| 亚洲成人噜噜| 国际国外精品欧洲南美洲专区无码不卡| 久久黄A片| 欧美 日韩 成人在线| 丁香五月天激情四射网| 欧美一级毛卡片无码| 中文字幕日本最新乱码视频| 五月丁香综合| 色色网站在线| 在线视频你懂得| 九月综合| 98永久精品| 天天色视频| 99这里只有精品|v| 色婷婷六月丁香综合欲精品| 天天色天天色天天色天天色天天色| 激情综合网,五月| 深爱五月婷婷开心中文字幕| 色五月天.con| 五月丁香六月色婷婷综合五月天| 婷婷涩五月| 夜夜资源站| 五月玖玖| 色玖玖爱| 91Chinese在线| 超碰激情网| 五月色色网| 第四色激情网| 六月丁香花婷婷| 五月六月婷婷激情网| 天天插天天狠| 六月婷婷五月丁香首页| 超黄亚洲瑟瑟网站| 五月丁香视频在线观看| 五月丁香激情婷婷综合字幕| 第六色在线| 99综合99| 天天爽天天摸| 婷婷综合激情| 激情五月天啪啪| 亚洲在线操| 天天色宗合| 五月天激情影院| 风流少妇A片一区二区蜜桃| 精品亚洲国产成AV人片传媒| 婷婷丁香中文字幕| 欧在线一区| 97碰人人操| 婷婷久月| 成人片久久网站| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 91婷色| 色色色色综合| 夜精品无码A片一区二区蜜桃| 五月天色小说| 五月婷九九草| 久久总和99| 亚洲热手机在线观看| 综合狠狠五月婷婷| 久久99性爱视频| 桃色五月天| 99九九精品| 色欲一区二区三区精品A片| 99人人爽| 久草五月天| 思思久久99热| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 丁香五月欧美激情| 天天综合精品| 久婷狼色诱惑在线| 激情五月综合久久| 激情小说五月天社区丁香| 久久婷婷欧美| 色无码| 亚洲精品视频在线播放| 99视频综合| 在线视频99| 六月婷婷深深爱| 996日日爱| 婷婷九九| 97热91| pom538精品视频| 99在线免费视| www.henhengan| 婷婷伊人五月天| 人操综合| 成人AV在线电影| 六月丁香五月激情婷婷| 久久久久亚洲AV成人无码电影| 开心五月天激情网| 成人AV网站在线| www色婷婷久久综合久色| 日韩在线婷婷五月天综合| 人人爱操| 就去色色五月丁香婷婷久久久| 99无码超碰| 五月婷婷花| 亚洲天堂热| 欧美日韩成人h| 香蕉婷婷| 婷婷六月五月| 五月婷婷久久综合| 久久人五月| 亚洲激情丁香五月基地| 亚洲婷婷久久综合| 超碰日韩人妻在线| 激情五月天色色网| 激情五月色在线播放| 亚洲色色色| 亚洲自拍天堂| 九色视频这里只有精品| 九九色逼| 色五月婷婷影视| 丁香婷婷射| 亚洲超碰在线| 青青色com久久| 99热思思在线观看| 色玖玖爱| 一起草日本| 六月激情婷婷综合| 亚洲激情视频在线观看| 狠狠88综合久久久久噜噜噜| 婷婷美女精品视频| 91avse| 日本在线观看aaa 99| 久婷婷五月激情| 九九热re99re6在线精品| 欧美十二区| 婷婷日在线观看| 久热黄色| 久草嫩草在线观看| 欧美婷| 99这里有精品| 久综合色| 99久久这里只有精品| 99在线视频观看| 狠狠久久婷五月综合色| 伊人99热| 99久久精品国产色欲| 婷婷噜噜| 色色色色丁香| 日韩狠狠色婷婷| 婷婷伊人五月天| 久久九九玖玖| www.激情| 久久婷婷东京热大香樵| 天天日日爽| 9色91视频| 国内婷婷丁香社区在线播放| 五月丁香777| 色五月婷婷av| www.日本91| 美女91一起草| 亚洲va在线∨a天堂va欧美va| 久综合4| 久久婷婷五月天激情| 丁香婷婷综合激情五月色| 久热这里只有精品性色AV| 久久香蕉影院| 婷婷五月天综合网| 人人97碰| 涩综合网| 国产成人av在线| 日本久热| 99日本黄站| 五月丁香精品| 色99视频| 99久久99久久综合| 日韩亚洲视频| 久久久www| 五月亭亭六月天| 日本va欧美va欧美va精品| 99思思| 婷婷色婷婷亚洲成人| 这里只有精品视频99| 五月丁香亚洲校园欧美| 狠狠操狠狠操AV| 色色婷婷五月天| 天天色天天日| 可以免费看av网站| 国产乱人偷精品人妻A片| 五月丁香六月欧美综合| 无码少妇高潮喷水A片免费| 精品色色网| 亚洲天堂婷婷| 丁香婷婷色| 精品99在线观看| 色欲天天综合| 亚洲综合在线视频| 久热久| 精品九九视频| 九九在线91| 99这里热| 玖玖综合色| 激情小说五月天| 色五月丁香婷婷综合| JlZZJlZZ8JlZZ亚洲熟女| 激情综合激情五月一起草| 亚洲成人网站在线| www激情| 日本va欧美va精品发布视频 | 大香蕉AV在线| 丁香婷婷综合激情五月色| 五月丁香六月花| 91精品视频男人的天堂| 在线观看av网站| 丁香五月天AV在线| 国产乱子轮XXX农村| 99re在线这里只有精品视频首页| 国产亚洲色婷婷久久99精品9j| 久久综合中文字幕| 久久久com| 中字幕视频在线永久在线观看免费| 天堂草在线观| 色色色色色五月丁香| 久久婷婷六月综合综合| 99热99这里有免费的精品| 激情五月婷婷啪啪| 亚洲天天| 日韩精品色| www.射伊蕉婷婷| 免费精品99| 啪啪小说五月天| 四色永久成人网站| 1024在线一区| 五月丁香成年黄色| wwW天天干| 天天色凹凸| 久热九九| 婷婷色Av| 日本啪啪天堂| 91蝌蚪窝视频在线| 无码橾| 日本狠狠爽| 亚洲在线视频321| 国产超碰在线| 操一操干一干| 天天看片日日夜夜| 丁香五月天婷婷91| 国产一区二区三区影院| 丁香婷婷激情|