adprw指令通讯案例_S7-1200与S7-300傻瓜式通讯
最近在做一個使用西門子S7-1200控制伺服電機運動的一個小設備,這個設備需要作為一個子站掛載在 S7-300主站下。在把設備寄到廠家以后,對方表示通訊不上,后經過現場查看發現對方對S7-300不太熟悉,使用PUT/GET指令的S7通訊協議的時候配置的亂七八糟。為了方便現場工程師做通訊調試,我們想了兩種辦法可以讓初學者就能配置好兩方的通訊,并且把這個方法用于實踐以后取得了非常好的調試效果,現把這個方法分享給大家。
S7-1200與S7-300可采用S7通訊的方式進行數據的傳輸,配置其實也是很方便:
一、生成GSD文件掛載S7-300的方式
1.創建S7-1200程序,雙擊設備組態
2.設置好IP和設備名稱
3.在防護和安全-連接機制里面將允許來自遠程對象PUT/GET通訊訪問勾選上
4.操作模式上勾選上IO設備,并在下面的傳輸區域中將PLC1200被通訊的存儲區進行選擇。本案例中選擇的是IB2-IB6,QB2-QB6,也就是說S7-1200會將自己的這些區域的數值傳送給主站S7-300。注:此種通訊方式只能通訊輸入輸出存儲區,不能傳輸DB存儲區,所以這種方式不太適合我們。
5.先編譯一下整個程序,注意一定要進行編譯否則不能導出GSD文件。編譯之后向下拉,找到導出GSD文件的按鈕(本文沒有進行編譯,所以按鈕時灰色的,如果編譯了就可以點擊了)
6.好了,現在把生產的GSD文件拖拽到S7-300的硬件組態下吧,只要拖拽過去就可以通訊上了。
二、提前編好S7-1200的通訊程序
第一種方式固然很方便,但是局限性很大,就是不能創建DB通訊區域。然后我們用了另外一種方法。我們的工程師屬于對S7-300不是很熟悉,對S7-1200非常熟的人,所以我們把所有工作都做在了1200上。
1.首先創建S7-1200項目,配置好IP、勾選允許來自遠程對象PUT/GET通訊訪問
2.創建S7-1200需要傳送的共享數據塊,將需要傳送的數據填寫進去
上圖一定要選擇全局DB,其中OUT數據塊里的數據是需要傳送給S7-300的,INPUT數據塊里的數據是接收S7-300的數據
4.將兩個數據塊的優化塊訪問給勾掉(就是不要勾選,否則是符號尋址)
選中數據塊-右擊-屬性,選擇常規選項卡里的屬性,將優化的塊訪問給勾掉
5.把需要通訊的數據分別填入各自數據塊中
其中a1-a8是接收S7-300的數據,b1-b8是傳送給S7-300的數據
5.打開程序塊
6.選擇通信-S7通信文件夾下的GET/PUT指令,并拖拽至程序塊中
7.程序注釋:
- GET指令是從S7-300中讀8個bool變量存儲到S7-1200中
- REQ是什么時候執行這條語句,上升沿有效,所以此處需要配置好一個脈沖信號
- ID是自己輸入的通訊連接ID號,每個通訊是唯一標識的,別和其它的ID重了就可以,但是要注意改完之后就不要在改了
- ADDR_1是指對方存儲數據的地址指針和位數,對于本案例來說就是S7-300中需要被S7-1200讀取的數據地址,本例的S7-300存放的數據地址是DB15,總共通訊8個bool型變量
- RD_1是指通訊過來的數據存放在本地哪個數據塊中,之前建立的DB2(INPUT)數據塊就是為了存儲讀取的數據的,所以本例是DB2,總共通訊8個bool
- 如果你通訊的DB塊比較多,還可以在ADDR2和RD2中建立相應的第二個通訊存儲區,依次類推
- PUT指令是從S7-1200中寫8個bool變量存儲到S7-300中
- REQ是什么時候執行這條語句,上升沿有效,所以此處需要配置好一個脈沖信號
- ID是自己輸入的通訊連接ID號,每個通訊是唯一標識的,別和其它的ID重了就可以,但是要注意改完之后就不要在改了
- ADDR_1是指對方存儲數據的地址指針和位數,對于本案例來說就是S7-300中需要存儲S7-1200寫入數據的地址,本例的S7-300存放的數據地址是DB16,總共通訊8個bool型變量
- SD_1是指S7-1200把哪些數傳入到S7-300中,之前建立的DB1(OUT)數據塊就是為了存儲寫入數據的,所以本例是DB1,總共通訊8個bool
- 如果你通訊的DB塊比較多,還可以在ADDR2和SD2中建立相應的第二個通訊存儲區,依次類推
建立完成之后的地址對應關系 是:S7-1200將DB1里的8個數據傳到S7-300中DB16的8個數據中;S7-1200讀取S7-300中DB15的8個數據并存儲到DB2中。
8.打開S7-1200的網絡視圖,點擊連接,選擇S7連接,配置一個S7連接。
注:為了確保通用性,即本案例不針對某一個具體的PLC做通訊。而是拿到現場以后和任何一個PLC都能匹配通訊上,所以本例只配置S7連接即可,不無需配置連接伙伴(如果配置連接伙伴就是針對某一個具體的PLC了)
9.進入程序塊,選中GET指令,選擇屬性選項卡-組態-連接參數
注意這里的連接參數什么時候顯示綠色的對勾什么時候表示配置成功了。
參數解釋如下:
- 左邊是本地PLC即1200PLC的參數設置,注意那個ID號就是你之前填寫的。
- 右邊是配置你需要和誰通訊的PLC。因為本案例想做成通用性,所以伙伴選擇未知
- IP地址輸入你需要和S7-1200進行通訊的地址(即S7-300的IP地址),此IP地址是需要到現場由工程師根據現場通訊PLC進行設置的
同樣的步驟配置PUT指令程序塊的通訊信息
S7-1200的配置就到此為止了。
配置S7-300
拿到這個通訊程序后下載到S7-1200中,然后把設備帶到現場,在現場的S7-300中進行IP配置和數據塊建立即可
1.根據現場S7-300的IP地址配置S7-1200的通訊IP地址。(此處配置一致即可,可以先定S7-1200中通訊程序的伙伴IP,然后更改S7-300中的IP地址;或者現場S7-300的IP地址已經配置完成不能修改了,你可以去S7-1200中將伙伴IP修改一下。只要二者相對應即可)
2.建立通訊數據塊,用來和S7-1200進行通訊。因為在S7-1200中已經定義了DB號碼,所以在S7-300中創建的數據塊號碼必須和S7-1200中配置的S7通訊號碼一致。
3.在數據塊中建立和S7-1200一模一樣的數據,用來傳送和讀取S7-1200中的數據。
好了,是不是感覺在S7-300中的編程工作已經減輕了不少,只要求IP和DB塊及DB塊中的數據和通訊程序一致即可,無需做其他編程操作。如果需要S7-1200中的工作少,你可以將PUT/GET指令寫在S7-300中。
祝大家五一玩兒的開心。
總結
以上是生活随笔為你收集整理的adprw指令通讯案例_S7-1200与S7-300傻瓜式通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wpf中的点击窗口放大放小按钮怎么写_P
- 下一篇: python 取反_自从用了这招pand