組態的腳本
『壹』 組態軟體腳本:
305} --灌1則自動關閉
『貳』 mcgs組態腳本程序怎麼寫
你應該具體點指定一個問題,問題描述太籠統了。
圖片案例分析:
如果開關型變數A的值等於1,那麼就啟動1號定時器計時,同時將定時器的實時值賦給數值型變數Data,如果開關型變數A的值不等於1,那麼就停止定時器工作。望採納!
『叄』 傑控組態軟體腳本怎樣學習
摘要 很高興為您解答親 大多數組態軟體腳本不具備動態創建對象的功能,也不支持自定義類型,僅僅是基本的操作邏輯,所以學起來和編程相比要簡單的多,主要是在描述你的操作行為。。。
『肆』 各種組態軟體裡面的腳本編程怎麼學
大多數組態軟體腳本不具備動態創建對象的功能,也不支持自定義類型,僅僅是基本的操作邏輯,所以學起來和編程相比要簡單的多,主要是在描述你的操作行為。。。
所有腳本和語言都有最基本的運算語法,本質幾乎沒什麼差別,主要是基於不同的語言語法規則,寫法上有區別。。。基本邏輯運算,加減乘除賦值,布爾邏輯,位邏輯,條件判斷if,
條件循環while,次數限定循環for,也就這些,很多腳本中連自定義函數概念都沒有,統統是某事件下的執行腳本。。。
腳本,除了基本語法(一通百通的東西), 就是對象和方法。。。
通常腳本會定義許多種對象(任何變數,控制項,報警等等能被你虛擬的看成被操作的有存在感的個體都是對象)。。。 方法就是操作對象用的函數,因為不是所有操作都可以通過給對象賦值簡單的達到目的。。。會存在由軟體提供的特殊操作函數(方法)。。。
你要掌握的無非就是能夠操作的對象有哪些(組態軟體的對象絕大多數都是組態時組態的,很少有動態生成的(正常的編程語言對象都是動態靠代碼生成的),組態軟體通過組態操作簡化這個過程),你如說西門子PLC,你從來沒有常識也不能嘗試,靠一個代碼去創建一個組態,添加一個模塊,或者工藝對象,都是靠組態實現,一開始就創建好了。。。
除了學習如何組態外,就是學習這些組態對象提供的操作方法,或可修改的屬性,操作對象的方法也僅僅就是這些。。。
學腳本其實就是學,組態對象的操作方法,有哪些屬性可以改,改完是什麼結果,提供哪些操作函數,怎麼用,無非就這些,至於要實現的功能,那屬於編程邏輯,到哪都一樣,只可根據經驗意會,沒到具體問題上沒法說的清楚。。。
當然對於有真正編程語言基礎的,尤其是高級語言java, c++,c#基礎的人學這些,都是很簡單的,也會覺得腳本編程束手束腳完全可以更開放些,不過只是因為組態軟體開發者為了使用安全性,和易操作性,編程者的使用受很大限制。。。
『伍』 誰能跟我說一下力控組態軟體的腳本編輯用什麼語言編寫
這個腳本是類VC的,其實沒什麼要求。。。。學過VB的就會了 很簡單的,你可以打開demo工程里,看看那裡面怎麼寫的。另外腳本可以寫到應用程序中,也可以寫到窗口腳本,還可以寫到按鈕左鍵動作里等等,區別是執行的條件不一樣而已。
舉例:
IF IsWeb() == 1 THEN
ELSE
IF COD_start_meas.PV == 0 THEN
sys_time = StrTime($Curtime,1);
COD_run_log = "待機[Ready]";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
COD_run_log = "";
ENDIF
IF COD_start_meas.PV == 1 THEN
sys_time = StrTime($Curtime,1);
COD_run_log = "就緒[Ground]";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
COD_run_log = "";
ENDIF
IF COD_start_meas.PV == 2 THEN
sys_time = StrTime($Curtime,1);
COD_run_log = "清洗[Clean]";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
COD_run_log = "";
ENDIF
IF COD_start_meas.PV == 4 THEN
sys_time = StrTime($Curtime,1);
COD_run_log = "校正[Calib.]";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
COD_run_log = "";
IF COD_meas_flag.PV == 1; THEN
COD_meas_flag.PV = 0;
sys_meas_flag.PV = 0;
COD_cal_flag.PV =1;
sys_run_log = "COD啟動測量後進入校正狀態,觸發開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#sys_active_T.Start(); //開啟觸發定時器
ENDIF
ENDIF
IF COD_start_meas.PV == 8 THEN
sys_time = StrTime($Curtime,1);
COD_run_log = "啟動[Start]";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
COD_run_log = "";
ENDIF
IF COD_start_meas.PV == 32 THEN
sys_time = StrTime($Curtime,1);
COD_run_log = "測量[meas.]";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
COD_run_log = "";
sys_meas_time.DESC = StrTime($Curtime,1); //系統啟動測量時間
sys_run_log = "測量時間緩存...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
ENDIF
IF COD_start_meas.PV == 64 && COD_meas_flag.PV == 1 THEN
sys_time = StrTime($Curtime,1);
COD_run_log = "排空[Empty]";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
COD_run_log = "";
sys_run_log = "COD測量結束, " + IntToStr(PLC_start_sampl.PV,10) + "號取樣口數據打包存入報表...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
IF PLC_start_sampl.PV ==1 THEN
COD1_db.PV = COD_VALUE.PV;
sys_meas_time1.DESC = sys_meas_time.DESC;
IF ( point2_flag.PV || point3_flag.PV || point4_flag.PV ) == 0 THEN
sys_run_log = "系統循環測量周期定時器開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#sys_interval_T.Start(); //系統循環測量周期定時器開啟
ELSE
sys_run_log = "CODmax測量間隔定時器開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#point_interval_T.Start(); //CODmax測量間隔定時器開啟
ENDIF
//ELSE
//COD1_db.PV = 0;
ENDIF
IF PLC_start_sampl.PV ==2 THEN
COD2_db.PV = COD_VALUE.PV;
sys_meas_time2.DESC = sys_meas_time.DESC;
IF ( point3_flag.PV || point4_flag.PV ) == 0 THEN
sys_run_log = "系統循環測量周期定時器開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#sys_interval_T.Start(); //系統循環測量周期定時器開啟
ELSE
sys_run_log = "CODmax測量間隔定時器開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#point_interval_T.Start(); //CODmax測量間隔定時器開啟
ENDIF
//ELSE
//COD2_db.PV = 0;
ENDIF
IF PLC_start_sampl.PV ==3 THEN
COD3_db.PV = COD_VALUE.PV;
sys_meas_time3.DESC = sys_meas_time.DESC;
IF point4_flag.PV == 0 THEN
sys_run_log = "系統循環測量周期定時器開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#sys_interval_T.Start(); //系統循環測量周期定時器開啟
ELSE
sys_run_log = "CODmax測量間隔定時器開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#point_interval_T.Start(); //CODmax測量間隔定時器開啟
ENDIF
//ELSE
//COD3_db.PV = 0;
ENDIF
IF PLC_start_sampl.PV ==4 THEN
COD4_db.PV = COD_VALUE.PV;
sys_meas_time4.DESC = sys_meas_time.DESC;
sys_run_log = "系統循環測量周期定時器開啟...";
SQLInsert(ConnectID,"dlhb_sys_log","sys_info");
sys_run_log = "";
#sys_interval_T.Start(); //系統循環測量周期定時器開啟
//ELSE
//COD4_db.PV = 0;
ENDIF
IF sys_meas_flag.PV == 1 THEN
sys_meas_log.DESC = IntToStr(PLC_start_sampl.PV,10) + "號取樣口自動測量";
ENDIF
IF sys_meas_flag.PV == 2 THEN
sys_meas_log.DESC = IntToStr(PLC_start_sampl.PV,10) + "號取樣口手動測量";
ENDIF
SQLInsert(ConnectID,"dlhb_meas_group","meas_group");
sys_meas_log.DESC = "";
COD_meas_flag.PV = 0;
sys_meas_flag.PV = 0;
ENDIF
ENDIF
『陸』 力控組態軟體中的腳本編輯器是什麼怎麼理解
力控我沒用用過 不過跟MCGS和亞控等組態軟體應該一樣
腳本編輯器就是當你運行你設計的組態軟體時立即在後台執行腳本里的語句
可以理解C++中的成全局變數
『柒』 mcgs組態軟體腳本用不用自己編寫
必須用,現在軟體沒智能到你想干什麼,它自己就給你出程序了。而是你通過程序告訴它,你想干什麼。
望採納。。。。
『捌』 我想學組態。但是裡面的有腳本編輯 我想問是C51復雜還是腳本復雜
如果想學都不復雜
你可以看看這個網站的視頻。也許對你會有用
希望可以幫到你
記得採納我的喲
『玖』 mcgs組態環境中,以下腳本是什麼意思
MCGS(Monitor and Control Generated System,監視與控制通用系統)是北京昆侖通態自動化軟體科技有限公司研發的一套基於Windows平台的,用於快速構造和生成上位機監控系統的組態軟體系統,主要完成現場數據的採集與監測、前端數據的處理與控制,可運行於Microsoft Windows 95/98/Me/NT/2000/xp等操作系統。
『拾』 mcgs組態軟體腳本編程
在第一個掃描周期,程序從上至下執行,如果條件成立,執行相應的語句,不成立執行下面的語句,直至程序的末尾,輸出相應的值;接著進行第二個周期的掃描,利用第一個周期的返回值和每個語句進行比較,同樣的步驟執行完畢;依次循環,知道所有的條件都不成立,返回最終的結果輸出。你可以試驗一下,就明白了,每次增加一條語句,不要把所有的都寫上。表達不夠好,希望能幫助你。
補充:你可以在組態環境下打開運行策略的窗口,根據你的需要你可以寫啟動策略或者循環策略,一般都是寫循環策略,也可以新建自定義策略。以循環策略為例,你點擊後打開,在界面上點右鍵,新增策略行,然後雙擊執行條件,在資料庫里新建一個變數DO點吧,設置好啟動條件,然後右鍵點擊第三個方塊——策略工具箱——腳本程序,拖到方塊上,再雙擊方塊,就會彈出編腳本程序的串口,把你需要的哪些語句寫進去,寫幾條都可以,每個周期他都要掃描一次,執行成立的表達式,輸出結果。(另外,你還需要在資料庫中定義wheel這個變數,為數值型即浮點型的。)
比如說只寫:if wheel>600 then wheel=wheel-600,這個表達式,你對變數wheel輸入600,他就不執行,寫601,結果就是601-600=1,同樣的道理,你寫1805,輸出的結果就是5.可以隨便增加語句,只執行判斷條件非零的語句。
不知道這次說清楚沒,希望能多交流。
再補充:先說一下組態,簡單一點,所謂組態就是就是一種可視化的程序運行環境,一般用於工業電力化工等行業的自控方面,是一種人機交互,機機交互的媒介,(這是我自己下的定義)。它基於Windows操作系統和相關的VB或者C語言的基礎上開發而成。他可以讓人們自由的編輯,瀏覽,控制相關的設備等。也就是SCDA。
既然如此,在開發的時候它就可以利用這些編程語言,對它的一些控制項(操作對象等)進行編程和定義。你提到的問題中的 Wheel 就是你要操作的對象,也就是組態中你需要定義的一個變數,既然是變數,他的值就是可以改變的,如果你對他賦一個初值,並且觸發了程序運行的條件,他就會根據後台程序的執行結果(每個掃描周期)返回對應的值,只要後台程序一直在運行,並且滿足你設定的條件,他就會不停的改變自己的值。
對於你上面寫的那些條件,也叫程序,組態系統在每個周期都要把每一條語句執行一遍,從上到下,從左到右,如果第一條成立,就返回第一條語句的Wheel的結果,然後在執行下一條語句的時候把上一條的Wheel結果作為後一條語句的初值,繼續判斷條件,成立則根據你的算式算出一個新的結果送給下一條語句,不成立的話則跳過這一條,繼續把剛才的結果作為初值鄉下傳。
快停電了,就說這么多吧QQ44710149,有機會多交流