NI FPGA 錯誤 error -63192

今天執行 CRIO 9030的時候出現了以下的錯誤訊息

NI-RIO: (Hex 0xFFFF0928) Either the supplied resource name is invalid as a RIO resource name, or the device was not found. Use MAX to find the proper resource name for the intended device.

簡單的來說就是CRIO的名稱有問題或者是找不到CRIO,RT端可以正常使用!!

結論>>>重過CRIO之後,總算可以正常跑FPGA,看起來是CRIO內部程式出錯了,現在能用就先這樣吧!!!

 

labview sql mysql mssql Connection ODBC driver 透過ODBC連接MYSQL

突然心血來潮,來試試看用labview連接 mysql的資料庫,但是搜尋了一下labview的原生程式,
蝦米,沒有相關的範例,只有一個Database的相關工具,但是說明有點少,看來這個MYSQL有點難用
搜尋網路,只有班哲明大大在LABVIEW360的論壇比較詳細解說
https://labview360.com/forum/forum_posts.asp?tc=i3ww6quo0fil&pn=1&tpn=1
大至上的作法為透過MYSQL Connector/ODBC 與 LabSQL的程式進行MYSQL連結

  1. 安裝MYSQL資料庫與Connector/ODBC,https://dev.mysql.com/
  2. 設定MYSQL的相關資料
  3. 然後下載LabSQL的程式,http://jeffreytravis.com/lost/download/
  4. 接下來連線到MYSQL的方法有兩種,

方法一

  1. 透過ODBC的設定再透過LabSQL進行連結
  2. 控制台→所有控制台項目→系統管理工具→ODBC 資料來源 (32 位元)
  3. 系統資料來源名稱→新增→選擇MySQL ODBC 5.3 Unicode Driver→填入相關資料,紀錄Data Source Name
  4. LabSQL的範例程式Example – Fetch a Table.vi中,ConnectionString填寫DSN=剛剛紀錄的紀錄Data Source Name;
  5. Command Text就輸入SQL的命令比如 SELECT * FROM `user`
  6. 這樣就可以輸出資料了,不過這種資料模式還需要再改善,不然不容易閱讀與修改

透過ODBC的設定不是一個好方法,因此需要以下的 方法二

  1. LabSQL的範例程式Example – Fetch a Table.vi中,ConnectionString填寫 Driver={MySQL ODBC 5.3 Unicode Driver};Server=localhost;Database=**;
    User=**;Password=***;Option=3;。
    其中Driver是MySQL ODBC的版本。
    Server可能為IP地址,localhost為本機的一個代號。Option=3,目前不知道有何目的
  2. Command Text就輸入SQL的命令比如 SELECT * FROM `user`

這個方法比方法一簡單好用,但是接下來要再研究怎樣把資料分離,目前的問題也是我覺得labview不夠彈性的問題。

labview for loop array幾個小概念

請問以下三個小程式哪一個程式運作速度最快呢?

請問以下三個小程式哪一個程式運作速度最快呢?
請問以下三個小程式哪一個程式運作速度最快呢?

答案揭曉:第一個程式36 ms ,第二個程式150 ms ,第三個程式172 ms 。
蝦米,怎麼會這樣,為何第二個程式與第一個程式運算時間為何會差異這麼多啊
其實原因與labveiw的運作模式有關

1.第三個表示labview會自行變成多核心平行運作,這點不重要

2.第一與第二的程式可以看出labview最大的問題,矩陣大小變化的時候會消耗很多的時間(雖然不到0.1m)與記憶體空間,但是累積很多之後,就會看到之間的差異了。
而對於FOR LOOP而言,因為知道運作的次數,因此系統會自動產生固定的矩陣出來,所以不用變更矩陣的大小。因此速度可以快很多。(第一個程式)。
而第二個程式,每一個迴圈都改變一次矩陣的大小,因此消耗很多的時間與記憶體空間。

***不要頻繁的改變矩陣的大小,對於系統而言,會消耗時間與記憶體。

Agilent 4284A LCR Meter的控制系統

這次串接Agilent 4284A LCR Meter的控制系統,對電容進行掃頻的動作並記錄數據。
接觸過之後才知道,原來還有這種高級的LCR Meter,不但可以進行掃頻的動作,還可以量測好多種不知道的數據(Dissipation factor,Suscept ance)。

最後,原來有負電容值這種東西,不過還是搞不懂負電容的意義。

ModBus (使用工業用觸控人機介面,HMI,泓格VPD-143)

首先說一下 泓格的VPD-143(工業用觸控人機介面,HMI)
如字面上的名稱,可觸控操控,也可於內部撰寫程式,進行控制
(不過程式介面是 HMIWorks,可由階梯程式或C撰寫,階梯程式讓人眼花撩亂,還是習慣用C之類的程式來撰寫)
我覺得這個工業HMI硬體功能很強大,有機會的話可以做很多系統

VPD-143功能:

  • 處理器(CPU) 32-bit RISC CPU
  • 記憶體擴充 16 MB SDRAM / 8 MB Flash
  • 乙太網路
  • 觸控面板
  • RS-232 (3-pin) / RS-485 ( 含 Self-Tuner) 擇一
  • 支援 Modbus TCP/RTU 通訊協定
  • 支援 I/O 擴充卡 (XV-board)
  • 視擴充卡的功能而定,可支援8~16 AIO,8~16 DIO

這次最主要的目的是使用Modbus RTU的功能,抓取多台RS485系統的訊號,再轉存為Excel資料。
因為Modbus功能是非雙向主動溝通系統,必須經由master對slave進行呼叫,才能讀取或寫入資料至slave的暫存器。
這是缺點就看使用場合了,但優點為Modbus允許多個 (大約240個) 裝置連線在同一個網路上進行通訊(串接時要小心訊號衰減的問題)。
如果需要可以雙向皆可主動傳訊息(比如當slave出現錯誤時,可以主動丟出錯誤訊息出來),可能要使用CAN BUS之類的通訊系統。
還好不是第一次使用通訊系統,想當年第一次接觸到通訊界面的時候是用Micro chip的RS-232的通訊界面,
摸索了很久才大概看得懂DataSheet是在寫什麼東西。
後來陸續接觸了I2C、CAN BUS、TCP等通訊界面因為之前有經驗了,所以很快就透過Google大神找到了API與範例程式
透過範例程式的閱讀,很快就了解了中間的問題。
唯一卡關比較久的問題反而是第一次去現場實測的時候卡關,
原本有利用TRY Catch抓取錯誤訊息,但是去現場之前手邊沒有硬體,
只能用水晶球抓取可預期的錯誤(Erroe ID),原以為已經分類出所以問題了,
現場一執行程式,程式馬上給我崩潰,顯示錯誤並且關掉程式,天啊!!!!
現場的其他人開始懷疑我的程式是否可運作!?
蝦米!!只好趕快現場DEBUG,花了一個多小時重新RUN過程式的流程,抓出錯誤訊,
Argument numberOfPoints must be between 1 and 125 inclusive
原來是一次抓取太多資料,Modbus無法傳送這麼多資料,原來是API的資料沒有全部看完,
透過分段讀取資料,總算把問題搞定!!安全下莊。