640?wx_fmt=png&from=appmsg&watermark=1.jpg_銆怌odesys-Runtime銆-缁勪欢鐨勭紪璇戝拰鏍稿績鍑芥暟鍒嗘瀽 - 閰峰痉缃 - CoDeSys杞欢鏁欑▼涓嬭浇,CoDeSys宸ユ帶璧勮闂ㄦ埛

閰峰痉缃

HSC6490-cn涓浗鍒堕狅紝涓浗鑺瘇
鎼滅储闄勪欢  
閰峰痉缃 闄勪欢涓績 CODESYS绉绘 宓屽叆寮 RunTime 640?wx_fmt=png&from=appmsg&watermark=1.jpg

640?wx_fmt=png&from=appmsg&watermark=1.jpg

 

銆怌odesys-Runtime銆-缁勪欢鐨勭紪璇戝拰鏍稿績鍑芥暟鍒嗘瀽:
缁忚繃涔嬪墠鍥涚瘒鏂囩珷鐨勯摵鍨紝缁堜簬鍙互杩涘叆绾补鐨勪笅浣嶆満缁勪欢C璇█寮鍙戜簡銆
鏈瘒绠楁槸涓嬩綅鏈哄紑鍙戠殑鍏ラ棬绡囷紝鎺屾彙浜嗗嚑涓牳蹇冨嚱鏁扮殑鍔熻兘涔嬪悗锛屽啀鍘荤粨鍚堜笂浣嶆満IDE鏉ヨ瑙d竴浜涙搷浣滄祦绋嬶紝灏卞彲浠ヤ粠鍘熺悊涓婅繘琛岃璁轰簡銆
鎵浠ワ紝鏈瘒鏂囩珷涓昏鍖呮嫭濡備笅鍑犻儴鍒嗗唴瀹癸細
1.缁勪欢缂栬瘧杩囩▼鍒嗘瀽锛
2.缁勪欢鍔犺浇杩囩▼鍒嗘瀽锛
3.缁勪欢鏍稿績鍑芥暟鍒嗘瀽锛

01-缁勪欢缂栬瘧杩囩▼
涓婁竴绡囨枃绔犱粙缁嶄簡寮鍙戜笅浣嶆満缁勪欢鐨勫畬鏁存搷浣滆繃绋嬶紝鏈缁堝緱鍒扮殑鏂囦欢  libCmpFirstTest.so 鏄竴涓鍔ㄦ侀摼鎺ュ簱鏂囦欢锛
缁勪欢 CmpFirstTest 鐩綍涓紝鍙備笌缂栬瘧杩囩▼鐨勬墍鏈夋枃浠舵湁锛
褰撶劧浜嗭紝杩樻湁 SDK 鐩綍涔熸槸闈炲父閲嶈鐨勭紪璇戞敮鎾戯細
鍙互鐪嬪嚭锛氱紪璇戣繃绋嬩娇鐢 make 宸ュ叿锛屽洜姝ゅ垎鏋愮紪璇戣繃绋嬬殑璇︾粏缁嗚妭灏辨槸鍒嗘瀽缁勪欢鐨 makefile 鏂囦欢锛屼互鍙 SDK 涓殑 makefile 鏂囦欢銆
涓轰簡闄嶄綆闈炵浉鍏充唬鐮佺殑骞叉壈锛屾垜浠妸涓婄瘒鏂囩珷涓殑缁勪欢浠g爜杩涜灏忓皬鐨勫垹鍑忋
涓婄瘒鏂囩珷涓殑缁勪欢瀹炵幇浜嗕竴涓 IEC Library 涓殑鍑芥暟锛團unction锛夛紝杩欎釜鏄粍浠剁殑涓涓渇eature鈥濓紝鎵浠ョО涔嬩负澶栭儴搴撶粍浠躲
鏈瘒鏂囩珷鍙璁轰竴涓渶绠鍗曠粍浠剁殑缂栬瘧鍜屽嚱鏁帮紝鎵浠ユ妸杩欎簺鏃犲叧鐨勪唬鐮侀兘鍒犻櫎锛屾墍浠ュ氨绉颁箣涓虹粍浠躲
鎴戠殑娴嬭瘯浠g爜鍏蜂綋鎿嶄綔濡備笅锛
  • 浠 CmpFirstTest 缁勪欢鐩綍涓烘ā鏉匡紝澶嶅埗鍑轰竴涓柊鐨勭洰褰旵mpTest02锛
  • 鎶 CmpTest02 鐩綍涓殑鏂囦欢鍚嶆敼涓 CmpTest02.c銆丆mpTest02Itf.m4锛屽苟涓斿垹闄や袱涓枃浠朵腑涓庡嚱鏁 my_add2_cext 鐩稿叧鐨勬墍鏈夊唴瀹癸紱
  • 鎶婃鐩綍涓笁涓枃浠朵腑鎵鏈 CmpFirstTest 瀛楃溂閮戒慨鏀逛负 CmpTest02锛
  • 鎵ц鍛戒护锛歮ake all锛岀‘淇濊兘椤哄埄缂栬瘧鍑 out/libCmpTest02.so 鏂囦欢鍗冲彲锛

鏈缁堢殑缁勪欢鐩綍濡備笅锛
CmpTest02.c 鍐呭鍑犱箮鏄┖鐨勶紝鍙寘鍚簡鍑犱釜澶存枃浠;
CmpTest02Itf.m4 涓彧鍖呭惈浜嗗嚑涓畯瀹氫箟锛
棣栧厛鍒嗘瀽涓涓 CmpTest02 鐩綍涓殑 makefile 鏂囦欢锛屽垹闄ゆ帀娉ㄩ噴涔嬪悗鐨勫唴瀹瑰涓嬶細
MAJORVER=0
MINORVER=1

CMPVERSION=0x01000000
CMPID=0x2000

DOS2UNIX = dos2unix
M4 = m4

CC = gcc
#CFLAGS += -g
#INCLUDES += -I.
#LDFLAGS +=
#LDLIBS += -lc

SDKDIR=/root/codesys/ExtensionSDK
include ${SDKDIR}/makefile
涓鍏卞寘鎷簲閮ㄥ垎鍐呭锛
  • 鐗堟湰瀹氫箟锛
  • 缁勪欢ID瀹氫箟锛
  • 涓浜涢氱敤鐨勫伐鍏峰懡浠ゅ0鏄庯紱
  • gcc缂栬瘧鍣ㄣ佺紪璇戝弬鏁扮瓑璁剧疆锛
  • 澹版槑 SDK 鎵鍦ㄧ殑鐩綍锛屽苟涓斿紩鐢ㄥ叾涓殑 makefile鏂囦欢锛

鍙互鐪嬪埌锛屾牳蹇冨湪浜庢渶鍚庡紩鍏ョ殑 SDK 閮ㄥ垎锛岃繖閮ㄥ垎鎵嶆槸閲嶇偣銆
SDK 涓殑 makefile 鍐呭姣旇緝澶氾紝杩欓噷璐村嚭鍏朵腑鐨勨滈鏋垛濋儴鍒嗗唴瀹癸細
# get some info from generated files
ITFM4 = $(wildcard *Itf.m4)
CSRC = $(wildcard *.c)
CMPBASENAME=$(CSRC:.c=)

# set some variables
OUTDIR=./out
ITF = $(basename ${ITFM4})
TEMPLATEDEP = $(SDKDIR)/m4/TemplateDep.m4
DEP = ${CMPBASENAME}Dep

# set name of shared object
SONAME= lib${CMPBASENAME}.so

# set sources of component
SRC += ${CSRC} CmpFrame.c

# objects: all sources
OBJS = $(addprefix ${OUTDIR}/,$(SRC:.c=.o))

# set default includes
INCLUDES += -I${SDKDIR}/include/ -I${OUTDIR}/ -I.
CFLAGS += -fPIC -g -O0 -Wall -Wextra -Wno-unused
CFLAGS += -DDEP_H=\"${DEP}.h\"

# set a vendorID
CMPVENDORID=0xFFFF

vpath %.m4 ${SDKDIR}/cmpstub/
vpath %.c  ${SDKDIR}/src/

.PHONY:all
all: ${OUTDIR}/$(SONAME)

SDK_BASE=$(dir $(lastword $(MAKEFILE_LIST)))

${OUTDIR}/%.o: %.c
        xxx

${OUTDIR}/${SONAME}: ${OUTDIR}/$(DEP).h ${OUTDIR}/$(ITF).h $(OBJS)
        xxx

${OUTDIR}/$(DEP).m4:
        xxx

${OUTDIR}/$(DEP).h: ${OUTDIR}/$(DEP).m4 $(ITF).m4
        xxx

${OUTDIR}/$(ITF).h: $(ITF).m4
        xxx

.PHONY:clean
clean:
        xxx
鍒犲噺涔嬪悗鐨勫唴瀹圭湅璧锋潵杩樻槸鎸哄鐨勶紝瀹屾垚鐨勬牳蹇冨伐浣滃涓嬪浘鎵绀猴細
缁胯壊锛氱粍浠朵腑鍙備笌缂栬瘧鐨勬枃浠讹紱
钃濊壊锛歋DK涓弬涓庣紪璇戠殑鏂囦欢锛
榛勮壊锛氱紪璇戣緭鍑虹殑缁勪欢锛堝姩鎬侀摼鎺ュ簱锛夛紱
鍏跺畠锛氱紪璇戣繃绋嬩腑杈撳嚭鐨勪腑闂存枃浠讹紱
钃濊壊铏氱嚎绠ご锛歩nclude 澶存枃浠讹紱
榛戣壊瀹炰綋绠ご锛氱紪璇戣緭鍏ャ佽緭鍑烘枃浠讹紱
鍏堟姏寮涓や釜 .m4 鏂囦欢锛屽叾瀹冩枃浠剁殑缂栬瘧杩囩▼寰堟竻鏅帮細涓や釜 .c 鏂囦欢寮曠敤涓浜 .h 鏂囦欢锛岀紪璇戝緱鍒扮粍浠躲
鍥犱负涓や釜 .h 鏂囦欢鐨勫唴瀹瑰繏杩囧鏉傦紝鎵浠 Codesys 甯屾湜鎴戜滑涓嶈鐩存帴缂栧啓 .h 鏂囦欢锛岃屾槸缂栧啓 .m4 鏂囦欢锛岀劧鍚庨氳繃 m4 鎸囦护鏉ュ姩鎬佺敓鎴 .h 澶存枃浠讹紝杩欐牱灏遍檷浣庝簡澶嶆潅鎬с
瀵逛簬杩欎袱涓 .m4 鏂囦欢锛岀洰鍓嶅厛涓嶉渶瑕佹繁绌讹紝鐞嗚В瀹冧滑鐨勪綔鐢ㄥ嵆鍙
CmpTest02Dep.m4锛氬畾涔変簡 CmpTest02 杩欎釜缁勪欢涓紝闇瑕佷緷璧(璋冪敤) Runtime 涓 鍏跺畠鍝簺缁勪欢涓殑鍝簺鍑芥暟锛
CmpTest02Itf.m4锛氬畾涔変簡 CmpTest02 杩欎釜缁勪欢鎻愪緵浜嗗摢浜 API 鎺ュ彛鍑芥暟锛屽彲浠 琚 Runtime 涓殑鍏跺畠缁勪欢璋冪敤
浠ヤ笂鏄缁勪欢缂栬瘧杩囩▼鐨勫畯瑙傜悊瑙o紝涓嬮潰鐪嬩竴涓嬪湪缁勪欢鐩綍涓墽琛 make all 鎸囦护鏃剁殑杈撳嚭鍐呭锛
缂栬瘧鎸囦护鐨勮緭鍑鸿繃绋嬶紝涓庝笂闈㈢殑鍥剧ず鏄竴鑷寸殑銆
鍥犱负缁勪欢浠g爜 CmpTest02.c 涓嚑涔庨兘鏄┖鐨勶紝鎵浠ョ粍浠朵腑鐨勪唬鐮併佹暟鎹唴瀹癸紝鍑犱箮閮芥槸鐢 SDK 涓殑 CmpFrame.c 鏂囦欢鐨勭紪璇戣緭鍑虹粨鏋溿
Codesys 鐨 SDK 涔嬫墍浠ユ妸 .c 鏂囦欢鍒嗗紑锛屾槸涓轰簡璁╃紪璇戣繃绋嬪彉寰楁洿娓呮櫚锛
鍚屾椂涔熼棿鎺ュ己璋冧簡 CmpFrame.c 鏂囦欢涓殑鍑犱釜鍑芥暟鏄笌 缁勪欢鏋舵瀯鐩稿叧鐨勩侀潪甯搁噸瑕佺殑鍑芥暟

02-缁勪欢鍔犺浇杩囩▼
Codesys 鐨勪笅浣嶆満缁勪欢鏄竴绉 鎻掍欢鏈哄埗锛屽湪 Linux 绯荤粺涓殑鎻掍欢鏈哄埗澶ч儴鍒嗛兘鏄 鍔ㄦ侀摼鎺ュ簱鏂囦欢锛岄氳繃 dlopen 鎶婃彃浠朵唬鐮佸姞杞藉埌鍐呭瓨涓紝鐒跺悗閫氳繃鏌ユ壘涓浜 鍥哄畾鍚嶇О鐨勫嚱鏁板湴鍧鏉ヨ繘琛岃皟鐢ㄣ
Codesys 鐨勭粍浠舵湰璐ㄤ笂涔熸槸濡傛锛屼篃鏈変竴涓浐瀹氬悕绉扮殑鍏ュ彛鍑芥暟銆 涓嶈繃 Codesys 鐨 缁勪欢绠$悊鍣 涓庣粍浠朵箣闂存湁鏇村姞涓ユ牸鐨勪氦浜掑叧绯汇
缁勪欢涓渶閲嶈鐨勫叆鍙e嚱鏁板氨鏄細
DLL_DECL int CDECL ComponentEntry(INIT_STRUCT *pInitStruct)
{
        pInitStruct->CmpId = COMPONENT_ID;
        pInitStruct->pfExportFunctions = ExportFunctions;
        pInitStruct->pfImportFunctions = ImportFunctions;
        pInitStruct->pfGetVersion = CmpGetVersion;
        pInitStruct->pfHookFunction = HookFunction;
        pInitStruct->pfCreateInstance = NULL;
        pInitStruct->pfDeleteInstance = NULL;

        s_pfCMRegisterAPI = pInitStruct->pfCMRegisterAPI;
        s_pfCMRegisterAPI2 = pInitStruct->pfCMRegisterAPI2;
        s_pfCMGetAPI = pInitStruct->pfCMGetAPI;
        s_pfCMGetAPI2 = pInitStruct->pfCMGetAPI2;
        s_pfCMCallHook = pInitStruct->pfCMCallHook;
        s_pfCMRegisterClass = pInitStruct->pfCMRegisterClass;
        s_pfCMCreateInstance = pInitStruct->pfCMCreateInstance;
        return ERR_OK;
}
姝ゅ嚱鏁扮殑棰濅唬鐮佸彧鏈夊尯鍖哄崄鍑犺锛屼絾鏄凡缁忔毚闇插嚭 Codesys Runtime 涓粍浠朵氦浜掔殑鏍稿績鏈哄埗锛 閫氳繃鍏ュ彛鍑芥暟鏉ヤ氦鎹㈢粍浠剁鐞嗗櫒涓庣粍浠朵箣闂寸殑涓绯诲垪鍑芥暟鎸囬拡銆
鎵璋撶殑缁勪欢绠$悊鍣細鏄粍浠舵満鍒剁殑鏍稿績锛屼笓闂ㄧ敤鏉ョ鐞 Runtime 涓悇绉嶄笉鍚岀被鍨嬬殑缁勪欢锛屾瘮濡傦細
鏍稿績缁勪欢锛氱粍浠剁鐞嗗櫒缁勪欢銆佸唴瀛樻睜绠$悊缁勪欢銆佸弬鏁拌缃粍浠躲佹枃浠剁郴缁熺粍浠剁瓑锛
闈欐佺粍浠讹細鍚勭被閫氫俊缁勪欢銆佹搷浣滅郴缁熸帴鍙g粍浠剁瓑锛
鍔ㄦ佺粍浠讹細鍦ㄩ厤缃枃浠朵腑鐧昏鐨勭粍浠讹紝渚嬪锛歭ibCmpTest02.so锛
杩欓噷鐨勯潤鎬佷笌鍔ㄦ佺殑姒傚康锛 骞朵笉鏄閾炬帴杩囩▼涓殑闈欐併佸姩鎬佺殑鎰忔濄
鑰屾槸鎸囧湪 Codesys 鏋舵瀯涓紝涓嶅悓缁勪欢涔嬮棿鐨勫嚱鏁拌皟鐢ㄦ椂锛屾槸 鐩存帴璋冪敤鍒扮洰鏍囧嚱鏁板湴鍧锛堥潤鎬佺粍浠讹級锛岃繕鏄氳繃缁勪欢绠$悊鍣ㄨ繘琛 鍔ㄦ佺殑鏌ユ壘锛堝姩鎬佺粍浠讹級銆傝繖涓蹇垫殏鏃朵篃涓嶉渶瑕佹繁绌躲
绠瑷涔嬶細缁勫缓绠$悊鍣ㄦ妸缁勪欢 libCmpTest02.so 鍔犺浇鍒板唴瀛樹箣鍚庯紝浼氳皟鐢ㄥ叾涓殑 ComponentEntry 鍑芥暟锛屽嚱鏁扮殑鍏ュ弬鏄竴涓粨鏋勪綋锛岀粨鏋勪綋鎴愬憳鍙互鍒嗕负涓ら儴鍒嗭細
绗竴閮ㄥ垎锛氱敤鏉ユ妸 CmpTest02 涓畾涔夌殑鍑芥暟鍦板潃杩斿洖缁欑粍浠剁鐞嗗櫒锛圕M锛欳omponent Manager锛夛紱
绗簩閮ㄥ垎锛欳mpTest02 涓畾涔変簡鍑犱釜闈欐佸嚱鏁版寚閽堝彉閲忥紝鐢ㄦ潵淇濆瓨缁勪欢绠$悊鍣ㄤ腑鎻愪緵鐨勫嚑涓壒瀹氬嚱鏁帮紱
姝ゅ嚱鏁版墽琛屼箣鍚庯紝缁勪欢绠$悊鍣ㄤ笌缁勪欢涔嬮棿锛屽氨鐭ラ亾浜嗗郊姝ょ殑涓浜涘嚱鏁板湴鍧锛屽彲浠ュ疄鐜扮浉浜掕皟鐢ㄤ簡銆
涓轰簡楠岃瘉涓婅堪鐨勫唴瀹癸紝鍙互鍦 CmpFrame.c 涓殑姣忎釜鍑芥暟寮澶达紝浣跨敤 printf 鎵撳嵃涓浜涗俊鎭紝鏉ヨ瀵熶竴涓嬪姞杞界殑杩囩▼銆
鎿嶄綔杩囩▼濡備笅锛
  • 鍦ㄦ瘡涓嚱鏁扮殑寮澶存墦鍗帮細printf("----->xxx start.   \n");
  • 鏈鍚庝竴涓嚱鏁 HookFunction 涓紝鎶婄涓涓弬鏁扮殑鍊间篃鎵撳嵃涓涓嬶細
    printf("-----> HookFunction start. ulHook = 0x%x  \n", ulHook);

  • 缂栬瘧锛歮ake all锛屾妸寰楀埌鐨勫姩鎬佸簱鏂囦欢澶嶅埗鍒 codesyscontrol 鎵鍦ㄧ洰褰曠殑lib 鏂囦欢澶逛笅闈紱
  • 鍦ㄩ厤缃枃浠 config/CODESYSControl_User.cfg 涓櫥璁扮粍浠讹細Component.xxx=CmpTest02

涓婅堪姝ラ3鍜4锛屼箣鍓嶇殑鏂囩珷宸叉湁璇︾粏浠嬬粛锛屾澶勪笉鍐嶈禈杩般
鍏抽棴 codesyscontrol 杩涚▼锛岄噸鏂板惎鍔紝瑙傚療杈撳嚭缁撴灉銆
鍥犱负杈撳嚭鐨勫唴瀹归潪甯稿锛屾墍浠ュ彲浠ユ墜鍔ㄦ潵鍚姩 codesyscontrol锛屽苟涓旈氳繃 grep 鎸囦护鏉ヨ繃婊ゆ垜浠墦鍗扮殑鍐呭锛屼緥濡傦細
./start_codesyscontrol.sh | grep -n "start"
鍙互鐪嬪埌杈撳嚭缁撴灉濡備笅锛
9:------> ComponentEntry start// 鍏ュ彛鍑芥暟
10:-----> CmpGetVersion start// 璇诲彇鐗堟湰
11:-----> ExportFunctions start// 瀵煎嚭鍑芥暟
   XXX 杩欓噷鏄潪甯稿鐨勯噸澶嶆墦鍗颁俊鎭
53:-----> HookFunction start. ulHook = 0x1// 鍛ㄦ湡璋冪敤鍑芥暟
69:-----> HookFunction start. ulHook = 0x8
70:-----> ExportFunctions start
   XXX 杩欓噷鏄潪甯稿鐨勯噸澶嶆墦鍗颁俊鎭
235:-----> ExportFunctions start
236:-----> HookFunction start. ulHook = 0x2
237:-----> HookFunction start. ulHook = 0xc8
238:-----> HookFunction start. ulHook = 0xfa
239:-----> HookFunction start. ulHook = 0x3
240:-----> HookFunction start. ulHook = 0x7
241:-----> HookFunction start. ulHook = 0x4
242:-----> HookFunction start. ulHook = 0x1f4
243:-----> ExportFunctions start
244:-----> HookFunction start. ulHook = 0x5
245:-----> HookFunction start. ulHook = 0x6
246:-----> HookFunction start. ulHook = 0x3e8
251:-----> HookFunction start. ulHook = 0x14
256:-----> HookFunction start. ulHook = 0x14
   XXX 闈炲父澶氱殑閲嶅淇℃伅锛屽鏋滀笉缁堟杩涚▼锛屼細涓鐩存墦鍗 HookFunction start銆
CmpFrame.c 涓竴鍏辨湁 5 涓嚱鏁帮紝鍙互瑙傚療涓涓嬫瘡涓嚱鏁拌璋冪敤鐨勬鏁帮細
  • ComponentEntry锛1 娆★紱
  • ExportFunctions锛歂 娆★紱
  • ImportFunctions锛1 娆★紱
  • CmpGetVersion锛1 娆★紱
  • HookFunction锛歂 娆★紱

ExportFunctions 鍑芥暟琚皟鐢ㄥ娆★紝鏄洜涓哄叾瀹冪粍浠跺湪鏌ユ壘寰堝涓嶅悓鐨勪緷璧栧嚱鏁版椂锛屼篃浼氬埌 ComTest02 缁勪欢涓繘琛屾煡鎵俱
渚嬪锛氱粍浠禔璋冪敤浜嗗叾瀹冪粍浠朵腑鎻愪緵鐨勪竴涓嚱鏁 DoSomething锛岀粍浠禔灏变細鍚戠粍浠剁鐞嗗櫒杩涜璇锋眰锛氭垜鎯崇煡閬 DoSomething 杩欎釜鍑芥暟鐨勫湴鍧锛岃浣犲府鎴戞壘涓涓嬫槸鍝釜缁勪欢涓疄鐜颁簡杩欎釜鍑芥暟銆
浜庢槸缁勪欢绠$悊鍣ㄥ氨閫愪釜璇㈤棶姣忎竴涓鍔犺浇鐨勭粍浠躲
缁勪欢绠$悊鍣ㄦ兂闂 CmpTest02 缁勪欢鏃讹紝灏变細璋冪敤鍏朵腑鐨 ExportFunctions 鍑芥暟銆傚洜涓烘垜浠殑缁勪欢涓病鏈夋彁渚涜繖涓 API 鎺ュ彛鍑芥暟锛屾墍浠ョ粍浠剁鐞嗗櫒鍦ㄥ緱鍒板惁瀹氱殑绛斿鍚庯紝缁х画闂鍏跺畠缁勪欢銆
鏈缁堢粍浠禕浼氬憡璇夌粍浠剁鐞嗗櫒璇达細鎴戝疄鐜颁簡杩欎釜鍑芥暟锛屽嚱鏁板湴鍧鏄 XXX锛屼綘鎶婅繖涓湴鍧鍛婅瘔缁勪欢A鍚с
鍙﹀涓涓嚱鏁 ImportFunctions 琚皟鐢 1 娆★紝杩欐槸缁勪欢绠$悊鍣ㄧ粰鎴戜滑涓涓満浼氾紝闂竴涓嬶細浣犳槸鍚﹂渶瑕佸叾瀹冪粍浠朵腑鎻愪緵鐨 API 鎺ュ彛鍑芥暟锛熷鏋滈渶瑕佺殑璇濓紝鎴戝府浣犳煡鎵惧畾浣嶄竴涓嬨傚洜涓烘垜浠殑缁勪欢涓洰鍓嶄笉闇瑕佽皟鐢ㄥ叾瀹冪粍浠朵腑鐨勫嚱鏁帮紝鎵浠ヨ繖閲屼篃灏辨病鏈変粈涔堝疄璐ㄦу伐浣溿
浠ヤ笂涓や釜瀵煎嚭鍜屽鍑哄嚱鏁扮殑杩囩▼涔熸槸姣旇緝澶嶆潅鐨勶紝鐩墠浜嗚В鍏朵腑鐨勬蹇靛拰娴佺▼鍗冲彲銆
瀹為檯涓婏紝鎴戜滑宸茬粡浠庢蹇靛拰娴佺▼涓婁粙缁嶄簡缁勪欢绠$悊鍣ㄧ殑涓涓牳蹇冨姛鑳斤紝鍙槸杩樻病浠庝唬鐮佸眰闈㈣繘琛岃璁恒
瑷褰掓浼狅紝缁勪欢涓殑鍑犱釜鍑芥暟涓紝鏈閲嶈鐨勫嚱鏁板綋灞 HookFunction 鍑芥暟浜嗭紝杩欐槸 Runtime 鐢ㄦ潵鎺у埗鎵鏈夌殑缁勪欢鍦ㄥ姞杞借繃绋嬩腑姝ヨ皟涓鑷寸殑鏍稿績鍑芥暟銆
浣曚负姝ヨ皟涓鑷达紵灏辨槸璁╂瘡涓涓粍浠舵璋冧竴鑷达細鍦ㄤ笉鍚岀殑闃舵锛屽畬鎴愬悓涓绫讳簨鎯呫
鍙﹀锛屽湪 ComponentEntry 鍑芥暟涓湅鍒板嚑涓嚱鏁版寚閽堣祴鍊间负 NULL銆傚彧鏄洜涓哄綋鍓嶈繖涓粍浠舵槸涓涓渶鏈绠鍗曠殑缁勪欢锛屽彧闇瑕佽繖鍑犱釜鍑芥暟灏辫冻澶熶簡銆傚鏋滀互鍚庨渶瑕佸啓涓涓 IO 椹卞姩绋嬪簭缁勪欢锛岄偅涔堣繖閲岀殑 pfCreateInstance  鍜 pfDeleteInstance 鍑芥暟鎸囬拡鍙橀噺灏变笉鑳借缃负 NULL浜嗐03-缁勪欢鏍稿績鍑芥暟鍒嗘瀽
杩欓儴鍒嗗唴瀹逛富瑕佸氨鏄垎鏋 HookFunction 鍑芥暟鐨勬墽琛岄昏緫銆
static RTS_RESULT CDECL HookFunction(RTS_UI32 ulHook, RTS_UINTPTR ulParam1, RTS_UINTPTR ulParam2)
{
        printf("-----> HookFunction start. ulHook = 0x%x  \n", ulHook);
        return ERR_OK;
}
涓嬮潰杩欏紶鍥炬槸浠庣綉缁滀笂鎴彇涓嬫潵鐨勶紝浣撶幇浜嗗湪鍚姩鍜屽仠姝㈣繃绋嬩腑锛屾瘡涓涓粍浠跺湪涓嶅悓闃舵闇瑕佸畬鎴愮殑浜嬫儏锛
涓婂浘涓殑 CH_XXX 琛ㄧず涓嶅悓鐨 Event 浜嬩欢缂栧彿锛屽叾涓殑 INIT, EXIT, COMM_CYCLE 鍒嗗埆琛ㄧず锛氬惎鍔ㄩ樁娈点佸仠姝㈤樁娈典互鍙婃甯歌繍琛岄樁娈点
涔熷氨鏄锛氱粍浠剁鐞嗗櫒浼氳皟鐢ㄦ瘡涓粍浠剁殑 HookFunction 鍑芥暟锛岄氳繃鍙傛暟1鏉ュ憡鐭ョ粍浠讹細鐩墠鏄嚭浜庡摢涓涓樁娈点傚鏋滄浜嬩欢闇瑕佸弬鏁帮紝灏遍氳繃鍙傛暟2鍜屽弬鏁3鏉ヤ紶閫掋
鏈鍚庝竴涓 Event 浜嬩欢姣旇緝鐗规畩 CH_COMM_CYCLE锛屽畠鏄鍛ㄦ湡鎬璋冪敤鐨勶紝鐩殑鏄細姣忎釜缁勪欢鍙兘闇瑕佸畾鏃跺仛涓浜涗簨鎯咃紝閭d箞灏卞彲浠ユ斁鍦ㄨ繖涓 Event 浜嬩欢涓潵瀹屾垚銆
浣嗘槸闇瑕佹敞鎰忓鐞嗚繃绋嬩笉鑳借楁椂澶暱锛屽惁鍒欏氨浼氳芥悂鍏跺畠缁勪欢鐨勫畾鏃跺鐞嗕簨鎯呬簡锛屽洜涓鸿繖涓嚱鏁版槸缁勪欢绠$悊鍣ㄥ湪涓涓嚎绋嬩腑涓茶璋冪敤鐨勩
濡傛灉缁勪欢闇瑕佸畾鏃跺鐞嗙殑宸ヤ綔鐨勭‘鑰楁椂澶箙锛岄偅涔堝氨鍙互鍦ㄥ惎鍔ㄩ樁娈靛崟鐙垱寤轰竴涓 Task 浠诲姟锛堢嚎绋嬶級鏉ュ疄鐜般
Codesys 涓彁渚涚殑 Event 浜嬩欢闈炲父澶氾紝杩滆繙涓嶆涓婂浘涓垪鍑虹殑閭d簺锛
鐩殑灏辨槸璁╂瘡涓涓粍浠惰兘澶熸崟鎹夊埌锛圚ook锛塕untime 鍦ㄥ悇绉嶄笉鍚屽満鏅笅鐨勫鐞嗛昏緫锛岃鎰熷叴瓒g殑缁勪欢鏈夋満浼氳繘琛屼竴浜涘共棰勬垨鑰呭鐞嗐
渚嬪 Codesys 瀹樻柟鎻愪緵浜嗕竴涓ず渚嬶細Runtime 鍑嗗鍔犺浇鐢ㄦ埛涓嬭浇鐨 Application 绋嬪簭涔嬪墠锛屼細鍙戝嚭 Event 浜嬩欢銆傛鏃舵煇涓粍浠跺氨鍙互鎹曟崏鍒拌繖涓簨浠讹紝濡傛灉渚︽祴鍒扮敤鎴锋妸 switch 寮鍏虫嫧鍒颁簡 OFF 涓婏紝灏卞彲浠ュ弽棣堜俊鎭粰 Runtime锛氫笉瑕佸惎鍔 Application銆

640?wx_fmt=png&from=appmsg&watermark=1.jpg
         鍚屼竴涓婚闄勪欢:
    640?wx_fmt=png&from=appmsg.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
    640?wx_fmt=png&from=appmsg&watermark=1.jpg
椤堕儴qrcode搴曢儴
鍏虫敞閰峰痉缃戣闃呭彿锛岃幏鍙栨洿澶氳祫璁紒

QQ|灏忛粦灞|鎵嬫満鐗|Archiver|閰峰痉璁哄潧 ( 鑻廔CP澶16065247鍙-1 )|缃戠珯鍦板浘

GMT+8, 2025-7-16 14:36 , Processed in 0.099863 second(s), 21 queries .

閰峰痉缃

© 2001-2013 Hicodesys. 鎶鏈敮鎸 by 閰峰痉缃

杩斿洖椤堕儴