西門子s7-1200如何點對點 (ptp) 通信cpu 支持下列基于字符的串行協(xié)議的點對點通信(ptp):
ptpussmodbusptp可提供大的自由度和靈活性,但需要在用戶程序中包含大量的實現(xiàn)。
ptp 可用于實現(xiàn)多種可能性:
能夠將信息直接發(fā)送到外部設備,例如,打印機能夠從其它設備(例如,條碼閱讀器、rfid 閱讀器、第三方照相機或視覺系統(tǒng)以及許多其它類 型的設備)接收信息能夠與其它設備(例如,gps 設備、第三方照相機或視覺系統(tǒng)、無線調制解調器 以及更多其它設備)交換信息(發(fā)送和接收數(shù)據(jù))這種類型的 ptp 通信屬于串行通信,它使用標準 uart 來支持多種波特率和奇偶校驗選項。rs232 和 rs422/485 通信模塊 (cm 1241) 以及 rs485 通信板 (cb 1241) 提供了用于執(zhí)行 ptp 通信的電氣接口
通過profibus或profinet的ptp
v4.1版的s7-1200cpu與step7v13sp1一起使用可以擴展ptp的功能,使用戶能夠使用profinet或profibus分布式i/o機架與各種設備(rfid閱讀器、gps設備和其它設備)通信。
profinet:可以將s7-1200cpu的以太網(wǎng)接口連接至profinet接口模塊??赏ㄟ^機架中ptp通信模塊以接口模塊實現(xiàn)與ptp設備的串行通信。profibus:在s7-1200cpu機架左邊插入profibus通信模塊。將profibus通信模塊連接至profibus接口模塊的機架??赏ㄟ^機架中ptp通信模塊以接口模塊實現(xiàn)與ptp設備的串行通信。出于這個原因,s7-1200支持兩組ptp指令:
早期點對點指令:這些指令適用于v4.0版之前的s7-1200,并且只能通過 cm1241通信模塊或cb1241通信板進行串行通信。點對點指令:這些指令具備早期指令的所有功能,并且增添了連接profinet和profibus分布式i/o的功能。這些點對點指令可用于組態(tài)分布式i/o機架中ptp通信模塊與ptp設備之間的通信。要使用這些點對點指令,s7-1200cm 1241 模塊的固件版本必須不得低于v2.1。說明用于s7-1200的v4.1版本時,可以對所有類型的點對點通信使用點對點指令:串行通信、基于profinet的串行通信和基于profibus的串行通信。step7提供早期點對點指令的目的僅是為了支持現(xiàn)有程序。無論對于v4.1cpu或v4.0還是更早版本的cpu,早期指令仍然有效。無須對之前程序的指令進行轉換。
組態(tài)通信端口
您可以使用以下各種方法組態(tài)通信接口:
使用step7中的設備組態(tài)組態(tài)端口參數(shù)(波特率和奇偶校驗)、發(fā)送參數(shù)和接收參數(shù)。cpu存儲設備組態(tài)設置,并在循環(huán)上電和從run模式切換到stop模式后應用這些設置。使用port_config、send_config和receive_config指令設置參數(shù)。這些指令設置的端口設置在cpu處于run模式期間有效。 在切換到stop模式或循環(huán)上電后,這些端口設置會恢復為設備組態(tài)設置。組態(tài)硬件設備之后,通過選擇機架上的某個cm或cb(如果已組態(tài))來組態(tài)通信接口的參數(shù)。窗口中的“屬性”(properties) 選項卡顯示所選 cm 或 cb 的參數(shù)。 選擇“端口組態(tài)”(port configuration) 以編輯以下參數(shù):
波特率奇偶校驗每個字符的數(shù)據(jù)位數(shù)停止位的數(shù)目流控制( rs232)等待時間
對于cm1241rs232和cbrs485(除僅cm1241rs232支持的流控制外),無論是組態(tài)rs232或rs485通信模塊還是rs485
通信板,端口組態(tài)參數(shù)都是相同的。但是,參數(shù)值可以不同。對于cm1241rs422/485,您還具有下列所示的額外端口組態(tài)選項。cm1241rs422/485模塊的422模式還支持軟件流控制。
選擇“端口組態(tài)”(port configuration) 以編輯以下rs422/485 參數(shù):
1、“工作模式”(operating mode):
– 全雙工 (rs422) 四線制模式(點對點連接)
– 全雙工 (rs422) 四線制模式(多點主站)
– 全雙工 (rs422) 四線制模式(多點從站)
– 半雙工 (rs485) 兩線制模式
2、“接收線路初始狀態(tài)”(receive line initial state):
– 無
– 正向偏置(信號 r(a) 0v、信號 r(b) 5v)
step7用戶程序還可通過port_config指令組態(tài)端口或更改現(xiàn)有組態(tài)。指令主題提供更多關于工作模式和初始線路狀態(tài)以及其它參數(shù)的詳細信息。
參數(shù) 定義
波特率 波特率的默認值為9.6kbps。有效選項有:300波特、600波特、1.2kb、2.4 kb、4.8 kb、9.6 kb、19.2 kb、38.4 kb、57.6 kb、76.8 kb 和115.2 kb。
奇偶校驗 奇偶校驗的默認值是無奇偶校驗。有效選項有:
無奇偶校驗、偶校驗、奇校驗、傳號(奇偶校驗位始終設為
1)和空號(奇偶校驗位始終設為0)。
每個字符的數(shù)據(jù)位數(shù) 字符中的數(shù)據(jù)位數(shù)。有效選擇為7或8。
停止位的數(shù)目 停止位的數(shù)目可以是1或2。默認值是1。
流控制 對于rs232通信模塊,可以選擇硬件或軟件流控制。
如果選擇硬件流控制,則可以選擇是rts信號始終激活還是切換rts。
如果選擇軟件流控制,則可以定義xon和xoff字符。
rs485通信接口不支持流控制。cm1241rs422/485模塊的422
模式支持軟件流控制。
等待時間 等待時間是指cm或cb在斷言rts后等待接收cts的時間,或者在接收xoff后等待接收xon的時間,具體取決于流控制類型。 如果在通信接口收到預期的cts或xon之前超過了等待時間,cm或cb將中止傳送操作并向用戶程序返回錯誤。等待時間,以毫秒表示。范圍是 0到65535毫秒。
工作模式 選擇工作模式rs422或rs485以及網(wǎng)絡組態(tài)。
接收線路初始狀態(tài) 選擇偏置選項。有效值為無、正向偏置和反向偏置。 反向偏置用于檢測電纜斷線。
管理流控制
流控制是指為了不丟失數(shù)據(jù)而用來平衡數(shù)據(jù)發(fā)送和接收的一種機制。 流控制可確保傳送設備發(fā)送的信息量不會超出接收設備所能處理的信息量。 流控制可以通過硬件或軟件來實現(xiàn)。rs232cm支持硬件及軟件流控制。rs485cm和 cb不支持流控制。cm1241rs422/485模塊的422模式支持軟件流控制。可在組態(tài)端口時或使用port_cfg指令流控制類型。
硬件流控制通過請求發(fā)送(rts,requesttosend)和允許發(fā)送(cts,cleartosend)通信信號來實現(xiàn)。對于rs232cm,rts信號從引腳7輸出,而cts信號通過引腳8接收。
rs232cm是dte(dataterminalequipment,數(shù)據(jù)終端設備)設備,其將rts 斷言為輸出并將cts作為輸入來監(jiān)視。
硬件流控制:rts切換
如果為rs232cm啟用rts切換的硬件流控制,則模塊會將rts 信號設置為激活狀態(tài)以發(fā)送數(shù)據(jù)。它還會監(jiān)視cts 信號以確定接收設備是否能接收數(shù)據(jù)。cts信號激活后,只要cts 信號保持激活狀態(tài),模塊便可發(fā)送數(shù)據(jù)。如果cts 信號變?yōu)榉羌せ顮顟B(tài),則傳送必須停止。
cts信號變?yōu)榧せ顮顟B(tài)時,傳送會繼續(xù)執(zhí)行。如果cts 信號在組態(tài)的等待時間內未激活,則模塊會中止傳送并向用戶程序返回錯誤。在端口組態(tài)中等待時間。
對于需要“傳送已激活”信號的設備,適合使用rts切換流控制。 例如,無線調制解調器使用rts作為“鍵”信號來激勵無線發(fā)送器。rts 切換流控制對于標準電話調制解調器不起作用。對電話調制解調器使用“rts 始終激活”選項。
硬件流控制:rts始終激活
在“rts始終激活”模式下,cm1241 默認情況下將rts設置為激活狀態(tài)。 設備(如電話調制解調器等)監(jiān)視來自cm的rts 信號,并將該信號用作允許發(fā)送信號。調制解調器僅在rts處于激活狀態(tài)時才向cm傳送數(shù)據(jù),即,電話調制解調器在見到激活的cts信號后發(fā)送數(shù)據(jù)。如果rts 處于非激活狀態(tài),電話調制解調器不向cm傳送數(shù)據(jù)。
要使調制解調器隨時都能向cm發(fā)送數(shù)據(jù),請組態(tài)“rts始終激活”硬件流控制。cm因此會將rts信號設置為始終激活。即使模塊無法接受字符,cm也不會將rts 設置為非激活狀態(tài)。傳送設備必須確保不會使cm的接收緩沖區(qū)超負荷運行。
利用數(shù)據(jù)終端就緒(dtr)和數(shù)據(jù)設備就緒(dsr)信號
對于這兩種硬件流控制類型的任何一種,cm都會將dtr設置為激活狀態(tài)。只有當dsr信號變?yōu)榧せ顮顟B(tài)時,模塊才會進行傳送。僅在發(fā)送操作開始時評估dsr的狀態(tài)。 如果dsr在傳送操作開始后變?yōu)榉羌せ顮顟B(tài),將不能暫停傳送操作。
軟件流控制
軟件流控制使用消息中的特殊字符來實現(xiàn)流控制。將組態(tài)表示xon和xoff的十六進制字符。
xoff指示傳送必須停止。xon指示傳送可以繼續(xù)。xoff和xon不得是相同的字符。傳送設備從接收設備收到xoff字符時,將停止傳送。傳送設備收到xon字符時,傳送又繼續(xù)進行。如果cm在通過端口組態(tài)的等待時間內沒有收到xon字符,它將中止傳送并向用戶程序返回錯誤。
軟件流控制需要全雙工通信,因為在傳送過程中接收伙伴必須能夠將xoff發(fā)送到傳送伙伴。軟件流控制只能用于僅包含ascii字符的消息。 二進制協(xié)議無法使用軟件流控制。
組態(tài)傳送(發(fā)送)和接收參數(shù)在cpu可進行ptp通信前,必須組態(tài)傳送(或發(fā)送)消息和接收消息的參數(shù)。 這些參數(shù)決定了在向目標設備傳送消息或從目標設備接收消息時的通信工作方式。
組態(tài)傳送(發(fā)送)參數(shù)在 cpu 的設備組態(tài)中,通過設置所選接口的“傳送消息組態(tài)”(transmit message configuration) 屬性,來組態(tài)通信接口傳送數(shù)據(jù)的方式。
還可以使用send_config指令,從用戶程序動態(tài)組態(tài)或更改傳送消息參數(shù)。在用戶程序中通過send_config指令設置的參數(shù)值會覆蓋“傳送消息組態(tài)”(transmitmessageconfiguration)屬性。請注意,發(fā)生掉電時,cpu不會保留通過send_config指令設置的參數(shù)。
組態(tài)接收參數(shù)在cpu的設備組態(tài)中,可以組態(tài)通信接口接收數(shù)據(jù)以及識別消息開始和結束的方式。 在所選接口的“接收消息組態(tài)”(receive message configuration)屬性中設置這些參數(shù)。
還可以在用戶程序中使用receive_config指令,
說明在用戶程序中通過receive_config指令設置的參數(shù)值會覆蓋“接收消息組態(tài)”(receivemessageconfiguration)屬性。請注意,發(fā)生掉電或轉為stop狀態(tài)時,cpu不會保留通過rcv_cfg指令設置的參數(shù)。
消息開始條件
用戶可以決定通信接口識別消息開始的方式。 在滿足所組態(tài)的結束條件之前,開始字符以及組成消息的字符會一直進入接收緩沖區(qū)。
可以多個開始條件。 如果多個開始條件,則只有在滿足所有開始條件后才認為消息開始。 例如,如果用戶組態(tài)了線路空閑時間和特定開始字符,cm 或cb將首先查找要滿足的線路空閑時間要求,然后cm將查找的開始字符。 如果收到其它某個字符而不是的開始字符,cm 或cb將通過再次查找線路空閑時間來重新啟動消息開始條件搜索。
參數(shù) 定義
以任意字符開始 “任意字符”條件,成功接收任何字符都將表示消息開始。該字符是消息中的個字符。
線路中斷 “線路中斷”條件在接收中斷字符后開始消息接收操作。
線路空閑 “線路空閑”條件在接收線路空閑或平靜了位時間后開始消息接收操作。一旦出現(xiàn)該條件,即啟動消息接收。
①字符
②重啟線路空閑定時器
③檢測到線路空閑并啟動消息接收操作
參數(shù) 定義
特殊條件: 通過特殊字符指示消息開始。然后,該字符便成為消息中的個字符。
通過單個字符識別消息 在該特定字符前接收到的任何字符都將被丟棄。默認字符是stx。
開始
特殊條件: 通過多四個組態(tài)序列中的一個特殊字符序列來指示消息開始。
通過字符序列識別消息 可以為每個序列多5個字符。
開始(recognize 對于每個字符位置,可以一個特定的十六進制字符,或者在序列匹配時
message start witha 忽略該字符(通配符字符)。
charactersequence) 字符序列中后一個特定字符終止該開始條件序列。
程序根據(jù)組態(tài)的開始條件對進入序列進行評估,直到滿足開始條件為止。
只要滿足了開始序列,就會開始評估結束條件。
多可組態(tài)四個特定字符序列。
如果幾個不同的字符序列都指示消息開始,則使用多序列開始條件。
如果與其中一個字符序列相匹配,消息就會開始。
檢查開始條件的順序是:
線路空閑線路中斷字符或字符序列 檢查多個開始條件時,如果有一個條件沒有滿足,則cm或cb將從個所需的條件開始重新啟動檢查。cm或cb確定已滿足啟動條件后,將開始評估結束條件。示例組態(tài):消息在兩個字符序列出現(xiàn)一個時開始
請注意以下消息開始條件組態(tài):
對于該組態(tài),只要出現(xiàn)其中一個序列,即會滿足開始條件:
接到一個由五個字符構成的序列,且其個字符是0x6a而第五個字符是0x1c時。對于該組態(tài),位置2、3和4的字符可以是任意字符。 在接到第五個字符后,將開始評估結束條件。接到兩個連續(xù)的0x6a字符(前面為任意字符)時。在這種情況下,會在接到第二個 0x6a后開始評估結束條件(3個字符)。個0x6a前面的字符包含在開始條件中。滿足該開始條件的實例序列有:<任意字符> 6a6a6a 12 14 181c6a 44 a5 d21c消息結束條件
用戶還可以組態(tài)通信接口識別消息結束的方式。 可以組態(tài)多個消息結束條件。 如果出現(xiàn)組態(tài)條件中的任何一個,消息就會結束。
例如,可以采用消息超時 300 ms、字符間超時 40 個位的時間以及大長度 50個字節(jié)作為消息結束的結束條件。 如果接收消息的時間超過 300ms、任意兩個字符間的間隔超過 40 個位的時間或接收到 50 個字節(jié),消息即會結束。
示例組態(tài):通過字符序列結束消息
請注意以下消息結束條件組態(tài):
在這種情況下,當接收到兩個連續(xù)的0x6a字符(后跟任意兩個字符)時,即滿足結束條件。0x6a0x6a序列前面的字符不是結束字符序列的組成部分。終止結束字符序列時需要在0x6a0x6a序列后面加兩個字符。字符位置4和5中接收的值不相關,但必須接收它們才能滿足結束條件。
說明如果想用字符序列來指示消息的結束,應將該序列放置在后一個字符位置。在上面的示例中,如果想用0x6a0x6a結束不帶任何尾隨字符的消息,應在字符位置4和5中組態(tài)0x6a。
在消息中消息長度
選擇在消息中包括消息長度這一特殊條件時,必須提供三個用于定義消息長度相關信息的 參數(shù)。
實際消息結構會因所用的協(xié)議而變化。三個參數(shù)如下所示:
n:消息中出現(xiàn)長度說明符的字符位置(從1開始)長度大?。洪L度說明符的字節(jié)數(shù)(1、2或4)長度m:跟在長度說明符后、不包括在長度計數(shù)范圍內的字符數(shù)結束字符可不連續(xù)。“長度 m”值可用于大小不包含在長度字段中的校驗和字段的長度。