創建一個Modbus Master I/O伺服器
在本節中,您將創建一個到Modbus地址的LabVIEW接口,稱為I/O 伺服器。 I/O 伺服器會使用當前值自動更新LabVIEW。
- 在LabVIEWGetting Started視窗中,單擊File»New Project。這將打開一個新的LabVIEW專案。
- 如果“Context Help”視窗被屏蔽,請按Ctrl + H以顯示該視窗。使此視窗保持打開狀態,以獲取有關鼠標下方項目的有用訊息。
- 在LabVIEW Project視窗中,右鍵單擊My Computer,然後選擇New»I/O Server ,如圖1所示。
圖1:通過LabVIEW專案創建新的I/O伺服器
- 在“創建新的I/O伺服器”視窗中選擇Modbus ,然後單擊“Continue” 。
- 從Model下拉菜單中選擇Modbus Ethernet。
圖2:配置Modbus Master I/O伺服器
- 在IP address欄位中輸入目標Modbus Slave的IP地址。如果您不知道如何確認電腦的IP地址,請參考以下外部網頁:如何查找IP資訊。在此範例中,我們將Modbus Slave與Master運行在同一台電腦上,因此我們使用本地主機IP地址127.0.0.1。
- 選擇OK。在“Project Explorer”視窗中會自動創建一個庫來管理 I/O伺服器。
- 通過從Project Explorer”視窗中選擇File»Save All保存,將專案另存為ModbusDemoProject,將庫另存為ModbusDemoLibrary。
通過I/O伺服器將共享變數綁定到Modbus地址
在本節中,您將學習創建綁定到Modbus地址的共享變數,使您可以在LabVIEW中對PLC數據進行本地存取。使用共享變數,您可以在一台電腦或網絡上的LabVIEW應用程式之間共享數據。
- 創建綁定到Modbus地址的新共享變數。
- 右鍵單擊新創建的ModbusDemoLibrary,然後選擇“Create Bound Variables…” 。
- 在“Create Bound Variables”視窗中,將樹向下擴展到Modbus1 ,以選擇所需的地址範圍。
- 然後選擇000001-065535 ,然後單擊Add Range。將“Data Item”的默認值保留為000001,將“Number of items”保留為1。單擊OK。
圖3:選擇要綁定到共享變數的Modbus地址
- 現在,您的配置視窗在“Added variables”部分中應具有變數000001。
- 單擊OK。這將創建一個綁定到Modbus地址的共享變數,並將其加載到Multiple Variable Editor中。
- 在“Multiple Variable Editor”中,選擇“Done” 。這會將新的共享變數添加到之前創建的庫中。
- 在Project Explorer中,右鍵單擊000001,然後選擇“ Rename” 。將變數重命名為Coil1。
請注意:LabVIEW DSC模組通過添加將數據,警報和事件直接記錄到資料庫的功能來增強共享變數,而無需編寫LabVIEW應用程式。
- 通過右鍵單擊ModbusDemoLibrary並選擇Deploy All來部署共享變數。這將發佈共享變數,使它們在網絡上可用於其他電腦。
現在,您可以通過共享變數在LabVIEW中本地存取Modbus數據
在LabVIEW中寫入Modbus地址
- 在Project Explorer中,右鍵單擊My Computer,然後選擇New»VI 。這將創建一個新的虛擬儀器或VI。 VI用於創建用戶界面和可執行的圖形程式碼。
- 默認情況下,您會看到Front Panel,這是VI的用戶界面。 LabVIEW具有許多內置的UI組件,例如圖形,圖表,刻度盤等,可用於構建功能強大,直觀的UI。選擇View»Controls Palette,或右鍵單擊Front Panel上的任意位置以呼叫Controls面板。將鼠標懸停在各個類別上,以探索LabVIEW中的UI組件。
- 通過選擇Express»Button&Switches»Push Button從Controls面板中選擇一個按鈕,並將其放置在Front Panel上,如圖4和5所示。
圖4:從Controls面板中選擇一個按鈕
圖5:位於Front Panel上的按鈕
- 在VI中,選擇Window»Show Block Diagram或按Ctrl + E以顯示Block Diagram。Block Diagram是您構建應用程式行為的地方。注意Block Diagram上的圖標,該圖標代表Front Panel上的按鈕。通過按Front Panel上的按鈕,可以更改從Block Diagram上的圖標端口傳遞的Boolean值。
- 在項目Project Explorer中,展開ModbusDemoLibrary庫,然後選擇Coil1共享變數。
- 將Coil1共享變數從Project Explorer拖放至VI的Block Diagram。共享變數充當Block Diagram上其他端口的數據源。
- 右鍵單擊新放置的Coil1共享變數,然後選擇Access Mode»Write。這使您可以寫入共享變數,而不是從共享變數中讀取。
- 使用Connect Wire工具到接線COIL1共享變數為Boolean按鈕通過點擊COIL1共享變數,然後在Boolean按鈕,如圖6。
圖6:Block Diagram項目接線
現在,VI運行時,數據從Boolean 按鈕流向共享變數。
- 通過選擇View»Functions Palette或在Block Diagram上的任意位置單擊鼠標右鍵,打開“Functions ”面板。 “Functions ”面板包含數百個分析功能,控制功能和圖形化編程結構。
- 導航到“Programming»Structures»While Loop”,從“Functions”選項板中選擇一個while迴圈。一旦選擇了while迴圈,就會出現鼠標,如圖7所示。這使您可以將while迴圈包裝在一段程式碼中。
圖7:選擇While迴圈
圖8:While迴圈鼠標
- 使用while迴圈鼠標,通過單擊並拖動鼠標在共享變數和波形圖周圍放置while迴圈。現在,通過右鍵單擊“Loop Condition”並選擇“Create Control”,在while迴圈中創建一個Stop控件。這會在Front Panel上放置一個“Stop”按鈕,允許用戶停止VI。
圖9:在共享變數和控件周圍放置While迴圈
while迴圈使其中的程式碼連續執行,直到被用戶或VI中的其他邏輯停止。
- 由於while迴圈是現在式,它將盡可能快速地運行。Wait Until Next ms MultipleVI應添加到迴圈中,以使迴圈每隔設置的秒數執行一次,在這種情況下為100ms。
圖10:在While迴圈中添加時序
- 通過選擇Window»Show Front Panel或按Ctrl + E返回Front Panel。
- 單擊工具欄上的Run按鈕以執行VI。
圖11:運行按鈕
- 部署完成後,單擊Deploy …視窗上的Close 。當應用程式開始執行時,您現在可以將按鈕切換為true和false。這將使用True或False更新共享變數引擎中Modbus綁定的共享變數
圖12:完成的Front Panel-控制Modbus線圈
- 恭喜您!您已在LabVIEW應用程式中成功存取了PLC數據,因此可以在解決方案中合併強大的分析和控制功能。
使用分佈式系統管理員查看共享變數
- 在項目Project Explorer視窗中,選擇Tools»Distributed System Manager。這將打開一個窗口,您可以使用該視窗以各種方式(查看,部署,取消部署等)來管理共享變數。
- 在“Variable Manager”的“樹”視窗中,展開“My Systems”類別下的localhost項目。找到並展開ModbusDemoLibrary庫,然後選擇Coil1以在視窗右側顯示 Auto View。
- 現在,您可以在front panel 上切換Boolean按鈕,並在分佈式系統管理員中查看結果,如圖13所示。
圖13:在分佈式系統管理員中查看Coil1的值
請注意:分佈式系統管理員已隨LabVIEW 8.6一起提供。 LabVIEW的早期版本通過轉到Tools»Shared Variable»Variable Manager並將共享變數拖到“ Watched Variables:”視窗中來完成此操作。
使用Modbus Slave查看線圈值
在文檔的第一部分中,我們創建了一個Modbus Master,該Master將Boolean 值寫入Modbus線圈。該線圈值存儲在共享變數中,然後我們可以在分佈式系統管理員中看到該變數。在下一節中,我們將展示Modbus Slave如何讀取Master正在更新的線圈值。我們在第一部分中創建的Modbus Master正在尋找IP地址為127.0.0.1(localhost)的Modbus Slave。因此,如果我們想通過Modbus與Modbus Master通訊,我們需要在本地電腦上創建一個Modbus Slave。
- 在LabVIEW中,通過單擊Help»Find Examples打開NI Example Finder。
- 在NI Example Finder中,瀏覽至Toolkits and Modules» Datalogging and Supervisory Control» I/O Servers,雙擊Modbus Simulator.lvproj 。參閲圖16。
圖14:NI Example Finder中的Modus Simulator
- 從專案中打開ModbusSimulator.vi,然後運行它。
- 如果您的Modbus Master VI當前未運行,請運行它。兩者同時運行時,您會看到Modbus Simulator上的Digital 1 LED亮起,如圖15所示。
圖15:運行並顯示Coil1 true值的Modbus Simulator
- 單擊Modbus Simulator上的“Quit”,然後按Ctrl + E切換到block diagram。
- 在block diagram上,注意正在使用共享變數讀取Modbus地址000001。該共享變數連接到Modbus Master 的Coil1值。
圖16:Modbus Simulator Block Diagram
額外挑戰
為了更好地理解Modbus Master和Slave之間的關係,一個有幫助的挑戰是修改Modbus Master程式以讀取和控制Modbus Simulator中的其餘值。您需要在ModDemoProject中將綁定的共享變數添加到Modbus I/O伺服器。