摘 要:本文介紹了在自由口通訊模式下,用計算機讀寫s7-200 plc儲存區內相鄰的多個位元組資料的通訊程式設計方法,程式設計中採用了多種可靠性措施。
1 引言
使用s7-200的自由口模式與上位計算機通訊,其硬體成本低,適應性強,但程式設計較困難。本文根據自定義的通訊規約編制通訊程式,實現了上位計算機對各plc從站儲存器中位元組、整數或雙整數資料的讀寫操作。
2 通訊規約
通訊採用單主站方式,一台計算機作為主站,多台plc作為從站。計算機採用廣播方式主動向所有plc傳送包含從站站址的讀/寫命令幀,每次被計算機指定站址的一台plc收到後返回響應幀。
通訊波特率為19.2k bit/s,序列資料格式為1位起始位,8位資料位,1位停止位,無奇偶校驗,採用異或校驗方式,校驗碼為除它本身外所有位元組的異或值。計算機使用事件驅動方式接收資料;plc用xmt(傳送)指令傳送資料,用字元中斷方式接收資料。
字串9圖1 通訊幀格式
圖1是通訊幀的格式,用陰影表示資料區。幀起始標誌佔3個位元組,定義為十六進製制數bebebe。站址是計算機要讀寫的從站的編號。讀命令位元組為cch,寫命令位元組為ddh,plc響應幀中的命令位元組與接收到的命令位元組相同,寫命令的響應幀沒有「讀取的資料」部分。
除了幀起始標誌、讀寫區的首位址和讀寫的資料外,幀中其餘各部分均只佔乙個位元組。圖1中當plc對接收到的一幀資料校驗無誤而且命令位元組為cch或ddh時,響應幀中的「plc接收正誤標誌」為1,否則為0。
命令幀中的讀寫區首位址為plc內讀寫區域的起始位元組位址的數字編碼,plc接收到命令幀後可以將其作為指標,使用迴圈指令讀寫計算機指定的連續區域。經作者反覆實驗,得到了plc內部多種儲存區域位址的數字編碼規律。該數字編碼為雙字,高字表示儲存區型別(見表1),低字表示偏移量。根據定址區域和偏移量就可以得到位址編碼,例如mb3的位址編碼為0200 0003h,它等同於plc程式中的&mb3,只是表示方式不同而已。在通訊幀中使用位址的數字編碼可以簡化plc的程式。
表1 幾種儲存器區域位址高字編碼
字串6如果plc接收超時,plc重新進入接收狀態;如果計算機接收超時,重發3次命令幀,若3次均超時,發出報警資訊。
3 plc通訊程式設計
3.1 接收程式和傳送程式的設計
plc作為從站,只有接收到計算機的命令幀後才返回響應幀,不會主動傳送資料。
plc使用多個字元中斷服務程式,順次接收命令幀各部分的內容。在接收幀起始標誌的中斷服務程式中,只有接收到連續3個beh,plc才認為是一幀的開始,否則重新接收幀起始標誌。在接收站位址的中斷服務程式中,將接收到的站址與本站站址相比較,如果相同,繼續接收命令幀其餘的位元組,否則重新接收幀起始標誌。這樣每次只有一台plc接收整個命令幀,避免了其餘的plc進行不必要的接收。在接收資料區的中斷服務程式中,通過比較接收到的「資料區位元組數」和實際接收到的位元組數來判斷資料區接收是否完成。接收完資料區後再接收到乙個位元組的校驗碼,則一幀接收完成,置傳送允許標誌位。
主程式檢測到傳送允許標誌位為1時,進行異或校驗並檢查命令位元組,若接收正確,判斷是讀命令還是寫命令。如果是讀命令,將計算機要讀取的資料送入傳送緩衝區;如果是寫命令,將計算機提供的資料寫入指定的儲存區位址;最後計算異或校驗碼並將它送入傳送緩衝區;組織好傳送幀後將它傳送出去。
計算機 通訊詞典
abc cgroupsde fghi jklm nnfv nfv isg oonfpq rrewritest uvvnfiwx yzcontrol group 控制組 一種lxc技術。1 domain specific language 領域特定語言 就是cgi被啟用後一直處於長期 long liv...
計算機匯流排上的通訊
匯流排型拓撲結構是指 網路上的所有計算機都通過一條電纜相互連線起來 匯流排上的通訊 在匯流排上,任何一台計算機在傳送資訊時,其他計算機必須等待。而且計算機傳送的資訊會沿著匯流排向兩端擴散,從而使網路中所有計算機都會收到這個資訊,但是否接收,還取決於資訊的目標位址是否與網路主機位址相一致,若一致,則接...
計算機跟學習板通訊
緣由 工作需要在程式裡面發指令,控制系統外接硬體中幾個燈的報警。基礎 1 好早好早之前買了學習板,純屬個人愛好,當時只敲了幾行 讓流水燈跑起來,就閒置了。2 有一套新板子的相關資料。流程 1 熟悉了一下學習板,萬變不離其宗啊,哈哈。開關燈的 都已經寫好,直接拿來用,只需要看看你需要控制的燈在哪個口,...