自由口模式下plc與計算機的通信
plc程序執行過程
----plc在第一次掃描時執行初始化子程序,對端口及rcv指令進行初始化。初始化完成后,運行rcv指令使端口處于接受狀態。
----rcv會將以“g”開頭“g”結尾的指令保存到接收緩沖區,并同時產生接收完成中斷。
----rcvcomplete中斷服務程序用來處理接收完成中斷事件,它會將接收緩沖區中的十六進制ascii碼還原成數據并保存,同時置位verify子程序的觸發條件(m0.1)。 ----verify子程序首先復位本身的觸發條件以防止子程序被重復調用,然后求出接收緩沖區中指令的bcc校驗碼并與指令中的bcc校驗碼進行比對。如果相等則置bcc碼校驗正確的標志位(m0.0)為1;如果指令格式正確(指令的結束標志在接收緩沖區中特定的位置vb133)而bcc碼不相等,則發送代表bcc校驗碼錯誤的反饋信息;如果指令格式不正確(vb133中不是指令的結束標志),則返回代表指令格式錯誤的反饋信息。
----read子程序的觸發條件為:指令中的站地址與本機站地址相符、指令類型為讀指令、bcc檢驗碼正確。當條件滿足時,read子程序被執行。read子程序首先禁止rcv,然后將指令所要讀取的數據轉換成十六進制ascii碼并寫入發送緩沖區、計算bcc檢驗碼、 后發送反饋信息。
----write子程序的觸發條件為:指令中的站地址與本機站地址相符、指令類型為寫指令、bcc檢驗碼正確。當條件滿足時,write子程序被執行。write子程序首先禁止rcv,然后將指令中的數據寫入目標寄存器, 后發送代表寫入正確的反饋信息。
----plc每接到一條指令后都會發送一條反饋信息,當反饋信息發送完成時,會產生發送完成中斷,xmtcomplete中斷服務程序用來處理發送完成中斷事件。在xmtcomplete中斷服務程序中所要執行的操作包括:復位bcc校驗碼正確的標志位(m0.0);允許rcv;bcc碼寄存器清零;重新裝入用于計算bcc校驗碼的地址指針;接收緩沖區中存放指令結束字符的字節vb133清零(用來判斷下一條指令格式是否正確)。
plc寄存器地址分配
----此程序占用plc寄存器的vb100-vb199,內部繼電器占用m0.0和m0.1。寄存器地址分配見表3、表4、表5、表6。
表3 接收緩沖區
表4 譯碼區
表5 發送緩沖區
表6 其它