夜夜躁日日躁狠狠久久|国产精品亚洲va在线观看|色天天天天综合男人的天堂|日本特黄特色aa大片免费|国产好痛疼轻点好爽的视频|欧美18school人禽杂交

zhang2601312
級別: 探索解密
精華主題: 0
發(fā)帖數量: 19 個(gè)
工控威望: 117 點(diǎn)
下載積分: 645 分
在線(xiàn)時(shí)間: 19(小時(shí))
注冊時(shí)間: 2016-08-16
最后登錄: 2025-06-14
查看zhang2601312的 主題 / 回貼
樓主  發(fā)表于: 4天前
圖片:
圖片:
圖片:
圖片:
圖片:
圖片:
圖片:
用的用戶(hù)自由通訊發(fā)送和接收功能塊。發(fā)送功能塊對下發(fā)送了一個(gè)讀取報文(01 03 00 12 00 04 EC 0C)然后就出現了一個(gè)問(wèn)題。就發(fā)送這個(gè)報文讀取4個(gè)字節數據時(shí)接收的數據是沒(méi)問(wèn)題的。但是我想多讀取幾個(gè)數據發(fā)送(01 03 00 12 00 10 EC 03)的話(huà)接收到的報文就和圖片1一樣亂的。這是為啥呢。問(wèn)了論壇好多高手的意思估計是接收功能塊設置問(wèn)題。但是我仔細看了幫助幾個(gè)模式(ADHOC設置位1或者0)都測試過(guò)了還是沒(méi)用。求助各位高手幫忙看下。十分感謝。PS:報文沒(méi)問(wèn)題
zhang2601312
級別: 探索解密
精華主題: 0
發(fā)帖數量: 19 個(gè)
工控威望: 117 點(diǎn)
下載積分: 645 分
在線(xiàn)時(shí)間: 19(小時(shí))
注冊時(shí)間: 2016-08-16
最后登錄: 2025-06-14
查看zhang2601312的 主題 / 回貼
1樓  發(fā)表于: 3天前
有大神幫我看下嗎?謝謝了
世界杯之殤
級別: 探索解密
精華主題: 0
發(fā)帖數量: 51 個(gè)
工控威望: 117 點(diǎn)
下載積分: 5791 分
在線(xiàn)時(shí)間: 59(小時(shí))
注冊時(shí)間: 2023-09-25
最后登錄: 2025-06-13
查看世界杯之殤的 主題 / 回貼
2樓  發(fā)表于: 3天前
大佬,球球你按一下F1,然后根據范例來(lái)寫(xiě)吧!
你現在有事modbus rtu ,后面又是自由口,混著(zhù)用的嗎?
tsend_c的req直接改為1
樓主留言:
大佬不是啊,我這個(gè)報文是發(fā)送到下面一個(gè)串口服務(wù)器上面去了。串口服務(wù)器對上和PLC是TCP通訊。對下的傳感器是RTU通訊。串口服務(wù)器起一個(gè)RTU轉TCP的作用。
zhang2601312
級別: 探索解密
精華主題: 0
發(fā)帖數量: 19 個(gè)
工控威望: 117 點(diǎn)
下載積分: 645 分
在線(xiàn)時(shí)間: 19(小時(shí))
注冊時(shí)間: 2016-08-16
最后登錄: 2025-06-14
查看zhang2601312的 主題 / 回貼
3樓  發(fā)表于: 3天前
各位大佬問(wèn)題已解決。是接收塊LEN填寫(xiě)的數值和接收DB塊的長(cháng)度問(wèn)題。謝謝各位大佬的關(guān)心。3Q3Q
http200
級別: 正式會(huì )員
精華主題: 0
發(fā)帖數量: 11 個(gè)
工控威望: 55 點(diǎn)
下載積分: 55 分
在線(xiàn)時(shí)間: 3(小時(shí))
注冊時(shí)間: 2024-12-23
最后登錄: 2025-06-16
查看http200的 主題 / 回貼
4樓  發(fā)表于: 7小時(shí)前
開(kāi)放式tcp亂序是因為發(fā)送字節數和接收字節數對不上,不足接收字節數的就會(huì )被plc先緩存起來(lái)
http200
級別: 正式會(huì )員
精華主題: 0
發(fā)帖數量: 11 個(gè)
工控威望: 55 點(diǎn)
下載積分: 55 分
在線(xiàn)時(shí)間: 3(小時(shí))
注冊時(shí)間: 2024-12-23
最后登錄: 2025-06-16
查看http200的 主題 / 回貼
5樓  發(fā)表于: 7小時(shí)前
前幾天測試開(kāi)放式tcp也遇到一樣的問(wèn)題,問(wèn)deepseek和chatgpt解決的
http200
級別: 正式會(huì )員
精華主題: 0
發(fā)帖數量: 11 個(gè)
工控威望: 55 點(diǎn)
下載積分: 55 分
在線(xiàn)時(shí)間: 3(小時(shí))
注冊時(shí)間: 2024-12-23
最后登錄: 2025-06-16
查看http200的 主題 / 回貼
6樓  發(fā)表于: 6小時(shí)前
您遇到的數據順序錯亂問(wèn)題是由于**TCP協(xié)議本身的無(wú)邊界性和PLC緩沖區處理機制**共同導致的。以下是具體原因和解決方案:

---

### **問(wèn)題根源分析**
1. **TCP流式協(xié)議特性**  
   TCP是字節流協(xié)議,不保證應用層消息的邊界。若客戶(hù)端快速連續發(fā)送多組數據,PLC可能將多次發(fā)送的數據合并到同一接收緩沖區(如網(wǎng)絡(luò )延遲或PLC處理速度慢時(shí))。

2. **PLC緩沖區覆蓋機制**  
   S7-1200的`TRCV`指令默認采用**循環(huán)緩沖區**(FIFO機制)。當新數據到達時(shí),會(huì )從緩沖區的當前指針位置開(kāi)始覆蓋舊數據,導致看似"亂序"。

3. **字節對齊差異**  
   如果客戶(hù)端發(fā)送時(shí)未顯式指定字節序(如大端/小端),而PLC默認按大端序解析,可能引發(fā)分段錯誤(但您的案例中實(shí)際是整體偏移,非字節反轉)。

---

### **解決方案**
#### **(1) 顯式定義應用層協(xié)議**
在數據包中加入**幀頭**和**幀尾**標識,例如:
```plaintext
[頭標識:0xAA][數據長(cháng)度:1字節][數據:N字節][校驗和:1字節][尾標識:0x55]
```
PLC側通過(guò)循環(huán)檢查緩沖區匹配完整幀后再處理。

#### **(2) 修改TRCV參數配置**
```pascal
TRCV(
    REQ     := TRUE,        // 持續使能
    CONT    := TRUE,        // 保持連接
    DATA    := #ReceiveBuf, // 接收緩沖區
    LEN     := 20,          // 預期接收長(cháng)度
    RCVD_LEN=> #ActualLen,  // 實(shí)際接收長(cháng)度輸出
    BUSY    => #BusyFlag);
```
關(guān)鍵點(diǎn):
- 設置`LEN`與發(fā)送方嚴格一致(您已設為20字節)。
- 監控`RCVD_LEN`確認每次接收的實(shí)際字節數。

#### **(3) 強制單次接收同步**
在客戶(hù)端每次發(fā)送后增加延遲(如100ms),或通過(guò)PLC程序控制:
```pascal
IF #FirstReceive THEN
    TRCV(REQ := TRUE);      // 首次觸發(fā)
    #FirstReceive := FALSE;
ELSE
    TRCV(REQ := NOT #BusyFlag); // 上次接收完成后再請求
END_IF;
```

#### **(4) 使用`TRCV_C`替代`TRCV`**
`TRCV_C`集成連接管理,可減少緩沖區沖突:
```pascal
TRCV_C(
    CONT    := TRUE,
    LEN     := 20,
    DATA    := #ReceiveBuf,
    RCVD_LEN=> #ActualLen);
```

---

### **您的數據案例分析**
- **原始發(fā)送數據**(16進(jìn)制):
  ```plaintext
  15 3E 14 24 54 26 4E 28 51 29 53 AA 56 B0 2D 2D 5C 75 2F C8
  ```
- **PLC接收數據**:
  ```plaintext
  2D 2D 5C 75 2F C8 15 3E 14 24 54 26 4E 28 51 29 53 AA 56 B0
  ```
  **現象解釋**:  
  數據被**環(huán)形偏移6字節**,說(shuō)明PLC緩沖區中殘留了之前未及時(shí)讀取的6字節數據,新數據從緩沖區第7字節開(kāi)始寫(xiě)入,形成"拼接"效果。

---

### **終極調試建議**
1. **清空緩沖區**  
   在建立連接后、首次接收前,調用`TRCV`連續讀取直到`BUSY`=FALSE,丟棄舊數據。

2. **Wireshark抓包驗證**  
   過(guò)濾PLC的IP和端口,確認客戶(hù)端是否真正按預期順序發(fā)送(排除調試助手本身問(wèn)題)。

3. **PLC側診斷**  
   在線(xiàn)監視`TRCV`的`RCVD_LEN`和`STATUS`,正常時(shí)應返回`16#7000`(無(wú)錯誤)。

4. **代碼示例(清空緩沖區)**  
```pascal
// 初始化階段清空緩沖區
#TempBuffer := ARRAY[1..100] OF BYTE; // 臨時(shí)緩沖區
WHILE TRUE DO
    TRCV(
        REQ  := TRUE,
        DATA := #TempBuffer,
        LEN  := 100,
        BUSY => #IsBusy);
    IF NOT #IsBusy THEN EXIT; END_IF;
END_WHILE;
```

---

通過(guò)以上方法,您應該能解決數據錯序問(wèn)題。如果仍有異常,請檢查:
- 客戶(hù)端是否啟用了Nagle算法(建議禁用)
- PLC的OB1循環(huán)時(shí)間是否過(guò)短(建議≥50ms)
- 是否有多余的`TRCV`調用覆蓋了緩沖區

夜夜躁日日躁狠狠久久|国产精品亚洲va在线观看|色天天天天综合男人的天堂|日本特黄特色aa大片免费|国产好痛疼轻点好爽的视频|欧美18school人禽杂交