---
# System prepended metadata

title: 英鈿 佺樂 規格

---

# 英鈿 佺樂 規格

## 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傳到雲端[非必要]


