在利用力控進行資料庫操作時,可能因為少許的錯誤導致力控與資料庫之間不能交互,因此採用sqlLastError()函數顯示最後一條資料庫操作錯誤,通過該錯誤提示即可逐步完成資料庫操作
一、力控組態和資料庫交互時可能出現問題的地方:
1、如果利用關系型資料庫SQL Server
2000存入力控產生的數據,必須在組態中建立綁定表。在建立過程中,欄位名必須和SQL Server
2000中數據表中的欄位名字相同,否則不能數據的傳遞;
2、建立的綁定表的名字最好不要和SQL Server 2000中數據表的名字相同,否則也不能傳遞數據;
3、建立資料庫操作時,可以在動作條件中寫入腳本,寫腳本時應注意綁定表和SQL Server
2000中數據表的前後關系,應該是SQL Server 2000中數據表在前邊,綁定表在後邊才可以。
二。檢查資料庫操作錯誤的時候,可以利用下邊方法進行:
1、首先在力控組態中定義一個字元型的中間變數ErrorMe
2、打開腳本編輯器,例如在寫條件動作的腳本時,選擇SQLLastError()函數,確定把最後一條資料庫操作錯誤存放到ErrorMe中;利用MsgBox()函數以對話框的形式顯示錯誤信息即可
SQLLastError(ErrorMe);
MsgBox(ErrorMe)
Ⅱ 力控組態軟體腳本邏輯與和邏輯或怎麼編寫
須先安裝三菱的MX Component 軟體,由於此驅動支持多種通訊方式(比如A 系列編程口、Q 系列編程口等),只要是在Communication Setup Utility 中能夠配置成功的設備及通信方式,就可以使用該驅動程序進行數據採集。力控組態軟體如何與三菱PLC通迅
Ⅲ 誰能跟我說一下力控組態軟體的腳本編輯用什麼語言編寫
這個腳本是類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++中的成全局變數
Ⅳ 請問力控里的啟動策略編輯器在哪呀 我是7.0的~
你是說的腳本吧,在全局腳本里,全局腳本--動作--
Ⅵ 力控組態軟體,用歷史報表時,如何將數據導出到excel
在報表旁邊做個按鈕,按鈕名稱叫導出excel
雙擊按鈕 左鍵動作打開腳本編輯器,在腳本編輯器中的左邊倒數第好像,有窗口列表,雙擊當前打開的窗口,也就是打紅勾的畫面名稱,會拉出來這個畫面下的所有控制項,控制項前面有+,可以拉出這個控制項的函數屬性,然後你找到你的那個報表名稱,應該是report之類的,然後拉出下面的函數,有導出excel,htm,csv等等。。。。。。。。
再不會的話找力控的人。。。。。。
Ⅶ 力控如何設計一個開門關門的畫面,腳本如何編輯,求指點!
如圖所示(7個圖),先放上兩個矩形,兩個按鈕,和三個文本。設置兩個文本為固定字元。設置兩個按鈕,為按下開松開關,變數分別為open.pv和close.pv。設置第三個標簽為模擬輸出,變數為data.pv。設置兩個矩形為水平拖動,依次設置參數,如圖5,6。然後編輯工程運行腳本。如圖7。完成。
望採納。。。。。。
Ⅷ 三維力控軟體的歷史報表怎樣才能轉存為Excel文件或其他文件
在畫面上添加一個增強型按鈕,選取左鍵動作,彈出腳本編輯器,在Report下面有函數,編寫腳本函數就可以導出CSV或Excel文件了。
Ⅸ 怎麼通過力控軟體刪除sql資料庫中的單個內容 函數腳本怎麼編寫
1、必須先安裝Microsoft Office Access 2003,和SQL Server資料庫。
2、用Access 2003打開動資料庫,打開後按工具欄——資料庫實用工具——轉換資料庫——轉換為2002-2003格式,把資料庫轉換成2003格式。
3、轉換完成後再用Access 2003打開,打開後按工具欄——資料庫實用工具——升遷向導——新建資料庫——填寫SQL資料庫登陸名稱、密碼和要新建的資料庫(准備轉成新的資料庫),按下一步,按「 》」鍵,再按下一步,選取所有選項,再按下一步,選擇「不對應用程序作任何改動」,再按完成。
4、打開SQL企業管理器——資料庫---選中相應的資料庫---右鍵所有任務-----生成SQL腳本——常規——全部顯示——編寫全部對象腳本——確定(記住存放的位置)。
5、用記事本打開剛才生成的SQL腳本,在編輯欄——替換——查找內容為「smalldatetime」替換為「datetime」——替換全部;完成後再在編輯欄——替換——查找內容為「nvarchar」替換為「varcha」——替換全部,完成後保存退出。
6、打開SQL企業管理器——資料庫——點擊新建的資料庫,然後在工具欄——SQL查詢分析器——文件——打開——「剛才生成的SQL腳本」——查詢——執行,然後關閉窗口。
7、再回到SQL企業管理器——資料庫——點擊新建的資料庫,然後打開工具欄——資料庫轉換服務——導入數據——下一步——數據源「Microsoft Access」文件名「為舊的acc資料庫」——下一步——再下一步——從源數據復製表和視圖——下一步——全選——下一步——立即運行——下一步——完成。
8、最後補充:
(1)由於SQL2000裡面沒有"自動編號",所以你的以"自動編號"設置的欄位都會變成非空的欄位,這就必須手工修改這些欄位,並把他的"標示"選擇"是",種子為"1",增量為"1",
(2)另外,ACCESS2000轉換成SQL2000後,原來屬性為"是/否"的欄位將被轉換成非空的"bit",這時候你必須修改成自己想要的屬性了;
(3)另外,大家要注意對時間函數的把握.ACCESS與SQL是有很多不同的.
根據以上3點,再回到SQL企業管理器——資料庫——點擊這個資料庫下新建的資料庫,將所有表的欄位屬性根據以上3點進行修改
補充說明:
自動增加欄位需要重寫。在access中經常使用的自動編號欄位,導入到mssql後,他並不是自增型的int,需要手工設置,把導入後的自動編號欄位的標識的「否」改為「是」,「種子」和「遞增量」都為「1」,才能成為自動編號
所有的默認值都丟失了。主要是數字類型和日期類型
所有now(),time(),date()要改成getdate()
所有datediff(『d『, time1, time2)要改成datediff(day, time1, time2)
所有datediff(『ww『, time1, time2)要改成datediff(week, time1, time2)
所有datediff(『d『, time1, time2)要改成datediff(day, time1, time2)
在mssql server中,有許多保留字,在access中是沒有的,當你把數據導入到mssql的時候,問題就出來了。mssql在導入的時候,會自動給這些欄位(包括資料庫中的表名)加上「[欄位名]」,因此,你必須修改你的腳本,把相應的欄位名字(或者表名字)加上中括弧,或改變欄位名字為不是mssql的保留字
在用access關於時間的使用,大家喜歡使用「select * from aaaa while time="
Ⅹ 力控腳本如何去編制
力控腳本定義:
腳本語言,腳本語言或擴建的語言,是一種編程語言控制軟體應用程序。 「腳本」往往被視為有別於「程序」 ,執行獨立於任何其他的應用。在同一時間,他們是有別於核心代碼的應用,這是通常的書面在不同的語言,和現正接觸到最終用戶,使他們的行為的應用,以適應用戶的需要。腳本往往是,但並非總是解釋,從源代碼或「半匯編」 ,以位元組這是解釋,不同的應用,他們的相關,這是傳統的編制本土機器碼為系統上運行他們。腳本語言幾乎總是在嵌入式應用與它們相關的。
命名為「腳本」是來自書面腳本的表演藝術,在這種對話是訂下要發言,由人類行為者。早期的腳本語言通常被稱為一批語言或工作控制語言。例如早期的腳本語言的建立是為了縮短傳統的編輯-編譯-鏈接-運行的過程。
1.腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。
HTML通常用於格式化和鏈結文本。而編程語言通常用於向機器發出一系列復雜的指令。
2.腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些.
3.與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。
註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。
4.腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在.
腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。
5.腳本語言一般都是以文本形式存在,類似於一種命令.
舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件.
你為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,你的程序用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是腳本語言.
這是我的回答 祝你好運~~