1. 程式人生 > >西門子S7-200PLC自由口初始化

西門子S7-200PLC自由口初始化

文章參考連結:https://jingyan.baidu.com/article/6525d4b17c0056ac7d2e9412.html

 

西門子s7-200自由口十分方便快捷,熟悉其初始化方法對與用其讀取給類資料有著重要的應用。

工具/原料

  • S7-200PLC

  • V4.0 STEP 7 MicroWIN SP9

方法/步驟

  1. 1

    應用自由口通訊首先要把通訊口定義為自由口模式,同時設定相應的通訊波特率和上述通訊格式。使用者程式通過特殊儲存器SMB30(對埠0)、SMB130(對埠1)控制通訊口的工作模式。

    CPU通訊口工作在自由口模式時,通訊口就不支援其他通訊協議(比如PPI),此通訊口不能再與程式設計軟體Micro/WIN通訊。CPU停止時,自由口不能工作,Micro/WIN就可以與CPU通訊。

    通訊口的工作模式,是可以在執行過程中由使用者程式重複定義的。如果除錯時需要在自由口模式與PPI模式之間切換,可以使用SM0.7的狀態決定通訊口的模式;而SM0.7的狀態反映的是CPU執行狀態開關的位置(在RUN時SM0.7="1",在STOP時SM0.7="0")

    自由口通訊的核心指令是傳送(XMT)和接收(RCV)指令。在自由口通訊常用的中斷有“接收指令結束中斷”、“傳送指令結束中斷”,以及通訊埠緩衝區接收中斷。

  2. 2

    初始化自由口;SMB30(對於埠0)和SMB130(對於埠1)被用於選擇波特率和校驗型別。SMB30和SMB130可讀可寫;程式如下:

    西門子S7-200PLC自由口初始化

    西門子S7-200PLC自由口初始化

  3. 3

    傳送資料:

    傳送指令XMT能夠傳送一個位元組或多個位元組的緩衝區,最多為255個。使用邊沿觸發。

    傳送緩衝區格式:第一個位元組為字元個數,其後為傳送的資訊字元。

    示例:如果PLC連續傳送2個字元16#55和16#EE,程式如下圖4.:

    西門子S7-200PLC自由口初始化

  4. 4

    接收指令RCV能夠接收一個位元組或多個位元組的緩衝區,最多為255個。使用邊沿觸發或第一個掃描週期觸發。

    接收緩衝區格式:第一個位元組表示接收的字元個數,其後為接收的資訊字元。

    RCV使能會將TBL緩衝區中的字元個數清零

    西門子S7-200PLC自由口初始化

  5. 5

    接收狀態位元組。SMB86(port0),SMB186(port1)。

    當接收狀態位元組為0,表示接收正在進行。

    當接收狀態位元組不為0,表示接收指令未被啟用或者已經被中止

    接收指令起始和結束條件

    接收指令使用接收資訊控制位元組(SMB87或SMB187)中的位來定義資訊起始和結束條件。必須為接收資訊功能操作定義一個起始條件和一個結束條件(最大字元數)。

    西門子S7-200PLC自由口初始化

    西門子S7-200PLC自由口初始化

  6. 6

    起始字元檢測

    當接收到SMB88/188指定起始字元後,接收資訊功能將起始字元作為資訊的第一個字元存入接收緩衝區。

    起始字元之前的字元被忽略,起始字元和其後的所有字元存入接收緩衝區。

    示例:PLC接收的起始條件定義為起始字元檢測(設定SMB87中的il=0,sc=1,bk=0,起始字元SMB88=16#55);接收的結束條件定義為最大字元個數SMB94=4

    西門子S7-200PLC自由口初始化

  7. 7

    接收指令結束條件

    接收指令支援以下一種或幾種組合的結束條件:

    結束字元檢測

    在起始條件之後,接收指令檢查接收的所有字元,如果檢測到結束字元,則將其存入緩衝區,結束接收。

    示例:PLC接收的結束條件定義為結束字元檢測(設定SMB87中的ec=1,定義結束字元SMB89=16#55),接收起始條件定義為起始字元檢測(起始字元16#AA)。