# 英鈿 佺樂 規格 ## 1. 取得成型機上 燈號與感測器數值 | 感測器 | 說明 | | -------- |-------- | | 計數器 | 碼錶數值 | | 電源指示燈 | 電源開關燈 ,0未開啟,1已開啟 | | RUN按鈕 | 按下後開始製作,計數器也會開始跳 ,0未開啟,1已開啟 | | 主馬達過熱燈 | 異常-馬達過熱 ,0未發生,1異常發生 | | 主馬達過載燈 | 異常-馬達過載 ,0未發生,1異常發生 | | 低油壓指示燈 | 異常-低油壓 ,0未發生,1異常發生 | | 計數器結束燈 | 異常-計數器結束 ,0未發生,1異常發生 | | 短送異常燈 | 異常-短送異常 ,0未發生,1異常發生 | | 風壓失燈 | 異常-風壓失異常 ,0未發生,1異常發生 | | 分離式煞車未開啟燈 | 異常-分離式煞車未開啟 ,0未發生,1異常發生 | *異常燈會根據成型機不同而有增減 ## 2.將感測器數值寫入MySQL資料庫中(DZ Connect 3張表, 1張Local表),其中機器狀態Status須依照燈號邏輯判斷 ### 2.1機器狀態Status邏輯判斷說明 ```mermaid graph TD A{電源指示燈} --> |0| B["關機 Status=0"] A{電源指示燈} --> |1| C{"異常(主馬達/低油壓/短送...)是否發生?"} C --> |是| D["警報 Status=3"] C --> |否| E{"RUN指示燈狀態"} E --> |1| F["運行 Status=1"] E --> |0| G["閒置 Status=2"] style F fill:#00ff00 style G fill:#ffff00 style B fill:#aaaaaa style D fill:#ff0000 ``` ### 2.2寫入DZ Connect資料庫:3個資料表(manyoutput, manyidle, manyalarm) #### 2.2.1資料表`manyoutput` - 資料寫入說明: ```mermaid graph TD A["Status從 0|2|3 變為1"] --> |"IPC內部紀錄 開始時間DateStart 與 開始計數器值"| B["Status從 1 變回 0|2|3"] B --> |"IPC紀錄 結束時間DateEnd 與 結束時計數器值CountEnd,計算出持續時間TimeSpan 與此次生產數量TotalCount"| C["將上述數值利用SQL寫入DZ manyoutput"] ``` - C#範例 ```C# const ContEnd = 'O.K.' const State = 'OUTPUT' console.log(req.body) const sql_mysql = "INSERT INTO manyoutput SET ?;" const sql_condition = { MachineNo: 'MachineNo',//機台編號(MahcineNumber) DateStart: startTime,//起始時間 DateEnd: endTime, //結束時間 TimeSpan: timeSpan,//持續時間 TotalCount: totalCount,//此次生產數量 ContEnd: ContEnd,//同上 State: State //同上 } ``` - SQL ```SQL Insert into idirect1.manyoutput (MachineNo,DateStart,DateEnd,TimeSpan,TotalCount,ContEnd,State) values (…) ``` #### 2.2.2資料表 `manyidle` - 資料寫入說明: ```mermaid graph TD A["Status從 0|1|3 變為2"] --> |"IPC內部紀錄 開始時間DateStart 與 開始計數器值"| B["Status從 2 變回 0|1|3"] B --> |"IPC紀錄 結束時間DateEnd 與 結束時計數器值CountEnd,計算出持續時間TimeSpan 與此次生產數量TotalCount"| C["將上述數值利用SQL寫入DZ manyidle"] ``` - C#範例 ```C# const ContEnd = 'O.K.' const State = IDLE console.log(req.body) const sql_mysql = "INSERT INTO manyidle SET ?;" const sql_condition = { MachineNo: 'MachineNo', //機台編號 DateStart: startTime, //起始時間 DateEnd: endTime, //結束時間 TimeSpan: timeSpan, //持續時間 ContEnd: ContEnd, //同上 State: State//同上 } ``` - SQL ```SQL Insert into idirect1.manyidle (MachineNo,DateStart,DateEnd,TimeSpan ,ContEnd,State) values (…) ``` #### 2.2.3 資料表 `manyalarm` - 資料寫入說明: ```mermaid graph TD A["Status從 0|1|2 變為3"] --> |"IPC內部紀錄 開始時間DateStart 與 開始計數器值"| B["Status從 2 變回 0|1|2"] B --> |"IPC紀錄 結束時間DateEnd 與 結束時計數器值CountEnd,計算出持續時間TimeSpan 與此次生產數量TotalCount"| C["將上述數值利用SQL寫入DZ manyalarm"] ``` - C#範例 ```C# const ContEnd = 'O.K.' const State = ALARM console.log(req.body) const sql_mysql = "INSERT INTO manyalarm SET ?;" const sql_condition = { MachineNo: 'MachineNo', //機台編號 DateStart: startTime, //起始時間 DateEnd: endTime, //結束時間 TimeSpan: timeSpan, //持續時間 ContEnd: ContEnd, //同上 State: State, //同上 ConStart: 'alarmText', //警報訊息 test: 'alarmNo' // 警報編號 } ``` - SQL ```SQL Insert into idirect1.manyalarm (MachineNo,DateStart,DateEnd,TimeSpan ,ContEnd,State,Constart,test) values (…) ``` ### 2.3 寫入IPC內資料庫:1個,讓DZ Connect抓取即時資料用 - 機器燈號資料表 SQL語法範例 ```SQL CREATE TABLE light ( id int(11) NOT NULL AUTO_INCREMENT, #自動產生 Machine varchar(20) NOT NULL, #PLC連接程式辨別機器用名稱 MachineNumber varchar(20) NOT NULL, #機器名稱 *達易抓取欄位 Count int(11) NOT NULL, #計數器(感測器數值) *達易抓取欄位 ShortSend_NG tinyint(1) NOT NULL, #短送異常燈(感測器數值) *達易抓取欄位 OilLow tinyint(1) NOT NULL, #低油壓指示燈(感測器數值) *達易抓取欄位 WindPressure tinyint(1) NOT NULL, #風壓失燈(感測器數值) *達易抓取欄位 MainMotor_OverHot tinyint(1) NOT NULL, #主馬達過熱燈(感測器數值) *達易抓取欄位 MainMotor_OverLoad tinyint(1) NOT NULL, #主馬達過載燈(感測器數值) *達易抓取欄位 SeparateBrakes_NoOpen tinyint(1) NOT NULL, #分離式煞車未開啟燈(感測器數值) *達易抓取欄 Status int(11) NOT NULL, #機器狀態,0|1|2|3 依照2.1邏輯判斷 *達易抓取欄 Run int(11) NOT NULL, PowerSwitch int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY Light_Machine_9ae72803_uniq (`Machine`), KEY Light_Machine_9ae72803 (`Machine`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; ``` ![](https://i.imgur.com/tlTY3uG.jpg) ### 參考目前狀態 ![](https://i.imgur.com/ut2kX9z.png) ## 3. 將感測器狀態利用MQTT或AMPQ傳到雲端[非必要]