Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

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”。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

2.配置新項目時可以對項目進行命名,修改項目保存位置。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

3.項目創建成功後,軟件代碼編輯區會自動打開SmartComponent1.xml、CodeBehind.cs兩個文件。若是自動打開,可以在右側的“解決方案資源管理器”對話框中雙擊兩個相應的項目文件打開。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

說明:自動生成的*.xml代碼編輯文件主要用於Smart組件的功能屬性設置,如Smart組件的外觀、標題、離散變量與連續變量的屬性等,也可以認為是Smart組件前臺開發。*.cs代碼編輯文件主要用於Smart組件的功能實現,如信號置位後的輸出響應等,也可以認為是Smart組件的後臺開發。

三、代碼編寫

1.在SmartComponent1.xml代碼編輯窗口中,刪除下圖中紅色方框中的代碼,並修改箭頭所指位置處的“SampleSignal”為“Button”。紅色方框中的代碼分別是設置Snart組件的連續變量屬性、綁定信息屬性以及圖形化屬性設置,本例暫時不需要,因此刪除。

Signals用於設置Smart組件的信號屬性,代碼的含義:設置I/O信號名稱為SampleSignal,信號類型為數字量輸入。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

SmartComponent1.xml完整程序代碼如下所示:

<code>

	
		
			President
			
		
		
			
				
			
			
				
			
		
	
/<code>

2.CodeBehind.cs代碼編輯窗口中,同樣刪除下圖紅色方框中的代碼,然後在紅色箭頭所指位置處編寫如下代碼:

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

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軟件安裝時未修改安裝位置,則這裡無須再修改生成事件,直接編譯生成即可。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

2.設置完成後編譯項目,編譯成功後在項目文件目錄中生成*.rslib 格式的Smart組件庫文件,此文件即為我們二次開發的Smart組件,包含二次開發的所有功能。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

五、運行測試

1.打開Robotstudio軟件,新建一個機器人系統,系統選項保持默認即可。

2.軟件“基本”菜單欄下,“導入模型庫”按鈕下拉菜單中點擊“瀏覽庫文件”,瀏覽到編譯生成的*.rslib 格式Smart組件庫文件SmartComponent1,並將其打開。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

3.在彈出的驗證Smart組件提示框中點擊是,Smart組件被加載進來。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

4.左側佈局瀏覽樹中,右擊加載進來的Smart組件,打開組件屬性窗口,可以看到,我們開發的Smart組件中顯示Button信號按鈕。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

5.點擊“Button”按鈕,信號被置位,信號指示燈被點亮,同時在軟件下方的信息輸出窗口中顯示“Hello World!”。

Robotstudio軟件二次開發:基於C#語言的Smart組件開發基礎

The End

上一篇:基於C#語言的Robotstudio軟件二次開發基礎


分享到:


相關文章: