国产狂喷潮在线观看-日韩a∨无码中文无码电影-精品午夜中文字幕熟女人妻在线-国内精品久久久久久久电影视-成人欧美一区二区三区a片

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

---

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

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

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

---

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

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

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

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

---

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

---

### **終極調(diào)試建議**
1. **清空緩沖區(qū)**  
   在建立連接后、首次接收前,調(diào)用`TRCV`連續(xù)讀取直到`BUSY`=FALSE,丟棄舊數(shù)據(jù)。

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

3. **PLC側(cè)診斷**  
   在線監(jiān)視`TRCV`的`RCVD_LEN`和`STATUS`,正常時應返回`16#7000`(無錯誤)。

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

---

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

主站蜘蛛池模板: 国产精品成人观看视频国产奇米 | 亚洲欧美日韩中文加勒比| 国产欧美一区二区精品性色 | 蜜臀av在线无码国产| 最新国产aⅴ精品无码| 国产 高清 无码 在线播放 | 久久2017国产视频| 国语自产视频在线| 久久国国产免费999| 久久久无码中文字幕久...| 女人与公人强伦姧人妻完电影| 美女裸体跪姿扒开屁股无内裤| 国产69精品久久久久久久| 国产一区二区三区无码免费| 国产电影无码午夜在线播放| 99热都是精品久久久久久| 亚洲熟女乱色综合亚洲图片| 中文字幕无线码一区2020青青| 最新69国产成人精品视频免费| 国产欧美亚洲精品第1页青草| 无码h黄肉动漫在线观看999| 天天爽夜夜爽人人爽| 亚洲日韩日本中文在线| 日本免费一区二区三区最新vr| 丰满日韩放荡少妇无码视频| 久久久久国产精品麻豆ar影院| 亚洲精品乱码久久久久久金桔影视| 色妞www精品免费视频| 亚洲r成人av久久人人爽| 国产99久9在线视频传媒| 国产精品久久午夜夜伦鲁鲁| 亚洲国产中文字幕在线视频综合 | 中文字幕韩国三级理论无码| 蜜桃久久精品成人无码av| 天天爽天天摸天天碰| 日本免费大黄在线观看| 亚洲成a人片在线观看国产| 国产亚洲精品久久久久久老妇| 国产三级精品三级在线专区| 夹得好湿真拔不出来了动态图| 国产成人a∨激情视频厨房|