廣西西門子S7-1200PLC代理商(價格實(shí)惠)

接收指令支持幾種消息起始條件。包含一個停頓或者一個空閑線檢測的起始條件,通過在將字 符放到消息緩沖區(qū)之前,用一個字符的起始來強(qiáng)制接收消息功能和消息的起始相同步,來避免以上 問題。
接收指令支持幾種起始條件:
- 空閑線檢測:空閑線條件定義為傳輸線路上的安靜或空閑時間。在SMW90或者SMW190中其毫秒數(shù)。當(dāng)接收指令在程序中執(zhí)行時,接收消息功能對空閑線條件進(jìn)行檢測。如果在空閑 線時間到之前接收到任何字符,接收消息功能會忽略那些字符并且按照SMW90或者SMW190 中給定的時間值重新啟動空閑線定時器。參見圖6--11。在空閑線時間到之后,接收消息功能將 所有接收到的字符存入消息緩沖區(qū)??臻e線時間應(yīng)該總是大于在波特率下傳輸一個字符(包括起始位、數(shù)據(jù)位、校驗(yàn)位和停止位)的時間。空閑線時間的典型值為在波特率下傳輸三個字符的時間。
對于二進(jìn)制協(xié)議、沒有特定起始字符的協(xié)議或者了消息之間小時間間隔的協(xié)議,您可以 使用空閑線檢測作為起始條件。

圖6--11 用空閑時間檢測來啟動接收指令
- 啟動字符檢測:啟動字符是用作消息*個字符的任意字符。當(dāng)接收到SMB88或者SMB188中 的起始字符后,一條消息開始。接收消息功能將起始字符作為消息的*個字符存入接收 緩沖區(qū)。接收消息功能忽略所有在起始字符之前接收到的字符。起始字符和起始字符之后接收 到的所有字符一起存入消息緩沖區(qū)。通常,對于所有消息都使用同一字符作為起始的ASCII碼協(xié)議,您可以使用起使字符檢測。設(shè)置: il = 0,sc = 1,bk = 0,SMW90/SMW190 = 無關(guān),SMB88/SMB188 = 起始字符
- 空閑線和起始字符:接收功能可啟動一個組合了空閑線和起始字符的消息。當(dāng)接收指令執(zhí)行時,接收消息功能檢測空閑線條件。在空閑線條件滿足后,接收消息功能搜尋的起始字符。如果接收到的字符不是起始字符,接收消息功能重新檢測空閑線條件。所有在空閑線條件 滿足和接收到起始字符之前接收到的字符被忽略掉。起始字符與字符串一起存入消息緩沖區(qū)。
空閑線時間應(yīng)該總是大于在波特率下傳輸一個字符(包括起始位、數(shù)據(jù)位、校驗(yàn)位和停止
位)的時間??臻e線時間的典型值為在波特率下傳輸三個字符的時間。
通常,對于消息之間小時間間隔并且消息的首字符是特定設(shè)備的站號或其他消息的協(xié)議,您可以使用這種類型的起始條件。這種方式尤其適用于在通訊連接上有多個設(shè)備的情況。 在這種情況下,只有當(dāng)接收到的消息的起始字符為特定的站號或者設(shè)備時,接收指令才會觸發(fā) 一個中斷。
設(shè) 置 : il = 1,sc = 1,bk = 0,SMW90/SMW190 > 0, SMB88/SMB188 = 起始字符
- 斷開檢測:當(dāng)接收到的數(shù)據(jù)保持為零值的時間大于完整的字符傳輸時間時,指示斷開。一個完 整字符傳輸時間定義為傳輸起始位、數(shù)據(jù)位、校驗(yàn)位和停止位的時間總和。如果接收指令被配 置為用接收一個斷點(diǎn)作為消息的起始,則任何在斷點(diǎn)之后接收到的字符都會存入消息緩沖區(qū)。 任何在斷點(diǎn)之前接收到的字符都被忽略。
通常,只有當(dāng)通訊協(xié)議需要時,才使用斷點(diǎn)檢測作為起始條件。
設(shè)置: il = 0,sc = 0,bk = 1,SMW90/SMW190 = 無關(guān),
SMB88/SMB188 = 無 關(guān)
- 斷開和起始字符:接收指令可配置為在接收一個斷開條件后開始接收字符,然后按順序接收特 定的起始字符。在斷點(diǎn)條件滿足之后,接收消息功能尋找特定的起始字符。如果收到了除起始 字符以外的任意字符,接收消息功能重新啟動尋找新的斷點(diǎn)。所有在斷點(diǎn)條件滿足和接收到起 始字符之前接收到的字符都會被忽略。起始字符與字符串一起存入消息緩沖區(qū)。
設(shè)置: il = 0,sc = 1,bk = 1,SMW90/SMW190 = 無關(guān),
SMB88/SMB188 = 起始字符
- 任意字符:接收指令可配置為立即啟動接收任意和所有字符,并將它們放入消息緩沖區(qū)。這是 空閑線檢測的一種特殊情況。在這種情況下,空閑線時間(SMW90或者SMW190)被設(shè)置為0。 這使得接收指令一經(jīng)執(zhí)行,就立即開始接收字符。
設(shè) 置 : il = 1,sc = 0,bk = 0,SMW90/SMW190 = 0,SMB88/SMB188 = 無 關(guān)用任意字符開始一條消息允許使用消息定時器,來監(jiān)控消息接收是否超時。這對于自由端口協(xié)
議的主站是非常有用的,并且當(dāng)在時間內(nèi),沒有來自從站的任何響應(yīng)的情況,也需要采取 超時處理。由于空閑線時間被設(shè)置為0,當(dāng)接收指令執(zhí)行時,消息定時器啟動。如果沒有其他終止條件滿足,消息定時器超時會結(jié)束接收消息功能。
設(shè) 置 : il = 1,sc = 0,bk = 0,SMW90/SMW190 = 0,SMB88/SMB188 = 無 關(guān)
c/m = 1,tmr = 1,SMW92 = 消息超時(毫秒)
接收指令支持幾種結(jié)束消息的方式。結(jié)束消息的方式可以是以下一種或者幾種的組合:
- 結(jié)束字符檢測:結(jié)束字符是用于消息結(jié)束的任意字符。在找到起始條件之后,接收指令檢 查每一個接收到的字符,并且判斷它是否與結(jié)束字符匹配。如果接收到了結(jié)束字符,將其存入 消息緩沖區(qū),接收結(jié)束。
通常,對于所有消息都使用同一字符作為結(jié)束的ASCII碼協(xié)議,您可以使用結(jié)束字符檢測。您 可以使用結(jié)束字符檢測與字符間定時器、消息定時器或者大字符計數(shù)相結(jié)合來結(jié)束一條
消息。
設(shè)置: ec = 1,SMB89/SMB189 = 結(jié)束字符
- 字符間定時器:字符間時間是從一個字符的結(jié)束(停止位)到下一個字符的結(jié)束(停止位)的時間。 如果兩個字符之間的時間間隔(包括第二個字符)超過了SMW92或者SMW192中的毫秒數(shù), 接收消息功能結(jié)束。接收到每個字符后,字符間定時器重新啟動。見圖6--12。
當(dāng)協(xié)議沒有特定的消息結(jié)束字符時,您可以用字符間定時器來結(jié)束一條消息。由于定時器總是 包含接收一個完整字符(包括起始位、數(shù)據(jù)位、校驗(yàn)位和停止位)的時間,因而該時間值應(yīng)設(shè)置為大于在波特率下傳輸一個字符的時間。
您可以使用字符間定時器與結(jié)束字符檢測或者大字符計數(shù)相結(jié)合,來結(jié)束一條消息。

圖6--12 使用字符間定時器來結(jié)束接收指令
- 消息定時器:消息定時器在啟動消息后的時間終止消息。接收消息功能的啟動條件一滿足,消息定時器就啟動。當(dāng)經(jīng)過的時間超出SMW92或者SMW192中的毫秒數(shù)時,消息定 時器時間到。見圖6--13。
通常,當(dāng)通訊設(shè)備不能保障字符中間沒有時間間隔或者使用調(diào)制解調(diào)器通訊時,您可以使用消 息定時器。對于調(diào)制解調(diào)器方式,您可以用消息定時器一個從消息開始算起,接收消息允 許的大時間。消息定時器的典型值是在當(dāng)前波特率下,接收到長消息所需時間值的大約
1.5倍。
可以使用消息定時器與結(jié)束字符檢測或者大字符計數(shù)相結(jié)合,來結(jié)束一條消息。 設(shè)置: c/m = 1,tmr = 1,SMW92/SMW192 = 超時(毫秒)

圖6--13 使用消息定時器來結(jié)束接收指令
- 大字符計數(shù):接收指令必須已知要接收的大字符數(shù)(SMB94或SMB194)。當(dāng)達(dá)到或者超出 這個值,接收消息功能結(jié)束。即使不會被用作結(jié)束條件,接收指令要求用戶一個大字符 個數(shù)。這是因?yàn)榻邮罩噶钚枰澜邮障⒌拇箝L度,這樣才能保證消息緩沖區(qū)之后的用戶 數(shù)據(jù)不會被覆蓋。
對于消息的長度已知并且恒定的協(xié)議,可以使用大字符計數(shù)來結(jié)束消息。大字符計數(shù)總是 與結(jié)束字符檢測、字符間定時器或者消息定時器結(jié)合在一起使用。
- 奇偶校驗(yàn)錯誤:當(dāng)硬件發(fā)出信號指示在接收的字符上有奇偶校驗(yàn)錯誤時,接收指令自動終止。 只有在SMB30或者SMB130中使能了校驗(yàn)位,才有可能出現(xiàn)校驗(yàn)錯誤。沒有辦法禁止此功能。
- 用戶終止:用戶程序可以通過執(zhí)行另一個在SMB87或SMB187中的啟用位(EN)設(shè)置為零的接收
指令來終止接收消息功能。這樣可以立即終止接收消息功能。
使用字符中斷控制接收數(shù)據(jù)
為了*適應(yīng)對各種協(xié)議的支持,您也可以使用字符中斷控制的方式接收數(shù)據(jù)。接收每個字符時都會 產(chǎn)生中斷。在執(zhí)行與接收字符事件相連的中斷程序之前,接收到的字符存入SMB2中,校驗(yàn)狀態(tài)(如果 使能的話)存入SM3.0。SMB2是自由端口接收字符緩沖區(qū)。在自由端口模式下,每一個接收到的字符 都會存放到這一位置,便于用戶程序訪問。SMB3用于自由端口模式。它包含一個校驗(yàn)錯誤標(biāo)志位。 當(dāng)接收字符的同時檢測到校驗(yàn)錯誤時,該位被置位。該字節(jié)的其他位被保留。利用校驗(yàn)位去丟棄消息 或向該消息發(fā)送否定應(yīng)答。
在較高的波特率下(38.4K到115.2K)使用字符中斷時,中斷之間的時間間隔會非常短。例如:在38.4 時為260微秒;在57.6K時為173微秒;在115.2K時為86微秒。確保您的中斷程序足夠短,不會丟失字 符或者使用接收指令。
提示
SMB2和SMB3共享端口0和端口1。當(dāng)接收端口0上的字符導(dǎo)致執(zhí)行附加在那個事件(中斷事件8)的中斷程序時,SMB2包含端口0上接收的字符,而SMB3包含該字符的奇偶校驗(yàn)狀態(tài)。當(dāng)接收端口1 上的字符導(dǎo)致執(zhí)行附加在那個事件(中斷事件25)的中斷程序時,SMB2包含端口1上接收的字符,而
SMB3包含該字符的奇偶校驗(yàn)狀態(tài)。

實(shí)例:發(fā)送和接收指令

實(shí)例:發(fā)送和接收指令
獲取端口地址和設(shè)置端口地址指令
獲取端口地址指令(GPA)讀取PORT的CPU口的站地址, 并將數(shù)值放入ADDR的地址中。
設(shè)置端口地址指令(SPA)將口的站地址(PORT)設(shè)置為ADDR指 定的數(shù)值。新地址不能保存。重新上電后,口地址將返回 到原來的地址值(用系統(tǒng)塊下載的地址)。
設(shè)置ENO=0的錯誤條件:
- 0006(間接尋址)
- 0004(試圖在中斷程序中執(zhí)行設(shè)置端口地址指令)
表6--14 獲取端口地址和設(shè)置端口地址指令的有效操作數(shù)
輸入/輸出 | 數(shù)據(jù)類型 | 操作數(shù) |
ADDR | BYTE | IB、QB、VB、MB、SMB、SB、LB、AC、*VD、*LD、*AC、常數(shù)(常數(shù)值僅用于設(shè)置端口地址指令。) |
PORT | BYTE | 常數(shù) 對于CPU 221、CPU 222、CPU 224: 0對于CPU 224XP、CPU 226: 0或1 |
比較指令

數(shù)值比較
比較指令用于比較兩個數(shù)值:
IN1 = IN2 IN1 >= IN2 IN1 <= IN2 IN1 > IN2 IN1 < IN2 IN1 <> IN2
字節(jié)比較操作是無符號的。整數(shù)比較操作是有符號的。雙字比較操作是有符號的。實(shí)數(shù)比較操作是有符號的。
對于LAD和FBD:當(dāng)比較結(jié)果為真時,比較指令接通觸點(diǎn)
(LAD)或輸出(FBD)。
對于STL:當(dāng)比較結(jié)果為真時,比較指令將1載入棧頂,再將
1與棧頂值作“與”或者“或”運(yùn)算(STL)。
當(dāng)您使用IEC比較指令時,您可以使用各種數(shù)據(jù)類型作為輸 入。但是,兩個輸入的數(shù)據(jù)類型必須*。
注意
下列情況是致命錯誤,并且會導(dǎo)致S7- 200立即停止執(zhí)行用
戶程序:
- 非法的間接地址(任意比較指令)
- 非法的實(shí)數(shù)(例如:NAN),(實(shí)數(shù)比較指令)
為了避免這些情況的發(fā)生,在執(zhí)行比較指令之前,要確保合 理使用了指針和存儲實(shí)數(shù)的數(shù)值單元。
不管功率流的狀態(tài)如何,比較指令都會被執(zhí)行。
表6--15 比較指令的有效操作數(shù)


實(shí)例:比較指令
字符串比較

字符串比較指令比較兩個字符串的ASCII碼字符:
IN1=IN2 IN1<>IN2
當(dāng)比較結(jié)果為真時,比較指令使觸點(diǎn)閉合(LAD)或者輸出接通(FBD),或者對1 進(jìn)行 LD, A 或 O 操作,并置入棧頂(STL)。
注意
下列情況是致命錯誤,并且會導(dǎo)致S7- 200立即停止執(zhí)行用
戶程序:
- 非法的間接地址(任意比較指令)
- 字符串的長度超過254個字符(字符串比較指令)
- 一個字符串的起始地址和長度使它不適合所的存儲 區(qū)(字符串比較指令)
為了避免這些情況的發(fā)生,在執(zhí)行比較指令之前,要確保合 理使用了指針和保存ASCII碼字符串的存儲區(qū)。確保一個保存ASCII碼字符串的緩沖區(qū)能夠在的存儲區(qū)完整的
保留。
不管功率流的狀態(tài)如何,比較指令都會被執(zhí)行。
表6--16 字符串比較指令的有效操作數(shù)
輸入/輸出 | 類型 | 操作數(shù) |
IN1 | STRING | VB,LB,*VD,*LD,*AC,常數(shù) |
IN2 | STRING | VB、LB、*VD、*LD、*AC |
OUT | BOOL | I、Q、V、M、SM、S、T、C、L、功率流 |
轉(zhuǎn)換指令

標(biāo)準(zhǔn)轉(zhuǎn)換指令
數(shù)字轉(zhuǎn)換
字節(jié)轉(zhuǎn)為整數(shù)(BTI)、整數(shù)轉(zhuǎn)為字節(jié)(ITB)、整數(shù)轉(zhuǎn)為雙整數(shù)
(ITD)、雙整數(shù)轉(zhuǎn)為整數(shù)(DTI)、雙整數(shù)轉(zhuǎn)為實(shí)數(shù)(DTR)、BCD 碼轉(zhuǎn)為整數(shù)(BCDI)和整數(shù)轉(zhuǎn)為BCD碼(IBCD)。以上指令將輸入 值IN轉(zhuǎn)換為的格式并存儲到由OUT的輸出值存儲區(qū)中。例如:您可以將雙整數(shù)值轉(zhuǎn)為實(shí)數(shù)值; 您也可以在整數(shù)和BCD碼格式之間相互轉(zhuǎn)換。
四舍五入和取整
四舍五入指令(ROUND)將一個實(shí)數(shù)轉(zhuǎn)為一個雙整數(shù)值,并將 四舍五入的結(jié)果存入OUT的變量中。
取整指令(TRUNC)將一個實(shí)數(shù)轉(zhuǎn)為一個雙整數(shù)值,并將實(shí)數(shù)的整數(shù)部分作為結(jié)果存入OUT的變量中。
分段
段碼指令(SEG)允許您產(chǎn)生一個點(diǎn)陣,用于點(diǎn)亮七段碼顯示器的各個段。
表6--17 標(biāo)準(zhǔn)轉(zhuǎn)換指令的有效操作數(shù)
輸入/輸出 | 數(shù)據(jù)類型 | 操作數(shù) |
IN | BYTE | IB、QB、VB、MB、SMB、SB、LB、AC、*VD、*LD、*AC、常數(shù) |
| WORD、INT | IW、QW、VW、MW、SMW、SW、T、C、LW、AIW、AC、*VD、*LD、*AC、常數(shù) |
| DINT | ID、QD、VD、MD、SMD、SD、LD、HC、AC、*VD、*LD、*AC、常數(shù) |
| REAL | ID、QD、VD、MD、SMD、SD、LD、AC、*VD、*LD、*AC、常數(shù) |
OUT | BYTEWORD、INT DINT、REAL | IB、QB、VB、MB、SMB、SB、LB、AC、*VD、*LD、*ACIW、QW、VW、MW、SMW、SW、T、C、LW、AIW、AC、*VD、*LD、 *AC ID、QD、VD、MD、SMD、SD、LD、AC、*VD、*LD、*AC |

提示
如果想將一個整數(shù)轉(zhuǎn)換成實(shí)數(shù),先用整數(shù)轉(zhuǎn)雙整數(shù)指令,再用雙整數(shù)轉(zhuǎn)實(shí)數(shù)指令。
四舍五入取整和取整指令的操作
四舍五入取整指令(ROUND)將實(shí)數(shù)值IN轉(zhuǎn)換成雙整數(shù)值,并且 存入OUT的變量中。如果小數(shù)部分大于等于0.5,則數(shù)字向上取整。
取整指令(TRUNC)將一個實(shí)數(shù)值IN轉(zhuǎn)換成一個雙整數(shù),并且存 入OUT的變量中。只有實(shí)數(shù)的整數(shù)部分被轉(zhuǎn)換,小數(shù)部分 舍去。
使ENO=0的錯誤條件:
受影響的SM標(biāo)志位:
如果所轉(zhuǎn)換的不是一個有效的實(shí)數(shù),或者其數(shù)值太大以致于無法在輸出中表示,則溢出標(biāo)志位置位并 且輸出不會改變。

實(shí)例:標(biāo)準(zhǔn)轉(zhuǎn)換指令
段碼指令的操作
要點(diǎn)亮七段碼顯示器中的段,可以使用段碼指令。段碼指令將IN中的字符(字節(jié))轉(zhuǎn)換生成一個點(diǎn)
陣并存入OUT的變量中。

ASCII碼轉(zhuǎn)換指令
有效的ASCII碼字符為十六進(jìn)制的30到39和41到46。
在ASCII碼和十六進(jìn)制數(shù)之間相互轉(zhuǎn)換
ASCII碼轉(zhuǎn)十六進(jìn)制數(shù)指令(ATH)將一個長度為LEN從IN開始的
ASCII碼字符串轉(zhuǎn)換成從OUT開始的十六進(jìn)制數(shù)。十六進(jìn)制數(shù)轉(zhuǎn)ASCII碼指令(HTA)將從輸入字節(jié)IN開始的十六進(jìn)制數(shù),轉(zhuǎn)換 成從OUT開始的ASCII碼字符串。被轉(zhuǎn)換的十六進(jìn)制數(shù)的位數(shù)由長度LEN給出。
可轉(zhuǎn)換的ASCII字符或十六進(jìn)制數(shù)字的大數(shù)目是255。有效
ASCII輸入
有效的ASCII碼輸入字符是0到9的十六進(jìn)制數(shù)代碼值30到39, 和大寫字符A到F的十六進(jìn)制數(shù)代碼值41到46這些字母數(shù)字 字符。
使ENO=0的錯誤條件:
- 7(非法的ASCII碼)只對ATH有效
- 0006(間接尋址)
- 0091(操作數(shù)超出范圍)
受影響的SM標(biāo)志位:
將數(shù)值轉(zhuǎn)為ASCII碼
整數(shù)轉(zhuǎn)ASCII碼(ITA)、雙整數(shù)轉(zhuǎn)ASCII碼(DTA)和實(shí)數(shù)轉(zhuǎn)ASCII 碼(RTA)指令,分別將整數(shù)、雙整數(shù)或?qū)崝?shù)值轉(zhuǎn)換成ASCII碼字符。
廣西西門子S7-1200PLC代理商(價格實(shí)惠)