日本福利一区_最近中文高清在线观看_免费黄色电影在线观看_亚洲天堂成人在线 - 91人人

用戶中心
· 企業空間 首頁 | 資訊 | 技術 | 產品 | 企業 | 直播 | 專題 | 智能制造 | 論壇| 在線研討會
天津昆侖縱橫自動化技術有限公司
企業空間 > 資料下載 > 正文
  • 上傳時間:2009/1/22 9:36:05
  • 下載次數:2256
  • 授權方式: 由提供單位免費提供,本站注冊用戶才可以下載此文件。注冊  登錄
  • 詳細介紹:
    基于HMIBuilder 的TCL 腳本學習
    北京縱橫科技
    2008年
    Dlh
    在線瀏覽:http://www.hmibuilder.com/bbs/Topic.asp?id=26&BoardID=2&TB=1
    引言:
    HMIBuilder 內嵌TK/Tcl83標準庫,尤其是HMIBuilder 通用版全面支持TCL 語言,下面是我們在
    HMIBuilder 基礎上的各種應用測試,希望對大家有所幫助。
    注意:對已HMIBuilder 嵌入版,由于平臺兼容性問題,有些Tcl 命令沒有移植,比如文件操作!下面腳
    本都在通用版中測試通過。
    正文
    ?? Tcl腳本串口操作測試
    (HMIBuilder 通用版支持,嵌入版目前不支持!)
    #配置串口
    #-------------------------------------------------------------------------------#
    proc ComSetup {ComPort ComRate} {
    set iChannel [open $ComPort w+]
    set rate $ComRate
    fconfigure $iChannel -mode $ComRate,n,8,1
    fconfigure $iChannel -blocking 0
    fconfigure $iChannel -buffering none
    fileevent $iChannel readable ""
    return $iChannel
    }
    #-------------------------------------------------------------------------------#
    # 讀取數據
    #-------------------------------------------------------------------------------#
    proc GetData {iChannel} {
    global output
    update
    after 2000
    set cap [read -nonewline $iChannel]
    return "$cap"
    }
    #-------------------------------------------------------------------------------#
    # 發送數據
    #-------------------------------------------------------------------------------#
    proc SendCmd {channel command} {
    global output debug
    set letter_delay 10
    set commandlen [string length $command]
    for {set i 0} {$i < $commandlen} {incr i} {
    set letter [string index $command $i]
    after $letter_delay
    puts -nonewline $channel $letter
    #if {$debug(dutConfig) == 1} {puts -nonewline $output "$letter"}
    }
    after $letter_delay
    puts -nonewline $channel "\n"
    #if {$debug(dutConfig) == 1} {puts $output ""}
    after 500
    flush $channel
    }
    #-------------------------------------------------------------------------------#
    # 測試代碼
    #-------------------------------------------------------------------------------#
    set com "com6" ;
    set channelRate 9600;
    #close $channelId
    set channelId [ComSetup $com $channelRate]
    set buffer "test by dlh"
    SendCmd $channelId $buffer;
    sleep 50000
    set data [GetData $channelId]
    messagebox "Get" $data
    ?? 進制的轉換
    #d 十進制o 八進制x 十六進制X 十六進制大寫
    set age 10
    set msg [format "%X" $age];
    set msg [format "%x" $age];
    set msg [format "%o" $age];
    set msg [format "%d" $age];
    #10進制數轉換為2進制16位顯示
    proc dec2bin {dec change} {
    set bin ""
    set a 1
    while {$a>0} {
    set a [expr $dec/$change]
    set b [expr $dec%$change]
    set dec $a
    set bin $b$bin
    }
    set len [string length $bin]
    #如果8位顯示,請修改16為8
    if {$len < 16 } {
    #如果8位顯示,請修改16為8
    for {set i 0} {$i<[expr 16-$len]} {incr i} {
    set bin 0$bin
    }
    }
    return $bin
    }
    set sss [ dec2bin 16 2]
    set_edit_text "ObjID" $sss
    Learning,sporting and fighting!
    ?? Tcl數組
    理解Tcl 數組的捷徑是,將它們視作與Perl 散列相同的東西。Tcl 數組不是用數字建立下標的線性數據
    結構,除非選擇對數據強加那種解釋。盡管帶空格的字符串需要用引號括起或需要一個變量引用,但下標
    (或鍵)可以是任何字符串。
    正如一般的變量一樣,使用set 命令初始化數組,如左邊所示。圓括號內是給出的下標部分。請注意,圓
    括號不象花括號或雙引號那樣提供分組。一旦初始化為數組,就不能將變量作為單一變量來訪問。如左邊
    列表底部所示,數組元素也可以是列表。
    set i 1
    set j 10
    set array($i,$j) 3.14159
    incr j
    set array($i,$j) 2.71828
    ?? switch結構測試
    set x c # 請改變x 的內容, 通過Debugger 查看執行路線!
    set t0 0
    set t1 0
    set t2 0
    set t3 0
    set a 1
    set b 2
    set c 3
    switch $x {
    a {incr t0}
    b {incr t1}
    c {incr t2}
    default {incr t3}
    }
    ?? 如何獲取每天早晨00點的時間值.
    #初始化時間
    set t [get_current_time]; #通過HMIBuilder 接口,獲取系統當前時間
    set tStart [expr $t - ( $t % (60*60*24)) - 60*60*8 ];# - 60*60*8 就是減去8小時,為了到0
    點;
    set tEnd [expr $tTime + 60*60*24]; #獲取一天的結束時間
    messagebox $tStart $tEnd ;
    Learning,sporting and fighting!
    ?? 獲取32位整型數的bit位,如何處理
    最佳方案:
    set val [expr {int([get_analog_value “ sta0 ” “ val0 ” ])}];
    set c [expr {$val & (1 << 7)}]; #取val 的第7位
    set_status_val “ sta0 ” “ status0 ” [expr {$c ? 1 : 0}]; #設置對應狀態量
    set val [expr {$val | (1 << 7)}]; #將val 的第7位置位
    set val [expr {$val & (~(1 << 7))}]; #將val 第7位復位
    其他解決方法:
    set bit 1;
    set data 16;
    set b [expr { $data ^ int (pow(2,$bit))}]; #data的bit位置1
    messagebox "data 的bit 位置1后為" $b;
    set bit 2;
    set data 15;
    set c [expr { $data&int(pow(2,$bit))}]; #data的bit位清0
    messagebox "data 的bit 位清0后為" $c;
    Learning,sporting and fighting!
    ?? 如何通過腳本實現一個開關量數據的取反?
    建立一個變量sta0站的開關量status0!
    在按鈕中,采用下面腳本,實現取反操作:
    set a [get_status_value "sta0" "status0" ]
    set a [expr {!$a }] #取反操作
    set_status_value "sta0" "status0" $a
    ?? 工程轉化的實現:
    在HMIBuilder 中,我們經常通過Y=kX+b 的方式,進行工程轉換,也就是線性轉化。
    但是,在實際工程中,經常通過輸入量的最大/最小值和轉換量的最大/最小值的關系進行轉換。
    那么如何通過輸入量的最大/最小值(MaxI /MinI )和轉換量的最大/最小值(MaxO /MinO )算出公
    式Y(轉換值)=kX(輸入值)+b 中的k 和b 呢?
    下面就是程序代碼:
    set MaxI [get_edit_text "edit_MaxI"];
    set MinI [get_edit_text "edit_MinI"];
    set MaxO [get_edit_text "edit_MaxO"];
    set MinO [get_edit_text "edit_MinO"];
    set k [expr ($MaxO-$MinO)/($MaxI-$MinI) ];
    set b [expr $MinO-$k*$MinI]
    messagebox $b $k;
    set In [get_edit_text "edit_In"];
    set Out [expr $k*$In+$b]
    messagebox "" $Out
    ?? Everything is string的感悟
    TCL 腳本的特點是Everything is string,使TCL 腳本命令的參數的變量字符串可以通過
    字符串命令動態獲得,這樣減少了判斷。
    set val [get_current_select "combox_1025" 1]; #從下拉框獲取站號
    set modle [format "sta%d" $val];
    set val [get_current_select "combox_1026" 1]; #從下拉框獲取通道號
    set channel [format "analog%d" $val];
    set a [get_analog_para $modle $channel "description"];#動態對站和通道的參數進行設置。
    也就是,通過窗口的啟動腳本將窗口中的下拉選擇菜單初始化,并根據初始化的菜單,
    初始化模塊通道的各個參數顯示和設置構件。然后,在下拉菜單和設置保存按鈕中,當
    操作結束,根據選擇的模塊和通道更新當前參數的刷新。
  • 企業介紹
天津縱橫公司以人機界面產品組合為核心,為專屬行業客戶群提供最佳的系統級解決方案,我們把對行業的關注轉化為實際產品的提供,始終關注自動化市場中的應用需求,努力成為成為工業自動化客戶群首選的HMI系統級解決方案提供商。  縱橫科技提…  更多>>
  • 產品分類
  • 該公司暫未設置產品類別
  • 聯系方式

天津昆侖縱橫自動化技術有限公司

聯系人:縱橫科技HMIBuilder

地址:天津市南開區科研西路12號科技創業中心118室

郵編:300192

電話:022-87890516

傳真:022-87890516

公司網址:http://www.hmibuilder.com

  • 該空間手機版

掃描此二維碼即可訪問該空間手機版

  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
您還沒有登錄,請登陸,
如果您還沒有注冊,點擊這里注冊.
  • 網友反饋
  • 宋陽 在2019/9/28 13:06:00留言
  • 留言類型:貴公司技術支持人員聯系我,
  • 詳細留言:hmi與plc通訊報出初始化通道錯誤
  • 康雨瀟 在2013/10/30 14:49:00留言
  • 留言類型:我讓貴公司技術支持人員聯系我,
  • 詳細留言:如何獲取系統時間日期圖元
  • 康雨瀟 在2013/10/30 14:48:00留言
  • 留言類型:我讓貴公司技術支持人員聯系我,
  • 詳細留言:如何獲取系統時間日期圖元
  • 劉國棟 在2012/7/24 14:33:00留言
  • 留言類型:我讓貴公司技術支持人員聯系我,
  • 詳細留言:為什么初始化通道錯誤
  • 張振華 在2012/3/31 16:27:00留言
  • 留言類型:得到貴公司產品詳細資料,得到貴公司產品的價格信息,
  • 詳細留言:縱橫科技HMIBuilder全中文組態軟件 的價格及手冊
更多請進入空間管理中心查看
關于我們 | 網站地圖 | 聯系我們
© 2003-2018    經營許可編號:京ICP證120335號
公安機關備案號:110102002318  服務熱線:010-82053688
我要反饋