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