wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
12樓  發(fā)表于: 2021-12-03 20:36
今天問采購才知道485模塊是在網上買的國產的,也不知道是不是國產模塊產品質量問題,準備買個正品模塊來試一下看是什么問題、、、
zhangqi_1234
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 342 個
工控威望: 493 點
下載積分: 4015 分
在線時間: 250(小時)
注冊時間: 2013-03-22
最后登錄: 2024-12-07
查看zhangqi_1234的 主題 / 回貼
13樓  發(fā)表于: 2021-12-04 00:02
MODBUS通信中,主站發(fā)起通信請求,從站被動響應;從站不會主動發(fā)起通信請求。從你的例子中看出,你把PLC作為主站,PC機作為從站。
1、PLC使用RS指令的目的是,指定數(shù)據發(fā)送區(qū)和接收區(qū)。
2、PLC用邊沿觸發(fā)指令使M8122置1,M8122置1后PLC會自動把數(shù)據發(fā)送區(qū)的數(shù)據(通信報文)通過串口順序發(fā)送出去,用于發(fā)起對指定從站的通信請求。數(shù)據發(fā)送完畢后,M8122自動復位。因此通常用上升沿指令接[SET M8122],一般不用M8122作其它事情。另外,發(fā)送的通信報文,要包含CRC校驗碼,需要使用CRC校驗碼指令,并同時使M8161置1。
3、從站收到主站的通信請求,檢查通信報文是否符合MODBUS協(xié)議,如果不符合協(xié)議要求,會向主站發(fā)送錯誤代碼,但有些錯誤不會回復任何數(shù)據,例如CRC校驗碼錯誤。如果通信報文符合MODBUS協(xié)議,從站響應主站請求,執(zhí)行主站的請求,并發(fā)送應答的通信報文。這個應答的通信報文會存儲在RS指令指定的數(shù)據接收區(qū)中。
4、PLC作為主站接收完從站回復的數(shù)據后,M8123置1,M8123需要手動復位,為下一次接收數(shù)據做準備。PLC的M8123置1表示是主站接收完從站的回復數(shù)據,根據MODBUS通信協(xié)議,主站不會發(fā)送數(shù)據告訴從站,收到了回復數(shù)據。主站發(fā)送數(shù)據給從站,是向從站發(fā)起通信請求。

5、如果是PC機作為主站,PLC作為從站。則PLC既不需要使用RS指令,也不需要使用M8122和M8123,而是要設置一些參數(shù),指定站號、通信速率、通信接口、MODBUS存儲器(線圈、輸入位元件、輸入寄存器、保持寄存器)尋址等。

6、FX3U配備FX3U-385ADP-MB適配器作為主站,不使用RS指令、CRC校驗碼指令和M8122、M8123,而是使用ADPRW指令。7、FX3U的通信參數(shù)設置不使用D8120,如果用FX3U-485-BD,則是使用D8400、D8401、D8409-D8416。FX3G沒使用過,不清楚是用D8400、還是D8120。
[ 此帖被zhangqi_1234在2021-12-04 00:17重新編輯 ]