使用設備:cRIO-9065
458在設備上輸入後撈回的數值
目前測試用的程式是我原本就寫好的程式,之前用都可以正常使用也可以寫入設備或是從設備上撈數據回來,現在遇到的問題是按下按鈕時Event偵測不到按鈕的變化所以只會走Timeout的迴圈,我按下按鈕時按鈕狀態如下圖,不會回彈回來想請問各位前輩是哪裡出錯了呢?
使用設備:cRIO-9065
458在設備上輸入後撈回的數值
目前測試用的程式是我原本就寫好的程式,之前用都可以正常使用也可以寫入設備或是從設備上撈數據回來,現在遇到的問題是按下按鈕時Event偵測不到按鈕的變化所以只會走Timeout的迴圈,我按下按鈕時按鈕狀態如下圖,不會回彈回來想請問各位前輩是哪裡出錯了呢?
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,請問是這樣嗎?
另外我想詢問這是我目前的程式只是測試而已所以有點簡陋,我這個寫入數值的VI或是輸入Boolean值的VI都是直接輸入一個array進去,讀取的時候也是讀取整個array出來,我想詢問的點是有辦法我只輸入或是輸出單一個點的數值嗎?
modbus在LabVIEW的使用上只能透過Arrary的資料格作使用,雖然你可以設定只讀取或寫入一個位置,但默認還是會以Arrary的格式作輸出,只能透過Arrary Index來作個別取得,或是透過ArraryToCluter變換輸出方式
目前我的想法是想要把index 0 的這個位置拿來當作假如連線成功時 0 = True,不過當我寫入時候他還是會判斷我 coils to write這邊的array為主,導致狀態一直都是False,想詢問前輩有甚麼更好的方式來達成我想要的結果呢? 當程式連線成功時送出一個True給人機上的按鈕做顯示
那想詢問我現在PC端的感覺是不是就比較像是RIO的監控視窗呢?
Event偵測的是LabVIEW自己的FrontPanel,但在RIO環境實現,所以你的程式需要先做修改
@Jackylin
前輩不好意思現在才回復您,有點看不懂您說的意思!
前輩您好,我有私訊問您後續相關的問題,如果上線有注意到且可以回覆我的話再注意一下,謝謝!