CoDeSys+Œ CЪІ^ЭЭЭЭЭЭЭЭVAR_GLOBAL END_VAR 'ЭЭЭЭЭЭЭЭGlobal_VariablesL 3] ЯZM]ЭЭЭЭЭЭЭЭVAR_GLOBAL END_VAR v,g\ЮConnectToDispSky+ЫІ^ БЪІ^ЭЭЭЭЭЭЭЭчFUNCTION_BLOCK ConnectToDispSky (* Сшсышюђхър фыџ яюфъыўїхэшџ ъ юсырїэющ бЪРФР ёшёђхьх - ъюьяыхъёѓ DispSky *) VAR_INPUT addrDispSky : STRING; (*Рф№хё ёх№тх№р DispSky*) portDispSky : WORD; (*Яю№ђ ёх№тх№р DispSky*) heartBeatDispSky : STRING; (*Ъюф фыџ яюфъыўїхэшџ ъ ъюьыхъёѓ DispSky*) startModbusAddr : POINTER TO WORD; (*гърчрђхыќ эр эрїрыю ьрёёштр №хушёђ№ют modbus*) END_VAR VAR sockDispSky: SOCKADDRESS; dnsGoogle: SOCKADDRESS; bufer : ARRAY [1..270] OF BYTE ; timeKeepAlive : TIME := T#30s; timeoutAnsw : TIME := T#25ms; timeStamp_1: TIME; timeStamp_2: TIME; timeStamp_3: TIME; answFlag : BOOL; createFlag : BOOL; descDispSky: DINT; descDispSkyOld: DINT; descUDP: DINT; piParameter: DINT; numberOfRegisters: WORD; firstRegisterAddress: WORD; counterRegisters: WORD; lenghtData: WORD; valueData: WORD; lenBufOut: WORD; counterLoop: WORD; modbusAddr : POINTER TO WORD; stringPointer: POINTER TO BYTE; numberOfFunction: BYTE; pointPosition: BYTE; count: BYTE ; lenRecv: DINT; createUDPFlag: BOOL; sendFlag: BOOL; getIPFlag: BOOL; connectFlag: BOOL; heartBeatFlag: BOOL; disconnectFlag: BOOL; resetSocketFlag: BOOL; addrFlag: BOOL; END_VAR)Б:џџџџDpKpЧэрїхэшх фыџ чряшёшzџџџџЖkНkЪюышїхёђтю №хушёђ№ют|џџџџmjqj дѓэъішџ_10E™џџџџVV Modbus TCPGЃџџџџ2Z:ZРф№хё ях№тюую №хушёђ№р‡ЏџџџџVZ[Z Эюьх№ єѓэъішшZАџџџџ<Y@Y дѓэъішџ_03EПџџџџ›ZЂZЪюышїхёђтю №хушёђ№ют|Цџџџџ``Фышэр яюыџ фрээћѕptџџџџ{"{Юђ№яртър юђтхђэюую яръхђрšTџџџџaddrFlag1џџџџ addrDispSkyIџџџџ ADRTUџџџџ addrFlag1џџџџ  stringPointerF>џџџџstringPointer^K?џџџџ0@џџџџ=>?Aџџџџ!end@џџџџ$&13‚џџџџ'*count—џџџџ03loop3˜џџџџ5:stringPointer^K™џџџџ8:64šџџџџ:>>˜™›џџџџ>Aloop1šœџџџџDI stringPointerFџџџџGI1žџџџџIMADDœŸџџџџMR stringPointerFžЇџџџџUZstringPointer^KЈџџџџXZ0ЉџџџџZ^>ЇЈЊџџџџ^aloop3Љ џџџџdistringPointer^KЁџџџџgi0Вџџџџns addrDispSkyFЃџџџџim= ЁГџџџџs€SysSockInetAddr\ЃВДџџџџ€‹ SysSockHtonlLГГЕџџџџ‹“sockDispSky.sin_addr{Д!џџџџ—ŸsockDispSky.sin_addr{#џџџџŸ0УџџџџЅЈTRUE!"џџџџŸЃ>!#ТџџџџЈЎMOVE!"УФџџџџЎВ getIPFlag4ТХџџџџДИIP_gett&Тџџџџ  0џџџџ  count$џџџџ  addrDispSkyI%џџџџ ADR$&џџџџ  stringPointerF%'џџџџ  32(џџџџ  counterLoopE')џџџџ! $ loop6*џџџџ& + stringPointer^K+џџџџ) + 57,џџџџ0 2 46-џџџџ8 : 0.џџџџI K 0/џџџџ+ / >*+0џџџџ3 7 <*,1џџџџ: > NE*-2џџџџ? C AND013џџџџD H OR/24џџџџK Q MOVE!3.5џџџџQ T count46џџџџQ T end147џџџџX ] stringPointer^K8џџџџp s count9џџџџ „ stringPointerF:џџџџ[ ] 58;џџџџb d 47<џџџџq s 1=џџџџ‚ „ 1>џџџџ] a<7:?џџџџd h>7;@џџџџj nAND>?Aџџџџs yADD@8<Bџџџџy | countACџџџџ„ ŠADDA9=DџџџџŠ  stringPointerFCEџџџџŠ  loop6CFџџџџ“ – countGџџџџ” – 3Hџџџџ›  0IџџџџЇ Љ 0Jџџџџ– š >FGKџџџџ Ё =FHLџџџџЂ І ORJKMџџџџЉ Џ MOVE!LINџџџџЏ В countMOџџџџЏ В end1MPџџџџ stringPointerFQџџџџ  modbusAddrGPRџџџџ0SџџџџnumberOfFunctionfRTџџџџloop7Uџџџџ"' stringPointerFVџџџџ%'1Wџџџџ(,SUBUVXџџџџ,1 stringPointerFWYџџџџ8> modbusAddr-1RZџџџџDF10[џџџџTYstringPointer^K\џџџџ9> stringPointerF]џџџџWY48^џџџџ_fnumberOfFunctionf_џџџџ>BSUBY\`џџџџFJEXPTZ_aџџџџJR REAL_TO_BYTE[`bџџџџY]SUB[]cџџџџ_c*abdџџџџfjADDc^eџџџџjqnumberOfFunctionfdfџџџџtwcountgџџџџuw1hџџџџw{SUBfgiџџџџ|counthjџџџџƒ†countkџџџџ„†0lџџџџ†Š>jkmџџџџŠloop7lxџџџџ“•2yџџџџІ­numberOfFunctionfzџџџџ•counterLoop - 8V{џџџџЛУsockDispSky.sin_addr{|џџџџ•™EXPTxz}џџџџ­Ж BYTE_TO_DWORDky~џџџџ›Є REAL_TO_DWORDl|џџџџЖКMUL}~€џџџџУЧADD{џџџџЧЯsockDispSky.sin_addr{€‚џџџџ  modbusAddrGƒџџџџ 1„џџџџ ADD‚ƒ…џџџџ stringPointerF„†џџџџ counterLoopE‡џџџџ8ˆџџџџ"$0‰џџџџSUB†‡Šџџџџ$ counterLoopE‰‹џџџџ%)>‰ˆŒџџџџ),loop6‹џџџџ/2end1џџџџ680џџџџ8?numberOfFunctionfџџџџDF13џџџџGJcountџџџџgosockDispSky.sin_addr{‘џџџџmo0’џџџџuxTRUE!“џџџџos>‘”џџџџx~MOVE!“’•џџџџ~‚ getIPFlag4”–џџџџ„ˆIP_gett&”#џџџџloop1Fџџџџ stringPointerF'џџџџ stringPointer^KGџџџџ1(џџџџ  46+џџџџ" "stringPointer^Kџџџџ"" pointPositionH,џџџџ # #0џџџџ##1)џџџџ  NE'(*џџџџ $>+,џџџџ!AND)*Hџџџџ"ADDFGIџџџџ"' stringPointerFHџџџџ"$ADDџџџџ# ( pointPositionH;џџџџ$"'"loop1Xџџџџ*/ pointPositionHYџџџџ/4 bufer[count]@Xyџџџџ7:loop2zџџџџFK stringPointerFœџџџџZ_stringPointer^K{џџџџ6;stringPointer^K|џџџџIK1}џџџџ6 ; bufer[count]@~џџџџ6#;# pointPositionH€џџџџF#K# pointPositionHџџџџ9$;$0џџџџI$K$1‚џџџџ;?!NE{}ƒџџџџ;!?%>~„џџџџ@D"AND‚ƒ…џџџџKQ -„z|†џџџџSX stringPointerF…›џџџџ_eMOVE!„œџџџџeobufer[pointPosition + count]•›‡џџџџK Q%-„€ˆџџџџS!X! pointPositionH‡‰џџџџT#W#loop2‡џџџџrw stringPointerFџџџџrw bufer[count]@ џџџџw{ADDAџџџџ{€ stringPointerF BџџџџƒˆstringPointer^KDџџџџ†ˆ0Eџџџџ’ stringPointerFcџџџџ1CџџџџˆŒNEBDbџџџџ’˜ADDCEcdџџџџ˜ stringPointerFbџџџџ Ѕ bufer[count]@IџџџџЂЅcountHџџџџЅЉADDIџџџџЉЌcountHџџџџЏВcountџџџџАВ1џџџџВЖADDџџџџЖЙcountfџџџџ­ В stringPointer^KgџџџџА!В!0hџџџџВЖ">fgiџџџџИ Л loop1h†џџџџ((23‡џџџџ( (bufer[1])†ˆџџџџ((45‰џџџџ((bufer[2])ˆŠџџџџ((1‹џџџџ((bufer[3])Šˆџџџџ"($(0‰џџџџ%(((bufer[4])ˆŠџџџџ,(.(0‹џџџџ/(2(bufer[5])ŠŒџџџџ6(8(1џџџџ9(<(bufer[6])ŒŽџџџџ@(B(0џџџџC(F(bufer[7])ŽџџџџJ(L(0‘џџџџM(P(bufer[8])ŒџџџџT(V(0џџџџW(Z(bufer[9])Œ”џџџџ^(`(0•џџџџa(e( bufer[10]0”–џџџџh(j(0—џџџџk(o( bufer[11]0–’џџџџr(t(0“џџџџu(y( bufer[12]0’zџџџџ}((0{џџџџ€(…( bufer[count]@z|џџџџ‰(‹(0}џџџџŒ(’(bufer[count+1]N|Aџџџџ–(˜(1Bџџџџ™(Ÿ(bufer[count+2]NACџџџџЂ(Є(0DџџџџЅ(Ћ(bufer[count+3]NCEџџџџЏ(Б(1FџџџџВ(И(bufer[count+4]NEBџџџџМ(П(endЖџџџџ,, getIPFlag4Зџџџџ--TRUE!Иџџџџ* .=ЖЗЙџџџџ ,,IP_gett&ИГџџџџ,, createUDPFlagTЕџџџџ--SOCKET_AF_INEThЖџџџџ.. SOCKET_DGRAMcЗџџџџ//SOCKET_IPPROTO_UDPŽВџџџџ*'0 SysSockCreateTГЕЖЗДџџџџ(,., createUDPFlagTВИџџџџ(-,-descUDP5ВОџџџџ0,3, '8.8.8.8')КџџџџV-X-0Оџџџџ]-b- 16#8080808FНџџџџ3*@-SysSockInetAddr\ОПџџџџ@*K- SysSockHtonlLНРџџџџK,S,dnsGoogle.sin_addrqПЙџџџџX*\.=ПКЛџџџџb*h.MOVE!ЙОМџџџџh-p-dnsGoogle.sin_addrqЛТџџџџv.x.53Сџџџџs*- SysSockHtonsPТУџџџџ,†,dnsGoogle.sin_portmСФџџџџ‰..SOCKET_AF_INEThХџџџџ‰,‘,dnsGoogle.sin_familyxФЧџџџџ–,š,descUDP5Шџџџџ”-š- SOCKET_SOLPЪџџџџ–.š.16#10141Ыџџџџ˜/š/0Ьџџџџ˜0š00Цџџџџš*Ј1SysSockSetOptioneЧШЪЫЬЮџџџџГ,З,sendFlag4ЯџџџџГ-З-descUDP5бџџџџЉ.Ќ.buferвџџџџГ/З/ count + 42гџџџџЕ0З00еџџџџЇ1Ќ1 dnsGoogle=жџџџџЕ2З216аџџџџЌ,А/ADRбдџџџџЌ/А2ADRеЭџџџџЗ*Ф3 SysSockSendToZЮЯавгджиџџџџФ,Ш,sendFlag4Эйџџџџ33descUDP5лџџџџ44buferЛџџџџ%4'40мџџџџ55256нџџџџ660оџџџџ7 7 dnsGoogle=рџџџџ8816кџџџџ2 5ADRлпџџџџ 5 8ADRозџџџџ1#9SysSockRecvFromgйкмнпрКџџџџ'1+5>зЛМџџџџ+3/3 getIPFlag4КZџџџџ<3?3bufer[8])[џџџџ=4?40Yџџџџ?1C5=Z[\џџџџC3G3IP_gett&YЦџџџџ.6060Сџџџџ,707descUDP5Рџџџџ04<8 SysSockClosePЦСгџџџџH6N6bufer[count + 20][йџџџџ]6c6bufer[count + 19][мџџџџw6}6bufer[count + 18][рџџџџ’6˜6bufer[count + 17][вџџџџJ7N7167772168кџџџџ`7c765536#нџџџџ{7}7256ѕџџџџN4W7 BYTE_TO_DWORDkгбџџџџW4[8MULѕвіџџџџc4l7 BYTE_TO_DWORDkйиџџџџl4p8MULікеџџџџq4u8ADDбиїџџџџ}4†7 BYTE_TO_DWORDkмлџџџџ†4Š8MULїноџџџџ‹48ADDелјџџџџ˜4Ё7 BYTE_TO_DWORDkрпџџџџЁ4Ѕ8ADDјоЩџџџџЅ6­6sockDispSky.sin_addr{пПџџџџH<N<bufer[count + 17][Рџџџџ]<c<bufer[count + 18][Сџџџџw<}<bufer[count + 19][Тџџџџ’<˜<bufer[count + 20][вџџџџЈ<Ћ< '8.8.8.8')УџџџџJ=N=167772168Фџџџџ`=c=65536#Хџџџџ{=}=256дџџџџЙ=Л=0ЦџџџџN:W= BYTE_TO_DWORDkПЧџџџџW:[>MULЦУШџџџџc:l= BYTE_TO_DWORDkРЩџџџџl:p>MULШФЪџџџџq:u>ADDЧЩЫџџџџ}:†= BYTE_TO_DWORDkСЬџџџџ†:Š>MULЫХЭџџџџ‹:>ADDЪЬЮџџџџ˜:Ё= BYTE_TO_DWORDkТЯџџџџЁ:Ѕ>ADDЮЭбџџџџЋ:И=SysSockInetAddr\вгџџџџЛ:П>=бдеџџџџР:Ц>MOVE!гЯаџџџџЦ=Ю=sockDispSky.sin_addr{е]џџџџг<з<IP_gett&џџџџ? ? timeKeepAliveNџџџџ@ @T#30s# џџџџ@@T#30s#!џџџџ = A<"џџџџ=AMOVE!! #џџџџ@@ timeKeepAliveN"џџџџ EE createFlag:џџџџFFSOCKET_AF_INEThџџџџGG SOCKET_STREAMhџџџџHHSOCKET_IPPROTO_TCPŒ"џџџџ#H&HTIME()#џџџџCI SysSockCreateTџџџџ&D*D createFlag: џџџџF F descDispSkyH!џџџџ&E,IMOVE!"&џџџџ,H2H timeStamp_1P!(џџџџ/D4D portDispSkyB'џџџџ4B@E SysSockHtonsP()џџџџ@DHDsockDispSky.sin_portw'*џџџџHDODSOCKET_AF_INETh+џџџџODXDsockDispSky.sin_family‚*ЧџџџџYD^D descDispSkyHШџџџџXE^E SOCKET_SOLPЩџџџџZF^F16#10141Ъџџџџ\G^G0Ыџџџџ\H^H0Ьџџџџ^BlISysSockSetOptioneЧШЩЪЫџџџџnDpD1џџџџpDuD piParameterDџџџџ€D…D descDispSkyHџџџџE…E SOCKET_SOLPџџџџtFyF piParameterDџџџџyD}GADRџџџџ…BG SysSockIoctlE4џџџџ“D›DsockDispSky.sin_addr{3џџџџ™E›E06џџџџ EЅE connectFlagC-џџџџЅGЊG descDispSkyH/џџџџšHŸH sockDispSkyG0џџџџЈIЊI162џџџџ›BŸF>435џџџџЅBЉFAND26.џџџџŸFЃIADR/,џџџџЊDЗJSysSockConnect]5-.01џџџџЗFМF connectFlagC,?џџџџНDХDsockDispSky.sin_addr{@џџџџУEХE0AџџџџЪEаE heartBeatFlagMDџџџџЯGдG descDispSkyHEџџџџТHЩHheartBeatDispSkybЮџџџџсHуH0GџџџџвIдI12HџџџџвJдJ0BџџџџХBЩF>?@CџџџџаBдFANDBAFџџџџЩFЭIADRE9џџџџдDпK SysSockSendLCDFGHЭџџџџуEчI>9ЮIџџџџшGюG heartBeatFlagMЭKџџџџLL descDispSkyHLџџџџM M buferNџџџџNN256Oџџџџ OOSOCKET_MSG_DONTROUTEЅMџџџџ K NADRLJџџџџJP SysSockRecvJKMNOPџџџџ L$LlenRecv,JRџџџџ)L-LlenRecv,Sџџџџ+M-M0Uџџџџ3M6MTIME()#Qџџџџ-J1N>RSTџџџџ6J<NMOVE!QUVџџџџ<MBM timeStamp_1PTкџџџџ=NBN timeStamp_2JTЋџџџџFLKL descDispSkyHЊџџџџEMKMdescDispSkyOld[АџџџџQMWMdisconnectFlagT]џџџџ]McMdescDispSkyOld[ЉџџџџKJONNEЋЊБџџџџWJ[NANDЉА[џџџџcJoN SysSockClosePБ]ВџџџџpMvMdisconnectFlagT[_џџџџR RresetSocketFlagYaџџџџS SFALSE%ЃџџџџDSIS descDispSkyH`џџџџ PTMOVE!_abџџџџQQ createFlag:`cџџџџQQ connectFlagC`dџџџџQ%Q heartBeatFlagM`eџџџџ'Q-QdisconnectFlagT`fџџџџ/Q5QresetSocketFlagY`gџџџџ7Q;QaddrFlag1`iџџџџ<Q@QsendFlag4`jџџџџAQEQ getIPFlag4`ЂџџџџIPOTMOVE!`ЃЄџџџџOSUSdescDispSkyOld[ЂlџџџџZR]RTIME()#oџџџџWS]S timeStamp_1PmџџџџcSiS timeKeepAliveQrџџџџkUnUTIME()#kџџџџ]PaTSUBlonџџџџiPmT>kmpџџџџmQsQresetSocketFlagYnqџџџџnRtVMOVE!nrsџџџџtUzU timeStamp_1Pqэџџџџ~RRTIME()#юџџџџ{SS timeStamp_2PяџџџџŠSST#5sњџџџџЎSГS descDispSkyH№џџџџU’UTIME()#ћџџџџЁUЈUheartBeatDispSkybќџџџџБUГU12§џџџџБVГV4ёџџџџP…TSUBэюђџџџџP‘T>ёяєџџџџ’R˜VMOVE!ђ№ѕџџџџ˜UžU timeStamp_2PєџџџџџЈSЌVADRћџџџџГPОW SysSockSendLєњџќ§›џџџџX#XlenRecv,œџџџџ!Y#Y0џџџџ\\ bufer[9], џџџџ]]256Ёџџџџ]] bufer[10]3Ѕџџџџ(]*]1šџџџџ#V'Z>›œžџџџџZ] BYTE_TO_WORDbŸџџџџZ^MULž Јџџџџ["^ BYTE_TO_WORDbЁЂџџџџ#Z'^ADDŸЈЄџџџџ*Y0^ADDšЂЅЇџџџџ1\9\firstRegisterAddressqЄЉџџџџ@[D[lenRecv,ЋџџџџB\D\0­џџџџJ\N\ bufer[8],ЊџџџџDYH]>ЉЋЌџџџџNYT]MOVE!Њ­ЎџџџџU\\\numberOfFunctionfЌВџџџџa[h[numberOfFunctionfДџџџџf\h\3БџџџџhYl]NEВДЖџџџџl[s[endOfFunction_3^БЗџџџџv[z[ bufer[11]3Иџџџџ€\‚\256Йџџџџˆ\Œ\ bufer[12]3КџџџџzY‚\ BYTE_TO_WORDbЗЛџџџџƒY‡]MULКИМџџџџŒZ”] BYTE_TO_WORDbЙНџџџџ•Y™]ADDЛМОџџџџš\Ё\numberOfRegistersmН6џџџџІ[­[numberOfRegistersm8џџџџЋ\­\2:џџџџВ\Д\9<џџџџК\Н\bufer?џџџџЪ\Ь\1257џџџџ­YБ]MUL689џџџџЕYЙ]ADD7:;џџџџНZТ]SIZEOF*<=џџџџФYШ]>9;>џџџџЬYв]MOVE!=?@џџџџв\й\numberOfRegistersm>Сџџџџa anumberOfRegistersmТџџџџb b2Фџџџџbb3Рџџџџ _cMULСТУџџџџ_cADDРФХџџџџbb lenghtData<УШџџџџ a%a lenghtData<Щџџџџ#b%b8Чџџџџ%_)cSHRШЩЪџџџџ,_4b WORD_TO_BYTEbЧЫџџџџ6a:a bufer[5],ЪЬџџџџg g lenghtData<аџџџџh h256џџџџ e iMODЬаЮџџџџeh WORD_TO_BYTEbЯџџџџgg bufer[6],Юбџџџџ"g$g10вџџџџ$g+gcounterRegisters_бгџџџџ.g6gfirstRegisterAddressqдџџџџ6g;g counterLoopHгжџџџџ?gGgfirstRegisterAddressqлџџџџTg[gstartModbusAddr]зџџџџEhGh1йџџџџLhNh2еџџџџGeKiSUBжзиџџџџNeRiMULейкџџџџ[e_iADDлимџџџџ_gdg modbusAddrGкнџџџџggjgloop4пџџџџlgrg modbusAddr^Lрџџџџphrh8оџџџџreviSHRпрсџџџџweh WORD_TO_BYTEbотџџџџ€g‰gbufer[counterRegisters]сюџџџџg“g modbusAddr^Lэџџџџ“e›h WORD_TO_BYTEbюяџџџџgЇgbufer[counterRegisters + 1]•эёџџџџЊgЏg modbusAddrGђџџџџ­hЏh2№џџџџЏeГiADDёђѓџџџџГgИg modbusAddrG№єџџџџМgУgcounterRegisters_їџџџџСhУh2ѕџџџџУeЧiADDєїіџџџџЧgЮgcounterRegisters_ѕљџџџџвgзg counterLoopEќџџџџеhзh1њџџџџзeлiADDљќћџџџџлgрg counterLoopEњџџџџllfirstRegisterAddressqўџџџџ l%l counterLoopEџџџџ mmnumberOfRegistersmџџџџmm1џџџџџjnADDџџџџjnSUBџ§џџџџ%j)n<=ўџџџџ)l,lloop4§џџџџ/l6lnumberOfRegistersmџџџџ4m6m2џџџџ6j:nMULџџџџ;jCm WORD_TO_BYTEb џџџџClFlbufer[9]) џџџџIlPlnumberOfRegistersm џџџџNmPm2џџџџUmWm9 џџџџPjTnMUL   џџџџWj[nADD џџџџ[l_l lenBufOut6 џџџџcljlendOfFunction_3^џџџџplwlnumberOfFunctionfџџџџumwm16џџџџwj{nNEџџџџ{l‚lendOfFunction_10eџџџџ…l‡l14џџџџ‡lŽlcounterRegisters_џџџџ‘l•l bufer[11]3џџџџ“m•m256џџџџЃmЇm bufer[12]3џџџџ•jm BYTE_TO_WORDbџџџџžjЂnMULџџџџЇkЏn BYTE_TO_WORDb џџџџАjДnADD!џџџџЕmМmnumberOfRegistersm #џџџџРlШlfirstRegisterAddressq$џџџџЦmШm1&џџџџЭmЯm2(џџџџдmлmstartModbusAddr]"џџџџШjЬnSUB#$%џџџџЯjгnMUL"&'џџџџлjпnADD%()џџџџпlфl modbusAddrG'*џџџџqq1+џџџџq q counterLoopE*,џџџџqqloop5;џџџџqqbufer[counterRegisters]<џџџџ$r&r256=џџџџ+r5rbufer[counterRegisters + 1]•>џџџџo&r BYTE_TO_WORDb;?џџџџ&o*sMUL><@џџџџ5p=s BYTE_TO_WORDb=Aџџџџ>oBsADD?@BџџџџCrGr valueData7ACџџџџNqRq valueData7DџџџџRqWq modbusAddr^LCFџџџџ[q`q modbusAddrGGџџџџ^r`r2Hџџџџ`odsADDFGIџџџџdqiq modbusAddrGHJџџџџnqsq counterLoopEKџџџџqrsr1LџџџџsowsADDJKMџџџџwq|q counterLoopELNџџџџq†qcounterRegisters_Oџџџџ„r†r2Pџџџџ†oŠsADDNOQџџџџŠq‘qcounterRegisters_PTџџџџ•qšq counterLoopEUџџџџ“ršrnumberOfRegistersmSџџџџšožs<=TUVџџџџžqЁqloop5SWџџџџЄqІq12XџџџџЇqЋq lenBufOut6W[џџџџЌqДqfirstRegisterAddressqZџџџџВrДr8YџџџџДoИsSHR[Z\џџџџЙoСr WORD_TO_BYTEbY]џџџџУqЦqbufer[9])\^џџџџШqаqfirstRegisterAddressqbџџџџЮrаr256_џџџџаoдsMOD^b`џџџџеoнr WORD_TO_BYTEb_aџџџџпqуq bufer[10]0`cџџџџv vnumberOfRegistersmgџџџџ w w8dџџџџ txSHRcgeџџџџtw WORD_TO_BYTEbdfџџџџvv bufer[11]0ehџџџџ!v(vnumberOfRegistersmlџџџџ&w(w256iџџџџ(t,xMODhljџџџџ-t5w WORD_TO_BYTEbikџџџџ7v;v bufer[12]0jmџџџџ>v@v0nџџџџAvDvbufer[5])moџџџџHvJv6pџџџџKvNvbufer[6])oqџџџџRvYvendOfFunction_10ewџџџџ~~lenRecv,yџџџџ0&џџџџTRUE!'џџџџ*-TIME()#vџџџџ|€>wy$џџџџ|"€MOVE!v&%џџџџ"&answFlag6$)џџџџ-|3€MOVE!$'(џџџџ38 timeStamp_3J)rџџџџ0sџџџџ$numberOfFunctionfr+џџџџˆ ˆTIME()#,џџџџ‰ ‰ timeStamp_3P-џџџџ‰‰ timeoutAnswG5џџџџ‰‰answFlag6zџџџџ$‹)‹ descDispSkyH|џџџџ bufer}џџџџ$( lenBufOut6~џџџџ'Ž)Ž4/џџџџ † ŠSUB+,0џџџџ†Š>/-4џџџџ†"ŠAND05{џџџџ‹"ŽADR|uџџџџ)ˆ4 SysSockSendL4z{}~*џџџџ5Š9ŠanswFlag6ud1,\gPLC_PRG+ЫІ^ +ЫІ^ЭЭЭЭЭЭЭЭМPROGRAM PLC_PRG VAR DispSkyAddr : STRING:='s1.dispsky.ru'; DispSkyPort : WORD := 5005; HeartBeat : STRING(12) := 'F0FED8B914A7'; Connect_to: ConnectToDispSky; END_VAR)d§џџџ,\gИЮ(SysLibSockets.lib*16.8.19 09:54:14@SV]#STANDARD.LIB 4.10.05 11:14:46@і9BC!IECSFC.LIB 13.4.06 15:51:28@PI>D&ANALYZATION.LIB 5.10.99 09:05:06@•љ7)SYSLIBCALLBACK.LIB 20.2.06 13:31:08@lšљC|SysSockAccept@INADDR SOCKADDRESS SOCKET_FD_SET SOCKET_LINGERSOCKET_TIMEVALSysSockBind@SysSockClose@SysSockConnect@SysSockCreate@SysSockGetHostByName@SysSockGetHostName@SysSockGetLastError@SysSockGetOption@SysSockHtonl@SysSockHtons@SysSockInetAddr@SysSockInetNtoa@SysSockIoctl@SysSockListen@SysSockNtohl@SysSockNtohs@SysSockRecv@SysSockRecvFrom@SysSockSelect@SysSockSend@SysSockSendTo@SysSockSetIPAddress@SysSockSetOption@SysSockShutdown@Globale_Variablen@CONCAT@ CTD@ CTU@ CTUD@ DELETE@ F_TRIG@ FIND@ INSERT@ LEFT@ LEN@ MID@ R_TRIG@ REPLACE@ RIGHT@RS@ RTC@ SEMA@SR@ TOF@ TON@TP@FSFCActionControl@ SFCActionType SFCStepTypeGlobale_Variablen@AnalyzeExpression@AppendErrorString@Globale_Variablen@bSysCallbackRegister@ RTS_EVENTRTS_EVENT_FILTERRTS_EVENT_SOURCESysCallbackUnregister@POUConnectToDispSkyvPLC_PRG1џџџџ вшяћ фрээћѕџџџџУыюсрыќэћх ях№хьхээћхGlobal_Variablesџџџџ Тшчѓрышчрішшџџџџ,ЫІ^lOd