建議可以使用queue的方式試看看
<font =“apple-style-span” size=“4”>感謝<span =“apple-style-span” style="line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); text-decoration: none; ">ancle大回覆
你在另一篇OP文不是說用OPC嗎?如果是用OPC就不會有你提的困擾
<span =“apple-style-span” style="line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); text-decoration: none; "><font =“apple-style-span” size=“3”>DonWang 大你好:
Event Structure 有其限制 Evant case 必須經由滑鼠、鍵盤等外部輸入才能觸發
如果你希望平常讀取PLC訊息 有人操作時才下指令這樣寫是可以的
如果想自動下指令用原本的while loop也可以
利用subvi的本身特性也可以達到節點控制的效果 你可以試試看
[QUOTE=Ding00]
Event Structure 有其限制 Evant case 必須經由滑鼠、鍵盤等外部輸入才能觸發
如果你希望平常讀取PLC訊息 有人操作時才下指令這樣寫是可以的
如果想自動下指令用原本的while loop也可以
利用subvi的本身特性也可以達到節點控制的效果 你可以試試看
[/QUOTE]
Event Structure不只只能用"經由滑鼠、鍵盤等外部輸入才能觸發",下面2篇章給你參考.
http://it360.tw/forum/forum_posts.asp?TID=2554&KW=signaling
http://it360.tw/forum/forum_posts.asp?TID=7201&KW=Event+Structure
[QUOTE=Jay1012]<span style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px” =“apple-style-span”><span style=“font-family: verdana, arial, helvetica, sans-serif; color: rgb(0,0,0); text-decoratiOn: none” =“bold”><font size=3 =“apple-style-span”>DonWang 大你好:
[/QUOTE]
要達到一樣的目的,每人程式能力不同,寫的方式一定不一樣.建議你將程式(不是畫面)上傳,較方便大家給你建議.
ancle大說的Queue意思我猜是說利用Queue放指令,例如正常情形有6個指令(輸入區1,輸入區2,輸出區1,輸出2,內部1,內部2),依序下指令讀取,再下"寫入資料"時插入"寫入資料",所以重點是"依序",不要造成前個指令未完成就下一個指令.
<font =“apple-style-span”=“” size=“2”>感謝<span =“apple-style-span”=“” style=“line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; “><span =“bold”=”” style=“font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); text-decoration: none; “>DonWang大回覆:
有幾個建議給你:
1.寫出後等待讀入的時間設定500ms以上.
2.寫出後等待讀入的時間用Wait (ms)不要用Wait Until Next ms Multiple.
3.主程式多用幾個While loop.

老實說用queue的方式我沒有試過,DonWang所po的使用EVENT的方式是一種蠻好的方式,但對於多個節點的控制,就要看版上有經驗的人有沒有更好的方式,如果PC和PLC之前的通訊要達到即時的話,使用delay的方式來確保資料完整收到,看來就不太即時,我目前有個應用也是讀取PLC的資料,正常來說都是下command,然後PLC回response,我目前是使用TCP/IP的方式,除了程式的寫法會不一樣以外,還有需要另外購買Ethernet轉RS-232的硬體,尤其是有buffer的會貴一點,有buffer的話有個好處,就是只管下command,資料會停留在buffer區,一直到去讀取它為止,雖然RS-232也可以設定buffer區,但這部份我沒有多加研究,以要讀取或寫入16點為例,只管write command,中間幾乎不需要delay,之後再去read即可,以上是我的應用,話說回來,使用RS-232應該也是可以讀寫多點,只是我沒有相關經驗,以上提供給你參考
今天有試過<span =“apple-style-span” style="font-size: 12px; line-height: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span =“bold” style="font-family: verdana, arial, helvetica, sans-serif; color: rgb(0, 0, 0); font-size: 12px; font-weight: bold; text-decoration: none; ">DonWang大所建議的內容
[QUOTE=Jay1012]今天有試過<span style=“line-height: 18px; font-size: 12px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px” =“apple-style-span”><span style=“font-family: verdana, arial, helvetica, sans-serif; color: rgb(0,0,0); font-size: 12px; font-weight: bold; text-decoratiOn: none” =“bold”>DonWang大所建議的內容
[/QUOTE]
在一個While loop中放許多Event與Case,它們會相互牽制,也就是While loop內部中的Event與Case都執行完成1次後,才會在執行第2次.
另外Event中有個"Lock front panel"的勾選,正常狀況是勾選的也就是說當Event觸發了1事件處理中時,畫面是無法在操控的,必須等處理完成後才會正常.
今天有嘗試將EVENT與按鍵放在同一個迴圈