前段時間讀一位網友給發來的程序,發現了一個使用CP進行通訊的程序,我對CP的控制很感興趣,就查找了下相關介紹,在這里和大家分享一下.
接受CP傳出的數據
FC 12 PNIO_RECV:
程序塊 PNIO_RECV用于在 CP 的 PROFINET IO 控制器模式或 PROFINET IO 設備模式下接收數據。
1.作為PROFINET IO控制器運行
該塊接收了來自PROFINETIO設備的過程數據(控制器輸入)以及來自指定輸入區域內的PROFINET IO設備的IO提供者狀態(IOPS)。
2.作為PROFINET IO設備運行
該塊接收通過PROFINETIO控制器傳送的數據(已組態的IO地址)和PROFINET IO控制器的IO提供者狀態(IOPS),并將其寫入到PROFINETIO設備的CPU上為過程輸出保留的數據區內。
IO接口定義
CPLADDR : IN 模塊起始地址
MODE:IN
MODE | X0H:- IO控制器模式- IO設備模式(無并行操作)- | Y = 選擇IO控制器IO設備模式;X = 選擇在CHECK_IOPS中僅傳送組消息還是同時在IOPS中傳送狀態位。 |
X1H:IO設備模式(同時使用兩個模式) | ?只要CP不同時作為IO控制器和IO設備操作,就仍可繼續使用版本1.0的FC | |
0YH在IOPS中傳送狀態位。 | 當MODE=0時,FC V2.0及以上版本的特性與FC V1.0版本相同 | |
8YH限制CHECK_IOPS中的組消息;IOPS中無狀態位 | 當MODE=0和MODE = 1時,FC V3.0及以上版本的特性與FC V2.0版本相同 |
RECV IN_OUT
RECV | 存儲器位區 | 指定地址和長度 |
數據塊區 |
IO控制器模式: 長度應與所組態的分布式IO的總長度相匹配,據此也可傳送地址間距。 長度也可以比分布式I/O的總長度短,例如,當塊在OB中多次被調用時。然而,總長度必須至少能滿足一次調用需要。 |
|
IO設備模式: 數據結構根據在PROFINET IO控制器鏈上為此PROFINET IO設備組態的輸出模塊的插槽的順序獲得的,并且它們的長度沒有地址間距。 |
LENINPUT
LEN | 數值 > 0用戶可在CP文檔中的性能數據中查找要傳送的輸出數據的最大總長度。 |
以字節為單位的將要傳送的數據區的長度。 無論如何組態,將始終從地址0開始傳送數據。請注意,包括長度為1的IO地址"0"。 |
控制器和設備模式的最大總長度可以不同 |
IO控制器模式: 1.必須在此指定設備的最高組態地址。各個區域不會歸組在一起。 如果多次調用塊,LEN也可能比最高地址短。應至少在一個調用中指定最高地址(比較"RECV"參數)。 2.數據將按照邏輯地址的次序進行傳送(僅用于PROFIBUS DP)。 |
|
IO設備模式: 1.按在PROFINET IO控制器鏈上為此PROFINET IO設備組態的輸入模塊的插槽的順序傳送數據。2.注意事項: 必須確保此處編程的長度和PROFINET IO控制器的組態一致。為設備傳送包括所有間距的整個數據區長度 |
NDR OUTPUT
0: - 1:接受數據 |
該參數指示是否無錯完成該作業。 |
ERROR OUTPUT
0: - 1:錯誤 |
故障代碼 |
STATUS OUTPUT狀態代碼
CHECK_IOPS | OUTPUT | 0: 所有IOPS均設置為GOOD | 指示是否需要對IOPS狀態區進行評估的組消息。 |
1: 至少一個IOPS設置為BAD | 無論MODE參數如何,始終返回CHECK_IOPS。 |
IOPS OUTPUT
數據區的地址指向下列兩個位置之一: 1存儲器位區 2數據塊區 |
IO提供者狀態每一用戶數據字節傳送一個狀態位。要求:在MODE參數中請求傳送(MODE=0或MODE=1)。 |
長度:對于最大值,請參見本手冊與設備相關的B部分的"性能數據"部分。這對控制器或設備模式有所不同 | 該參數僅在該模式下相關。長度信息取決于RECV參數中的長度(每字節一位) =(長度LEN + 7/ 8)控制器模式:地址間距也根據RECV參數進行傳送。 |
設備模式:地址間距不傳送。該塊將啟動地址0的狀態傳送。 注意:ANY指針的最小長度為 (長度LEN + 7/8) |
ADD_INFO OUTPUT
附加診斷信息在控制器模式中: 0: 無報警 >0: 未決報警的數目 在設備模式中,參數始終= 0 |
參數擴展注意事項: 當沒有在PROFINET IO控制器上組態INPUT地址時,也更新ADD_INFO參數。這種情況下,通過長度LEN > 0 (例如,LEN = 1字節)調用PNIO_RECV塊。然后傳送1字節的地址間距。 |
參數擴展可用于從下列固化程序版本起的CP: 從固化程序V2.0起的CP 343-1 (EX30) 從固化程序V2.0起的CP 343-1 LeaN (CX10) 從固化程序V1.0起的CP 343-1 Advanced (GX30) |
|
在較早的固化程序版本中,保留該參數 |
例:
call fc 12 ( CPLADDR :=W#16#0100, MODE :=B#16#80, LEN :=7, IOPS :=P#DB11.DBX7.0 BYTE 1, NDR :=M 74.0, ERROR :=M 74.1, STATUS :=MW76, CHECK_IOPS :=M74.2, ADD_INFO :=MW 26, RECV :=P#DB11.DBX0.0 BYTE 7 ) |
//調用PNIO_RECV //來自硬件配置的模塊地址 //控制器模式或設備模式; //不傳送IOCS狀態位。 //數據區長度 //DB11中的每個接收數據字節對應一個位狀態 //用于返回參數NDR的地址 //用于返回參數ERROR的地址 //用于返回參數STATUS的地址 //用于返回參數CHECK_IOPS的地址 //診斷消息 //DB11中的接收數據 (7個字節) |
FC11 PNIO_SEND給CP發出的數據
工作原理
程序塊 PNIO_SEND用于在 CP 的 PROFINET IO 控制器模式或 PROFINET IO 設備模式下傳送數據。
1.作為PROFINET IO控制器運行
塊將指定輸出區的過程數據(輸出)傳送到CP以便轉發到PROFINET IO設備。塊以狀態代碼形式返回PROFINET IO設備輸出的IO使用者狀態(IOCS)。
2.作為PROFINET IO設備運行
塊讀取PROFINETIO設備上CPU的預處理過程輸入,并將它們傳送給PROFINET IO控制器(已組態的I地址);塊還將返回作為狀態碼的PROFINET IO控制器的IO使用者狀態(IOCS)。
與FC12不同的IO只有一個:SENDIN_OUT
數據區的地址指向下列兩個位置之一: | 指定地址和長度IO控制器模式:長度應與所組態的分布式IO的總長度相匹配,據此也可傳送地址間距。 |
1存儲器位區 2數據塊區 |
長度也可以比分布式I/O的總長度短,例如,當塊在OB中多次被調用時。然而,總長度必須至少能滿足一次調用需要。 |
IO設備模式:數據結構根據在PROFINET IO控制器鏈上為此PROFINET IO設備組態的輸入模塊的插槽的順序獲得的,并且它們的長度沒有地址間距。注意: 1.無論如何組態地址(不管所組態的最低地址如何),塊將開始傳送地址0上的數據。 2.不允許指定I/O區,因為在I/O可接受數據之前,必須檢查IOCS是否是GOOD。 |
原文標題:STEP7關于PLC所帶PC的用法讀取控制塊
文章出處:【微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
plc
+關注
關注
5013文章
13329瀏覽量
464137 -
PC
+關注
關注
9文章
2093瀏覽量
154354 -
控制塊
+關注
關注
0文章
5瀏覽量
6399 -
STEP7
+關注
關注
4文章
103瀏覽量
32632
原文標題:STEP7關于PLC所帶PC的用法讀取控制塊
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論