PLCSIM可以仿真兩個CPU之間的S7通信、TCP通信、ISO ON TCP通信,下面逐一進行示例,因為TCP和ISO ON TCP相同,所以只示例ISO ON TCP。
第一篇:S7通信
一、同一項目里的兩個CPU仿真器的S7通信
添加兩個設備,CPU1-1212作為客戶端,CPU2-1215作為伺服器端,IP位址分別設為192.168.1.6和192.168.1.7,激活「啟用時鐘存儲器位元組」。通信目的是將CPU1212發送數據區數據傳輸到CPU1215接收數據區,同時1212接收數據區接收來自CPU1215發送數據區的數據。
1.1客戶端CPU1212組態S7連接,如圖1所示。
圖1:客戶端組態S7連接
1.2 客戶端CPU1212添加數據通信數據塊,比如s7com(DB1)建立Send和Rev兩個數組(Array[0..9] of int),Send數組代表CPU1212發送數據區,Rev數組代表CPU1212接收數據區,如圖2所示。
圖2:建立收發數據塊
1.3 伺服器CPU1215添加數據通信數據塊,同樣s7com(DB1)建立Send和Rev兩個數組(Array[0..9] of int),Send數組代表CPU1215發送數據區,Rev數組代表CPU1215接收數據區,與客戶端一樣。
1.4 客戶端CPU1212編程
調用「PUT」指令將數據寫入到夥伴CPU1215中,調用「GET」指令從夥伴CPU1215讀取數據,如圖3和4所示。
圖3:PUT指令
圖4:GET指令
1.5 伺服器端CPU1215設置「允許來自遠程對象的PUT/GET通信訪問」,如圖5所示。(無需編程)
圖5:伺服器端勾選允許遠程訪問
1.6 啟動各自仿真器並進行下載測試,如圖6所示。
圖6::仿真通信測試
二、不同項目里兩個CPU的S7通信仿真
還以CPU1212(客戶端)和CPU1215(伺服器端)為例,只是兩個CPU在不同的項目里。
2.1 客戶端項目CPU組態編程
與同一項目里組態編程基本一致,區別就是連接參數裡通信夥伴方選擇未指定,同時在「常規」屬性里填寫未指定夥伴方的IP位址,如圖7和8所示。
圖7:創建未指定連接
圖8:填寫夥伴IP位址
程序里還是建立數據塊S7com收發數據,同時調用「TSEND」和「TRCV」指令用於發送和接收數據,與前面一樣不再贅述。
2.2 伺服器端項目CPU1215組態
與同一項目里一樣,CPU1215建立數據S7com用於收發數據即可,無需編程,同時勾選「允許來自遠程對象的PUT/GET通信訪問」。
3.3 通信測試
客戶端項目和伺服器端項目均點擊仿真按鈕進行仿真,仿真CPU運行後自動下載程序。打開兩個項目各自的監控表,客戶端填入發送數據和伺服器端填入發送數據後,各自均收到對方發送的數據,如圖9所示。
圖9:不同項目通信測試
提示:成功建立S7連接是PUT/GET指令數據訪問成功的先決條件,可在S7連接屬性里「診斷>連接信息>連接詳細信息」里查看連接狀態,如圖10所示。
圖10:查看S7連接狀態
至此PLCSIM仿真CPU間S7通信就結束了。
第二篇:ISO ON TCP通信仿真
一、同一項目里兩個CPU的ISO-on-TCP通信仿真
添加兩個設備,CPU1-1212作為客戶端,CPU2-1215作為伺服器端,IP位址分別設為192.168.1.6和192.168.1.7,激活「啟用時鐘存儲器位元組」。通信目的是將CPU1212發送數據區數據傳輸到CPU1215接收數據區,同時1212接收數據區接收來自CPU1215發送數據區的數據。
1.1客戶端CPU1212編程:
1)添加數據通信數據塊,比如TCP (DB11)建立Send和Rev兩個數組(Array[0..9] of int),Send數組代表CPU1212發送數據區,Rev數組代表CPU1212接收數據區。
2)在主程序OB1中調用「TCON」指令,建立ISO-on-TCP連接。單擊「TCON」指令右上角「開始組態」按鈕,在巡視窗口中選擇「TCON」指令的「屬性>組態>連接參數」,直接配置連接屬性。連接類型選擇「ISO-on-TCP」, 「連接數據」里選擇「新建」時,系統將自動創建一個連接數據塊,如圖11所示。
圖11:客戶端1212連接
「TCON」指令的說明
REQ:該參數的上升沿用於啟動連接操作,成功建立連接後參數DONE將置位一個掃描周期。
ID:指向已分配連接的引用,如圖1裡面的「連接ID(十進位)」,此處為2。
CONNECT:指向描述通信連接指針,也就是指向我們剛才組態時自動創建的連接數據塊,它包含了建立連接所需的全部設置。這個參數既可以像上面一樣通過點擊指令右上角「開始組態」按鈕生成,也可以在數據塊中組態一個結構類型為TCON_IP_v4變量來實現。
3)在主程序中調用「TSEND」指令,用於發送數據,如圖12所示。
4)在主程序中調用「TRCV」指令,用於接收數據,如圖13所示。
圖12:客戶端發送指令
圖13:客戶端接收指令
1.2伺服器端CPU1215編程
1)和客戶端一樣添加數據通信數據塊,比如TCP (DB11)建立Send和Rev兩個數組(Array[0..9] of INT),Send數組代表CPU1215的發送數據區,Rev數組代表CPU1215的接收數據區。
2)在主程序OB1中調用「TCON」指令,建立TCP連接。同樣是單擊「TCON」指令右上角「開始組態」按鈕進行組態,連接數據選擇前面客戶端CPU已組態好的即可,如圖14所示.
圖14:伺服器端1215配置
3)同樣在主程序中調用」TSEND」和「TRCV」指令,用於發送和接收數據,與前面客戶端程序相同,不再贅述。
1.3 通信測試
對本項目中2個CPU均啟動仿真,啟動各自仿真CPU運行並下載程序。每個CPU都添加監控表,分別觸發各自TCON連接("TCP".Ctl[0]),同時在1212CPU的Send區和1215CPU的Send區填入相關數據,在1212CPU的Rev區和1215CPU的Rev區會接收到對方發來的數據,如圖15所示。
圖15:ISO ON TCP通信仿真測試(同一項目)
二、不同項目里兩個CPU的TCP通信仿真
還以CPU1212(客戶端)和CPU1215(伺服器端)為例,只是兩個CPU在不同的項目里。
2.1 客戶端項目CPU組態編程
與前面同一項目里組態編程基本一致,區別就是連接參數裡通信夥伴方選擇未指定,如圖16所示。
圖16:客戶端 ISO ON TCP連接設置
調用「TSEND」和「TRCV」指令用於發送和接收數據,與前面一樣不再贅述。
2.2 伺服器端項目CPU1215組態和編程
OB里調用」TCON」指令,連接參數裡「夥伴」同樣選擇「未指定」,因為不在同一項目。輸入夥伴CPU的IP位址(192.168.1.6),另外是客戶端主動連接,所以夥伴側選上「主動建立連接」,同時新建連接數據,如圖17所示。
圖17:伺服器1215端ISO ON TCP配置
調用「TSEND」和「TRCV」指令也與前面一樣,不再贅述。
2.3 通信測試
客戶端項目和伺服器端項目均點擊仿真按鈕進行仿真,仿真CPU運行後自動下載程序。打開兩個項目各自的監控表,客戶端填入發送數據和伺服器端填入發送數據後,各自均收到對方發送的數據,如圖18所示。
圖18:不同項目仿真ISO ON TCP通信測試
第三篇:TCP通信仿真
與ISO ON TCP幾乎一模一樣,只要把連接改為TCP即可,不再贅述了。