0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)使用CP進(jìn)行通訊的程序

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 2020-09-04 17:31 ? 次閱讀

前段時(shí)間讀一位網(wǎng)友給發(fā)來的程序,發(fā)現(xiàn)了一個(gè)使用CP進(jìn)行通訊的程序,我對CP的控制很感興趣,就查找了下相關(guān)介紹,在這里和大家分享一下.

接受CP傳出的數(shù)據(jù)

FC 12 PNIO_RECV:

工作原理

程序塊 PNIO_RECV用于在 CP 的 PROFINET IO 控制器模式或 PROFINET IO 設(shè)備模式下接收數(shù)據(jù)。

1.作為PROFINET IO控制器運(yùn)行

該塊接收了來自PROFINETIO設(shè)備的過程數(shù)據(jù)(控制器輸入)以及來自指定輸入?yún)^(qū)域內(nèi)的PROFINET IO設(shè)備的IO提供者狀態(tài)(IOPS)。

2.作為PROFINET IO設(shè)備運(yùn)行

該塊接收通過PROFINETIO控制器傳送的數(shù)據(jù)(已組態(tài)的IO地址)和PROFINET IO控制器的IO提供者狀態(tài)(IOPS),并將其寫入到PROFINETIO設(shè)備的CPU上為過程輸出保留的數(shù)據(jù)區(qū)內(nèi)。

IO接口定義

CPLADDR : IN 模塊起始地址

MODE:IN

MODE X0H:- IO控制器模式- IO設(shè)備模式(無并行操作)- Y = 選擇IO控制器IO設(shè)備模式;X = 選擇在CHECK_IOPS中僅傳送組消息還是同時(shí)在IOPS中傳送狀態(tài)位。
X1H:IO設(shè)備模式(同時(shí)使用兩個(gè)模式) ?只要CP不同時(shí)作為IO控制器和IO設(shè)備操作,就仍可繼續(xù)使用版本1.0的FC
0YH在IOPS中傳送狀態(tài)位。 當(dāng)MODE=0時(shí),F(xiàn)C V2.0及以上版本的特性與FC V1.0版本相同
8YH限制CHECK_IOPS中的組消息;IOPS中無狀態(tài)位 當(dāng)MODE=0和MODE = 1時(shí),F(xiàn)C V3.0及以上版本的特性與FC V2.0版本相同

RECV IN_OUT

RECV 存儲器位區(qū) 指定地址和長度
數(shù)據(jù)塊區(qū) IO控制器模式:
長度應(yīng)與所組態(tài)的分布式IO的總長度相匹配,據(jù)此也可傳送地址間距。
長度也可以比分布式I/O的總長度短,例如,當(dāng)塊在OB中多次被調(diào)用時(shí)。然而,總長度必須至少能滿足一次調(diào)用需要。
IO設(shè)備模式:
數(shù)據(jù)結(jié)構(gòu)根據(jù)在PROFINET IO控制器鏈上為此PROFINET IO設(shè)備組態(tài)的輸出模塊的插槽的順序獲得的,并且它們的長度沒有地址間距。

LENINPUT

LEN 數(shù)值 > 0用戶可在CP文檔中的性能數(shù)據(jù)中查找要傳送的輸出數(shù)據(jù)的最大總長度。 以字節(jié)為單位的將要傳送的數(shù)據(jù)區(qū)的長度。
無論如何組態(tài),將始終從地址0開始傳送數(shù)據(jù)。請注意,包括長度為1的IO地址"0"。
控制器和設(shè)備模式的最大總長度可以不同 IO控制器模式:
1.必須在此指定設(shè)備的最高組態(tài)地址。各個(gè)區(qū)域不會歸組在一起。
如果多次調(diào)用塊,LEN也可能比最高地址短。應(yīng)至少在一個(gè)調(diào)用中指定最高地址(比較"RECV"參數(shù))。
2.數(shù)據(jù)將按照邏輯地址的次序進(jìn)行傳送(僅用于PROFIBUS DP)。
IO設(shè)備模式:
1.按在PROFINET IO控制器鏈上為此PROFINET IO設(shè)備組態(tài)的輸入模塊的插槽的順序傳送數(shù)據(jù)。2.注意事項(xiàng):
必須確保此處編程的長度和PROFINET IO控制器的組態(tài)一致。為設(shè)備傳送包括所有間距的整個(gè)數(shù)據(jù)區(qū)長度

NDR OUTPUT

0: -
1:接受數(shù)據(jù)
該參數(shù)指示是否無錯(cuò)完成該作業(yè)。

ERROR OUTPUT

0: -
1:錯(cuò)誤
故障代碼

STATUS OUTPUT狀態(tài)代碼

CHECK_IOPS OUTPUT 0: 所有IOPS均設(shè)置為GOOD 指示是否需要對IOPS狀態(tài)區(qū)進(jìn)行評估的組消息。
1: 至少一個(gè)IOPS設(shè)置為BAD 無論MODE參數(shù)如何,始終返回CHECK_IOPS。

IOPS OUTPUT

數(shù)據(jù)區(qū)的地址指向下列兩個(gè)位置之一:
1存儲器位區(qū)
2數(shù)據(jù)塊區(qū)
IO提供者狀態(tài)每一用戶數(shù)據(jù)字節(jié)傳送一個(gè)狀態(tài)位。要求:在MODE參數(shù)中請求傳送(MODE=0或MODE=1)。
長度:對于最大值,請參見本手冊與設(shè)備相關(guān)的B部分的"性能數(shù)據(jù)"部分。這對控制器或設(shè)備模式有所不同 該參數(shù)僅在該模式下相關(guān)。長度信息取決于RECV參數(shù)中的長度(每字節(jié)一位) =(長度LEN + 7/ 8)控制器模式:地址間距也根據(jù)RECV參數(shù)進(jìn)行傳送。
設(shè)備模式:地址間距不傳送。該塊將啟動(dòng)地址0的狀態(tài)傳送。
注意:ANY指針的最小長度為
(長度LEN + 7/8)

ADD_INFO OUTPUT

附加診斷信息在控制器模式中:
0: 無報(bào)警
>0: 未決報(bào)警的數(shù)目
在設(shè)備模式中,參數(shù)始終= 0
參數(shù)擴(kuò)展注意事項(xiàng):
當(dāng)沒有在PROFINET IO控制器上組態(tài)INPUT地址時(shí),也更新ADD_INFO參數(shù)。這種情況下,通過長度LEN > 0 (例如,LEN = 1字節(jié))調(diào)用PNIO_RECV塊。然后傳送1字節(jié)的地址間距。
參數(shù)擴(kuò)展可用于從下列固化程序版本起的CP:
從固化程序V2.0起的CP 343-1 (EX30)
從固化程序V2.0起的CP 343-1 LeaN (CX10)
從固化程序V1.0起的CP 343-1 Advanced (GX30)
在較早的固化程序版本中,保留該參數(shù)

例:

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 )
//調(diào)用PNIO_RECV
//來自硬件配置的模塊地址
//控制器模式或設(shè)備模式;
//不傳送IOCS狀態(tài)位。
//數(shù)據(jù)區(qū)長度
//DB11中的每個(gè)接收數(shù)據(jù)字節(jié)對應(yīng)一個(gè)位狀態(tài)
//用于返回參數(shù)NDR的地址
//用于返回參數(shù)ERROR的地址
//用于返回參數(shù)STATUS的地址
//用于返回參數(shù)CHECK_IOPS的地址
//診斷消息
//DB11中的接收數(shù)據(jù) (7個(gè)字節(jié))

FC11 PNIO_SEND給CP發(fā)出的數(shù)據(jù)

工作原理

程序塊 PNIO_SEND用于在 CP 的 PROFINET IO 控制器模式或 PROFINET IO 設(shè)備模式下傳送數(shù)據(jù)。

1.作為PROFINET IO控制器運(yùn)行

塊將指定輸出區(qū)的過程數(shù)據(jù)(輸出)傳送到CP以便轉(zhuǎn)發(fā)到PROFINET IO設(shè)備。塊以狀態(tài)代碼形式返回PROFINET IO設(shè)備輸出的IO使用者狀態(tài)(IOCS)。

2.作為PROFINET IO設(shè)備運(yùn)行

塊讀取PROFINETIO設(shè)備上CPU的預(yù)處理過程輸入,并將它們傳送給PROFINET IO控制器(已組態(tài)的I地址);塊還將返回作為狀態(tài)碼的PROFINET IO控制器的IO使用者狀態(tài)(IOCS)。

與FC12不同的IO只有一個(gè):SENDIN_OUT

數(shù)據(jù)區(qū)的地址指向下列兩個(gè)位置之一: 指定地址和長度IO控制器模式:長度應(yīng)與所組態(tài)的分布式IO的總長度相匹配,據(jù)此也可傳送地址間距。
1存儲器位區(qū)
2數(shù)據(jù)塊區(qū)
長度也可以比分布式I/O的總長度短,例如,當(dāng)塊在OB中多次被調(diào)用時(shí)。然而,總長度必須至少能滿足一次調(diào)用需要。
IO設(shè)備模式:數(shù)據(jù)結(jié)構(gòu)根據(jù)在PROFINET IO控制器鏈上為此PROFINET IO設(shè)備組態(tài)的輸入模塊的插槽的順序獲得的,并且它們的長度沒有地址間距。注意:
1.無論如何組態(tài)地址(不管所組態(tài)的最低地址如何),塊將開始傳送地址0上的數(shù)據(jù)。
2.不允許指定I/O區(qū),因?yàn)樵贗/O可接受數(shù)據(jù)之前,必須檢查IOCS是否是GOOD。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15885

    瀏覽量

    175357
  • CP
    CP
    +關(guān)注

    關(guān)注

    3

    文章

    34

    瀏覽量

    25571
  • 通訊
    +關(guān)注

    關(guān)注

    9

    文章

    877

    瀏覽量

    34667

原文標(biāo)題:STEP7關(guān)于PLC所帶PC的用法讀取控制塊

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    個(gè)socket對應(yīng)個(gè)連接嗎

    的接口,允許在不同計(jì)算機(jī)之間建立連接,進(jìn)行數(shù)據(jù)交換。個(gè)socket可以看作是兩個(gè)程序之間的通信端點(diǎn),由IP地址和端口號唯
    的頭像 發(fā)表于 08-16 10:55 ?236次閱讀

    PLC和變頻器是如何進(jìn)行通訊

    與變頻器之間需要通過特定的通訊方式進(jìn)行數(shù)據(jù)交換和控制指令的傳輸。本文將詳細(xì)闡述PLC與變頻器之間的通訊原理、方法、步驟以及實(shí)際應(yīng)用中的注意事項(xiàng),以期為工業(yè)自動(dòng)化領(lǐng)域的工程師和技術(shù)人員提供參考。
    的頭像 發(fā)表于 05-31 15:20 ?1742次閱讀

    Flasher RAM怎么通過RS232進(jìn)行通訊???

    Flasher RAM怎么通過RS232進(jìn)行通訊???USB僅供電,使用RS232驅(qū)動(dòng)flasher進(jìn)行下載程序至芯片?
    發(fā)表于 05-28 06:14

    用STM32進(jìn)行bootloader開發(fā)時(shí),能不能將boot和app程序的hex合成為個(gè)hex進(jìn)行燒錄?

    大家好,請問用STM32進(jìn)行bootloader開發(fā)時(shí),能不能將boot和app程序的hex合成為個(gè)hex進(jìn)行燒錄?我之前分別燒錄兩
    發(fā)表于 04-01 08:20

    程序中增加個(gè)變量導(dǎo)致異常的分析

    大家在平常的編程過程應(yīng)該會碰到各種奇葩的問題吧,反正我最近是碰到了次,再此跟大家分享下。事情的原因是我在程序中增加了個(gè)變量,然后就會導(dǎo)
    的頭像 發(fā)表于 01-22 09:56 ?384次閱讀
    <b class='flag-5'>程序</b>中增加<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>變量導(dǎo)致異常的分析

    免費(fèi)的PLC遠(yuǎn)程編程工具,支持歐姆龍 CP/CH/CL/CM/CJ PLC遠(yuǎn)程程序上下載

    【技術(shù)分享】遠(yuǎn)程透傳網(wǎng)關(guān)-單網(wǎng)口快速實(shí)現(xiàn)歐姆龍 CP/CH/CL/CM/CJ PLC程序遠(yuǎn)程上下載
    的頭像 發(fā)表于 01-18 10:00 ?471次閱讀
    免費(fèi)的PLC遠(yuǎn)程編程工具,支持歐姆龍 <b class='flag-5'>CP</b>/CH/CL/CM/CJ PLC遠(yuǎn)程<b class='flag-5'>程序</b>上下載

    文詳解PLC子程序與子程序指令

    在編程時(shí)經(jīng)常會遇到相同的程序段需要多次執(zhí)行的情況,如圖6-39所示,程序段A要執(zhí)行兩次,編程時(shí)要寫兩段相同的程序段,這樣比較麻煩。解決這個(gè)問題的方法是將需要多次執(zhí)行的程序段從主
    的頭像 發(fā)表于 12-14 13:33 ?6298次閱讀
    <b class='flag-5'>一</b>文詳解PLC子<b class='flag-5'>程序</b>與子<b class='flag-5'>程序</b>指令

    PLC編程:MODBUS通訊程序的交叉引用怎么用

    他做的MODBUS通訊程序,原本只需要從通訊中讀來1個(gè)字/位,然而卻發(fā)現(xiàn)交叉引用中提示占用了4個(gè)字節(jié), 即
    發(fā)表于 12-13 09:18 ?843次閱讀
    PLC編程:MODBUS<b class='flag-5'>通訊</b><b class='flag-5'>程序</b>的交叉引用怎么用

    vim編寫個(gè)程序后怎么運(yùn)行

    當(dāng)你用 Vim 編寫完個(gè)程序后,你需要執(zhí)行系列步驟來運(yùn)行程序。下面是詳盡的說明: 保存文件:在 Vim 編輯器中,按下 Esc 鍵,然后
    的頭像 發(fā)表于 11-28 15:27 ?2503次閱讀

    個(gè)c源程序至少包括個(gè)函數(shù)么

    個(gè)C源程序至少包括個(gè)函數(shù)。 C語言是種廣泛應(yīng)用于嵌入式系統(tǒng)和操作系統(tǒng)的
    的頭像 發(fā)表于 11-26 09:01 ?863次閱讀

    個(gè)線程模擬單片機(jī)程序框架分享

    首先來個(gè)demo,該demo是使用電腦開兩個(gè)線程:個(gè)線程模擬單片機(jī)的定時(shí)器中斷產(chǎn)生時(shí)間片輪詢個(gè)時(shí)鐘,另一個(gè)線程則模擬主函數(shù)中
    發(fā)表于 11-19 10:39 ?2185次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>線程模擬單片機(jī)<b class='flag-5'>程序</b>框架分享

    如何實(shí)現(xiàn)個(gè)LED流水燈程序

    define是宏定義,程序在預(yù)處理階段將用define定義的內(nèi)容進(jìn)行了替換 。因此在程序運(yùn)行時(shí),常量表中并沒有用define定義的常量,系統(tǒng)不為它分配內(nèi)存。
    的頭像 發(fā)表于 11-10 11:37 ?2052次閱讀
    如何實(shí)現(xiàn)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>LED流水燈<b class='flag-5'>程序</b>

    芯片的CP測試&amp;FT測試相關(guān)術(shù)語

    對于測試項(xiàng)來說,有些測試項(xiàng)在CP時(shí)會進(jìn)行測試,在FT時(shí)就不用再次進(jìn)行測試了,節(jié)省了FT測試時(shí)間,但也有很多公司只做FT不做CP(如果FT和封裝yield高的話,
    發(fā)表于 11-01 10:32 ?3149次閱讀
    芯片的<b class='flag-5'>CP</b>測試&amp;FT測試相關(guān)術(shù)語

    文詳解CP15協(xié)處理器

    ARM架構(gòu)通過支持協(xié)處理器來擴(kuò)展處理器的功能。ARM架構(gòu)的處理器支持最多16個(gè)協(xié)處理器,通常稱為CP0~CP15。下述的協(xié)處理器被ARM用于特殊用途。
    發(fā)表于 10-31 16:07 ?1561次閱讀
    <b class='flag-5'>一</b>文詳解<b class='flag-5'>CP</b>15協(xié)處理器

    PLC之MODBUS通訊口通信案例解析

    程序中的 Modbus 通訊是在兩個(gè) S7-200 CPU 的 0 號通訊口間進(jìn)行的(最好每個(gè) CPU 都有兩
    發(fā)表于 10-25 10:08 ?928次閱讀
    PLC之MODBUS<b class='flag-5'>通訊</b>口通信案例解析