WinCC OA-C#-開發一個EricManager


Hello,小伙伴們大家好,最近在忙着制作新的博客及web,更新稍微慢了點,不過不要擔心,答應大家的二次開發課程一定會來的,請大家關注我們哦

今天給大家說一下WinCC OA 使用C#開發一個manager的方法,同時給大家詳解一下官方的demo

開發環境搭建

安裝 visual studio 2019 社區版,ps 社區版是免費的哦

image

勾選 .NET 及C++ 兩個模塊 進行安裝

image

創建manager

根據自己系統運行相應的命令行工具,筆者的系統環境為Win10 64 bit

(注意:安裝的2019 時候會連帶VS2017 一起安裝)

1)新增環境變量API_ROOT 指向WinCC OA安裝目錄下的api文件夾

image

2)使用管理員身份運行上圖命令行工具

image

3)切換目錄到WinCC _OA\3.**\api文件夾

image

4) 先使用checkAPIenv測試下開發環境  我這邊測試 環境均為good

image

5) 使用命令newWCCOACSharpManager.cmd新建ericTest manager

image

6) Now,在WinCC OA的api文件夾下 WinCC  OA 幫我們創建了一個ericTest 項目

image

7) 使用 VS 2019 打開ericTest 項目

image

簡單給大家分析下 Program.cs 代碼

// 改程序作用是監聽 DPE1的值,當DPE1的值改變的時候 設置 DPE2
    class Program
    {
        static void Main(string[] args)
        {
            // 創建Manager
          OaManager myManager = OaSdk.CreateManager();
            // 初始化Manager 配置
            myManager.Init(ManagerSettings.DefaultApiSettings, args);
            // 開啟Manager  同時連接OA 項目
            myManager.Start();
            //配置dpNameSet關聯ExampleDP_Arg2. 配置dpNameConnect關聯ExampleDP_Arg1.
            // Read from config File Section myCsTest. 
            // ReadString(section, key, defaultval)
          OaConfigurationFile file = new OaConfigurationFile();
          string dpNameSet = file.ReadString("myCsTest", "dpNameSet", "ExampleDP_Arg2.");
          string dpNameConnect = file.ReadString("myCsTest", "dpNameConnect", "ExampleDP_Arg1.");
            // Get Access to the ProcessValues
          var valueAccess = myManager.ProcessValues;
            // 創建valueAccess的訂閱對象
            var mySubscription = valueAccess.CreateDpValueSubscription();
            // 將dpNameConnect 添加到訂閱對象中
            mySubscription.AddDp(dpNameConnect);
            // 添加訂閱觸發的代理方法
            mySubscription.SingleValueChanged += (vcsender, vce) =>
            {
                // vce.Value can be null in error case 
                if(vce.Value == null)
                  return;               
                Console.WriteLine("Received value: " + vce.Value.DpValue.ToString() + " for DPE: " + vce.Value.DpName.ToString());
                //將值設置到dpNameSet
                valueAccess.SetDpValue(dpNameSet, vce.Value.DpValue.ToDouble());
                Console.WriteLine("Set value: " + vce.Value.DpValue.ToString() + " also on DPE: "+dpNameSet);
            };
            // If FireChangedEventForAnswer is set to true, the ValueChanged Event is alsed fired for the first answer
          mySubscription.FireChangedEventForAnswer = true;
            // Start the subscription and as an additional option wait for the first anwer as result value
          mySubscription.StartAsync();
    }
}</span></pre></div>

7) 編譯程序,將release后的程序copy 到bin文件夾

image

8)新建WCCOAericTest manager 設置手動啟動

image

9) 啟動Manager 測試ExampleDP_Arg2. /ExampleDP_Arg1.

image

OK  很成功 更多函數 請參閱 WinCC OA C# 二次開發手冊

 

更多精彩,碼上關注

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM