|
買了自加熱的榨汁機每天補充營養是件好事,但是為此早起一個小時卻劃不來。如果為了節省時間,早上用微波爐加熱昨晚做好的豆汁,口感卻不怎么好。怎么辦?買定時加熱的榨汁機,估計價錢會很高,不過市面上好像也沒有帶這種功能的。
正好這段時間對硬件比較感興趣,所以抽時間用西門子PLC224實現了該功能(一個PLC一兩千元,用PLC控制好像有點高射炮打蚊子--大材小用,建議最好用單片機或.NET Micro Framework實現,這樣成本會很低)。
基本思路:
1、由于PLC外部沒有顯示和控制接口,所以需要在PC機上編寫一個程序,用來設定定時時間和間隔。此外由于PLC的時鐘精度較低,長時間運行偏差較大,所以還得提供一個校時功能。
2、PLC程序相對比較簡單,只要用當前時間和設定時間進行比較,時間到,則Q0.0輸出信號,由此驅動繼電器工作,過了時間間隔,則停止輸出。
3、PC和PLC通信部分,由于PLC原生支持PPI協議,可以采用我以前編寫的西門子PPI控件進行訪問。當然也可以采用Modbus Rtu模式進行通信,不過需要PLC程序添加Modbus Rtu Slave庫,這樣增大了PLC程序空間,由于Modbus協議為公開協議,可以在PC上自行編寫Modbus Rtu讀寫程序,不過也可以采用我編寫的Modbus Rtu控件進行通信控制。
實際接線圖如下:
PLC程序如下(語句表)
NETwork 1
// 初始化
LD SM0.1
MOVB 16#55, VB101 //復位初始狀態
NETwork 2
// 設定日期
LDB= VB100, 16#AA
MOVB 16#55, VB100
//VB110 年 VB111 月 VB112 日 VB113 時 VB114 分 VB115 秒 VB117 星期
TODW VB110 //設置時鐘
NETwork 3
// 讀取日期(1s刷新一次)
LD SM0.5
EU
TODR VB120 //讀取時鐘
NETwork 4
// 判斷是否開始輸出
LDB= 16#55, VB101 //沒有輸出
AB= VB123, VB130 //時
AB= VB124, VB131 //分
AB= VB125, VB132 //秒
EU
S Q0.0, 1 //Q0.0輸出
MOVB 16#AA, VB101 //置位狀態
NETwork 5
// 判斷是否停止輸出
LDB= 16#AA, VB101 //沒有輸出
AB= VB123, VB140 //時
AB= VB124, VB141 //分
AB= VB125, VB142 //秒
EU
R Q0.0, 1 //Q0.0輸出
MOVB 16#55, VB101 //復位狀態
NET技術:讓榨汁機定時工作(C#+PLC),轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。