關于s7-200的modbus rtu 從站通訊的問題
林慧玲
發(fā)布于2014-03-11 16:22
4185
0
標簽:
馬上注冊,免費學習超過100課時視頻教程,免費下載海量學習資料
自由口通信和modbus通信,想法:讓電腦跟s7-200plc通過modbus協(xié)議進行通信,plc做從站,把從站的modbus協(xié)議寫道plc上,電腦上使用串口調試軟件發(fā)送一個數1,然后通過modbus協(xié)議,傳送到plc中,接收到以后點亮i0.0點(不知道這種想法是對還是錯)。我用的是s7-200226cpu,編程線是usb/ppi的(一頭是485頭,一頭是usb接頭)。
以下是我做的過程,我在編程環(huán)境中編寫了從站程序,并用編程線下載到了plc中(程序在下圖中,因為剛學,編寫的程序對不對我自己都不知道)然后用串口調試軟件發(fā)送數據1做驗證,結果沒有反應,在程序狀態(tài)監(jiān)控中顯示mbus_slave的錯誤代碼是10(從屬功能沒有啟動),還有就是我在庫存儲區(qū)分配上地址設置的是vb0-vb779,在mbus_slave中的holestr位中,按理說保持寄存器不能跟庫存儲區(qū)相重疊,可是我在設置保持寄存器為vb0-vb779范圍之內時沒事兒,但是錯誤代碼是10就是那個從屬功能沒有啟動。超出這個范圍,比如&vb1000就顯示:無法建立與指定地址的連接,可能是無效地址或不存在的地址,這個時候用的是ppi編程線。我把線換成485轉usb線,調到運行當,點程序狀態(tài)監(jiān)控顯示:端口無法打開或正由另一個應用程序占用。徹底的不知道是為什么了,請來是們幫我指點一下,我的錯誤在那里?;蛘呶椰F(xiàn)在想做pc跟plc的modbus協(xié)議傳輸該怎么實驗,謝謝你們萬分感激。
問題補充:
謝謝兩位老師的回答,上午我弄了一下才知道,原因是我用的端口0放ppi線,在初始化modbus通信以后端口被占用,使用ppi編程線就不能在監(jiān)控了,經過指點,我吧端口1放置ppi編程線,端口0設置放置485轉usb的傳輸線,在監(jiān)視程序狀態(tài)時通訊顯示正常了(見圖)。我現(xiàn)在想通過modbus調試精靈向plc里面發(fā)送數據卻不知道怎么弄了(也上圖了)。還想跟老師請教,把數據發(fā)到plc里后數據應該存放在vw0起始的存儲區(qū)中,我該怎么讀取這里的數據呢,就是說怎么讀出plc里的數據,總是繞不出這個彎。
圖片說明: 1,調試精靈 2,寫的程序 3,正常吳錯誤
佳答案
1、線,在pc中一定要表示為一個串口,這樣子才能起先通訊實驗;siemens原裝的usb/ppi,在pc中表示的是一個usb設備。
2、holdstart占用的v區(qū),不要和庫內存重疊。比如你的holdstart=&vb0,數量是1000,那么vb0-vb1999都是hold范圍,庫內存至少分配到vb2000以上。為什么?現(xiàn)在照做,等有體會后,自然就明白了。
3、發(fā)下面這串數據到plc,有回應數據就表示成功了。
假定modbus從站地址10,讀取40001一個hold寄存器(也就是vw0):
0a03000000018571
(16進制格式)