3.2 通訊命令
永宏系列plc有多種命令字,常用的幾種描述如附表所示。例如,上位機要讀取plc內部繼電器m1和m2的狀態,則上位機發送的命令字符串格式為:
起始符(02h)+站號(01)+命令字(44)+個數(02)+起始地址(0001)+校驗碼(3b)+結束符
相應下位機響應的字符串為:
起始符(02h)+站號(01)+命令字(44)+錯誤碼(0)+m0,m1狀態(10)+校驗碼(5c)+結束符若要對字元件進行寫操作,那么命令碼改為47。表明該指令要向plc內部寄存器寫入數據,同時要給出寫入的數據個數、開始寄存器和數據內容。
校驗和在信息幀的尾部,用來判斷傳輸的正確與否。當數據從信息源出發,由于信道總是有一定的噪聲存在,在信號達到信宿之前會與噪聲發生疊加,使接收端收到的二進制數位和發送端實際發送的二進制數位不一致,因而產生差錯。進行差錯檢驗的方法很多,常用的有奇偶校驗碼,水平垂直冗余校驗lrc,目前廣泛使用的是lrc校驗碼,它可以查出99%以上18位或更長的突出錯誤,因而在計算機與plc進行點對點的短程通訊時,采用這種校驗方法出錯的幾率較小。plc接收到計算機發送的命令后,如果沒有錯誤,plc會發出確認碼“0”;若有錯誤,plc會發出錯誤代碼“1”。
4 軟件編程
軟件編程采用微軟的vc++6.0作為開發工具。系統主監控畫面要求不斷掃描下位機的信號的通斷狀態,以及讀取plc的內部存取單元加以顯示。此外手動按鈕可以直接控制,由此主程序結構流程圖如圖2所示。
為了確保通信的成功,在pc機和永宏plc之間開始數據傳送前,常采用握手通訊的方法,即pc機發送特征字符,下位機接收并回送同一特征字符,由pc機進行檢測正確后開始數據傳送,以保證串行通訊數據的可靠。此外在通訊過程中,常因某些原因不能保證每次通訊成功,遇到這種情況,不能簡單地宣布通訊失敗,本程序設置了通訊重復次數計數器,只有在規定次數后握手通訊仍未完成時,才宣布通訊失敗,從而大大提高了通訊的成功率和系統的容錯能力。另外,程序中應用定時器對通訊時間加以限制,以免發生死鎖情況。定時器的打開和關閉由程序進行控制。握手通訊成功后,設置握手連接成功標志位,這樣,pc機和永宏plc之間就可以開始數據傳送。握手通訊程序如下:










