9. Protocol Stack - libmodbus
modbus_t *mb;
uint16_t tab_reg[32];
mb = modbus_new_tcp("127.0.0.1", 1502);
modbus_connect(mb);
/* Read 5 registers from the address 0 */
modbus_read_registers(mb, 0, 5, tab_reg);
modbus_close(mb);
modbus_free(mb);
The modbus_t context is an opaque
structure containing all necessary
information to establish a connection
with others Modbus devices
according to the selected variant
10. Protocol Stack - libmodbus
modbus_t *mb;
uint16_t tab_reg[32];
mb = modbus_new_tcp("127.0.0.1", 1502);
modbus_connect(mb);
/* Read 5 registers from the address 0 */
modbus_read_registers(mb, 0, 5, tab_reg);
modbus_close(mb);
modbus_free(mb);
The modbus_t context is an opaque
structure containing all necessary
information to establish a connection
with others Modbus devices
according to the selected variant
以Modbus TCP為例,
實際的實作就是TCP Socket,
Modbus Master就是TCP Client,
Modbus Slave就是TCP Server
11. Toward a microservice
model
• 由HMI觸發Modbus資料讀寫
• 主動回報Modbus資料的數值變化
•
支
援不同類型的數值解讀
•
支
援多個Slave的讀寫
• 紀錄Modbus資料的歷史紀錄
modbus slave modbus slave modbus slave
Node-Red Web portal Cloud PaaS
12. Toward a microservice
model
• 由HMI觸發Modbus資料讀寫
• 主動回報Modbus資料的數值變化
•
支
援不同類型的數值解讀
•
支
援多個Slave的讀寫
• 紀錄Modbus資料的歷史紀錄
modbus slave modbus slave modbus slave
Node-Red Web portal Cloud PaaS
Loose Coupling
High Cohesion
13. Toward a microservice
model
• 由HMI觸發Modbus資料讀寫
• 主動回報Modbus資料的數值變化
•
支
援不同類型的數值解讀
•
支
援多個Slave的讀寫
• 紀錄Modbus資料的歷史紀錄
modbus slave modbus slave modbus slave
Node-Red Web portal Cloud PaaS
Loose Coupling
High Cohesion
De
fi
ne bounded
context (BC)
27. Docker & CI
• Docker container - single process service.
separate of concern.
• Public CI Server - Travis, CircleCI, Jenkins,
Drone, and so on.
• 重現性,
自
動化,持續改善。
32. Proactive Service
• IProactiveService: proactive service
• IReaderTaskDataStore: read/poll task data store
• IWriterTaskDataStore: write task data store
• IHistoryDataStore: history data store
• IFilterDataStore:
fi
lter data store
• ICon
fi
g: con
fi
g management
Interfaces