Labview cRIO 9065部署問題

使用設備:cRIO-9065



458在設備上輸入後撈回的數值

目前測試用的程式是我原本就寫好的程式,之前用都可以正常使用也可以寫入設備或是從設備上撈數據回來,現在遇到的問題是按下按鈕時Event偵測不到按鈕的變化所以只會走Timeout的迴圈,我按下按鈕時按鈕狀態如下圖,不會回彈回來想請問各位前輩是哪裡出錯了呢?


你可以把燈泡打開~
image

再運行看看呀~
我推測 Create TCP Slave
還在運行中~ 當你就按下 Write 按鈕 (寫入HMI) 此時 按鈕 是不會回彈回來的.

HI RIO系統在定義上是嵌入式系統並沒有人機介面,因此Event在RIO上是無作用的,需要將程式整個做修改

原來如此,那這樣我電腦這邊就不能主動寫入嗎?
第一次用RIO沒什麼概念,不過我這個型號好像有支援UI耶?
跟那個沒關西嗎?

我想跟下面大大的說法可能有關西,因為我有開過燈泡他只會進Timeout不會偵測到任何按鈕

@Jackylin 如果不能用Event的話有甚麼其他的辦法可以效仿呢?
我目前用case structures是可以偵測到按鈕T/F的,不過我想讓它類似像Event的感覺一樣
還是我要把我的按鈕用index判斷T/F進入到case裡面做判斷模仿Event的效果?

你可以想像RIO的使用上與PLC有點類似,通常我們會將寫完成的程式載入到RIO使他自動化運行,雖然LabVVIEW在編寫時還是有提供UI,但無法使用Event。假如需要人機做運行,通常會寫在PC端,再透過通訊方式與RIO進行溝通,例如TCP通訊,RIO接收到命令後透過Queue將接收到的資料傳送至對應設備的迴圈作使用。

真的硬要寫的話,只能硬該就只有透過case structurescase structures搭配Latch作運行了。

參考文件

我目前是用modbus TCP/IP跟人機通訊,所以我能理解成人機是我的上位機當我在人機上面操作時(按按鈕、輸入數值),會把這些指令丟進RIO裡面運算之後再控制所指定的設備,是這樣嗎?
所以通常都不會在labview另外做UI介面來操作,因為人機 = 我的UI,請問是這樣嗎?

@Jackylin

另外我想詢問這是我目前的程式只是測試而已所以有點簡陋,我這個寫入數值的VI或是輸入Boolean值的VI都是直接輸入一個array進去,讀取的時候也是讀取整個array出來,我想詢問的點是有辦法我只輸入或是輸出單一個點的數值嗎?

modbus在LabVIEW的使用上只能透過Arrary的資料格作使用,雖然你可以設定只讀取或寫入一個位置,但默認還是會以Arrary的格式作輸出,只能透過Arrary Index來作個別取得,或是透過ArraryToCluter變換輸出方式


image

目前我的想法是想要把index 0 的這個位置拿來當作假如連線成功時 0 = True,不過當我寫入時候他還是會判斷我 coils to write這邊的array為主,導致狀態一直都是False,想詢問前輩有甚麼更好的方式來達成我想要的結果呢? 當程式連線成功時送出一個True給人機上的按鈕做顯示

那想詢問我現在PC端的感覺是不是就比較像是RIO的監控視窗呢?


1.當連線正常無Error狀況下,可以在框1位置透過Case切換做寫入對應位置
2.會一直讀到F應該是因為你寫入跟讀取都是相同位置,你下方無Error狀況下一直寫入F,Event在Timeout下就讀取就會一直取得F
3.PC可以視為你現在的HMI

所以變成我的starting address要讓他們避開嗎?

但我目前有連接Proface的人機,我目前都在用人機上面按鈕跟輸入視窗操作這樣變成我的PC就變成看RIO的監控視窗了



目前是這樣

Event偵測的是LabVIEW自己的FrontPanel,但在RIO環境實現,所以你的程式需要先做修改