Robotstudio軟件除了支持Add-Ins插件的二次開發以外,還支持Smart組件的二次開發。開發語言同樣是基於.NET框架的C#語言或VB語言。Smart組件是Robotstudio軟件中實現高級仿真功能的智能組件,軟件自身提供的Smart組件包含信號與屬性、傳感器、建模、運動等子對象組件。當軟件自帶的Smart組件無法滿足仿真需求的時候,我們就可以通過對Robotstudio軟件的二次開發,開發出滿足需求新的Smart組件。本期,再來為大家介紹一下Robotstudio軟件中Smart組件的開發方法,我們還是從實現“Hello Word!”消息輸出開始。
Robotstudio軟件版本:RobotStudio 6.08
SDK版本:RobotStudio SDK.6.08
開發軟件版本:Microsoft Visual Studio Professional 2019
一、開發環境配置
開發環境的搭建比較簡單,在上一篇文章《基於C#語言的Robotstudio軟件二次開發基礎》中已經介紹過了,小夥伴可在文章列表中查看一下,這裡不再贅述。
二、開發項目創建
1.創建新項目,項目模板選擇ABB機器人提供的Smart組件二次開發模板“Robotstudio 6.08 Smart Component”。
2.配置新項目時可以對項目進行命名,修改項目保存位置。
3.項目創建成功後,軟件代碼編輯區會自動打開SmartComponent1.xml、CodeBehind.cs兩個文件。若是自動打開,可以在右側的“解決方案資源管理器”對話框中雙擊兩個相應的項目文件打開。
說明:自動生成的*.xml代碼編輯文件主要用於Smart組件的功能屬性設置,如Smart組件的外觀、標題、離散變量與連續變量的屬性等,也可以認為是Smart組件前臺開發。*.cs代碼編輯文件主要用於Smart組件的功能實現,如信號置位後的輸出響應等,也可以認為是Smart組件的後臺開發。
三、代碼編寫
1.在SmartComponent1.xml代碼編輯窗口中,刪除下圖中紅色方框中的代碼,並修改箭頭所指位置處的“SampleSignal”為“Button”。紅色方框中的代碼分別是設置Snart組件的連續變量屬性、綁定信息屬性以及圖形化屬性設置,本例暫時不需要,因此刪除。
Signals用於設置Smart組件的信號屬性,代碼的含義:設置I/O信號名稱為SampleSignal,信號類型為數字量輸入。
SmartComponent1.xml完整程序代碼如下所示:
<code> President /<code>
2.CodeBehind.cs代碼編輯窗口中,同樣刪除下圖紅色方框中的代碼,然後在紅色箭頭所指位置處編寫如下代碼:
CodeBehind.cs完整代碼如下所示:
<code>using System; using System.Collections.Generic; using System.Text; using ABB.Robotics.Math; using ABB.Robotics.RobotStudio; using ABB.Robotics.RobotStudio.Stations; namespace SmartComponent1 { /// /// Code-behind class for the SmartComponent1 Smart Component. /// /// /// The code-behind class should be seen as a service provider used by the /// Smart Component runtime. Only one instance of the code-behind class /// is created, regardless of how many instances there are of the associated /// Smart Component. /// Therefore, the code-behind class should not store any state information. /// Instead, use the SmartComponent.StateCache collection. /// public class CodeBehind : SmartComponentCodeBehind { /// /// Called when the value of an I/O signal value has changed. /// /// Component that owns the changed signal. /// Changed signal. public override void OnIOSignalValueChanged(SmartComponent component, IOSignal changedSignal) { if (changedSignal.Name == "Button") { Logger.AddMessage(new LogMessage("Hello World!")); } } } } /<code>
四、項目編譯
項目編譯之前需要對項目“生成事件”進行相關設置,否則編譯時會出現一些錯誤。
1.VS軟件中上方的“項目”菜單下點擊“SmartComponent1屬性”,在打開的對話框中左側屬性條中點選“生成事件”,然後在生成後事件命令行中將原TargetPath文件路徑信息修改為D:\Program Files (x86)\ABB Industrial IT\Robotics IT\RobotStudio 6.08\Bin\LibraryCompiler.exe。由於Smart組件開發程序編譯過程中需要依賴LibraryCompiler.exe,將一些生成文件複製到項目文件目錄中,因此,這裡需要將LibraryCompiler.exe的文件目錄添加進來。LibraryCompiler.exe的文件目錄是Robotstudio軟件安裝目錄的bin文件夾。若是Robotstudio軟件安裝時未修改安裝位置,則這裡無須再修改生成事件,直接編譯生成即可。
2.設置完成後編譯項目,編譯成功後在項目文件目錄中生成*.rslib 格式的Smart組件庫文件,此文件即為我們二次開發的Smart組件,包含二次開發的所有功能。
五、運行測試
1.打開Robotstudio軟件,新建一個機器人系統,系統選項保持默認即可。
2.軟件“基本”菜單欄下,“導入模型庫”按鈕下拉菜單中點擊“瀏覽庫文件”,瀏覽到編譯生成的*.rslib 格式Smart組件庫文件SmartComponent1,並將其打開。
3.在彈出的驗證Smart組件提示框中點擊是,Smart組件被加載進來。
4.左側佈局瀏覽樹中,右擊加載進來的Smart組件,打開組件屬性窗口,可以看到,我們開發的Smart組件中顯示Button信號按鈕。
5.點擊“Button”按鈕,信號被置位,信號指示燈被點亮,同時在軟件下方的信息輸出窗口中顯示“Hello World!”。
The End