рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рддрд╛рдкрдорд╛рди рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдХреБрдЫ" рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ред рдПрдХ PLC 160 рдирд┐рдпрдВрддреНрд░рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рддрд╛рдкрдорд╛рди рд╕реЗрдВрд╕рд░ RS-485 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред
рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд╕реЗрдВрд╕рд░ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрдиреЗрдХреНрд╢рди рдЖрд░реЗрдЦ рдерд╛:
рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ CoDeSys (
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ )ред
рддрд╛рдкрдорд╛рди рдХрд╛ рдХреЛрдИ рдЗрддрд┐рд╣рд╛рд╕ рдирд╣реАрдВ рдерд╛ рдФрд░ рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреБрд░реНрдШрдЯрдирд╛ рдХрдм рд╣реБрдИ рдереАред
рд╢реБрд░реБрдЖрдд
рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛ - MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ WEB- рд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рдХреЗ рддрд╛рдкрдорд╛рди рдФрд░ рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп:
- рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдореЗрдВ рдХрд┐рд╕реА рднреА рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ
- рд╡рд░реНрддрдорд╛рди рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ
- рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЗ рдСрдирд▓рд╛рдЗрди рджреЗрдЦрдиреЗ
- рдЕрд▓рд╛рд░реНрдо рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдФрд░ рдиреНрдпреВрдирддрдо рдорд╛рди рдмрджрд▓реЗрдВ
рдмрд╛рдж рдореЗрдВ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдХрд▓рд╛:
рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдзрд┐рдХрддрдо рдФрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреНрдпреВрдирддрдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рд╕рд╛рде рд╣реА рдЙрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдЬрдм рддрд╛рдкрдорд╛рди рд╕рд╛рдорд╛рдиреНрдп рдкрд░ рд▓реМрдЯ рд╕рдХрддрд╛ рдерд╛ред
- рдпрджрд┐ рддрд╛рдкрдорд╛рди рдиреНрдпреВрдирддрдо рдпрд╛ рдЕрдзрд┐рдХрддрдо рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╕рдордп рдЯреА рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЧрдпрд╛, рддреЛ рдпрд╣ рдПрдХ рдорд╛рдореВрд▓реА рджреБрд░реНрдШрдЯрдирд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛ рдирдЧрдгреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХреА рдЧрдИ)ред

- рдпрджрд┐ рддрд╛рдкрдорд╛рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреНрдпреВрдирддрдо рдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдзрд┐рдХрддрдо рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреБрд░реНрдШрдЯрдирд╛ рд╣реИред

рдкрд╣реБрдБрдЪ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛:
- рдкреНрд░рд╢рд╛рд╕рдХ - рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП)))
- рдЯреЗрдХреНрдиреЛрд▓реЙрдЬрд┐рд╕реНрдЯ - рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП 5 рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓реЗрдВ

рдореБрдЭреЗ рд╕рдордп рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдерд╛ред рдпрд╣ рдЗрддрдирд╛ рд╣реИ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 00:00 рд╕реЗ 09:00 рддрдХ рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХреЛ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

- рдЗрдВрдЬреАрдирд┐рдпрд░ - рдЕрдВрд╢рд╛рдВрдХрди
рд╕рд╣реА рдврдВрдЧ рд╕реЗ, рдЖрдкрдХреЛ рдХреИрд▓рд┐рдмреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЪрд┐рдкрдХреЗ рд╣реБрдП COM рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реИрдкрдЯреЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ WEB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЕрд░реНрдерд╛рдд рдЕрдВрд╢рд╛рдВрдХрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡реНрдпрдХреНрддрд┐ рдЕрдкрдиреЗ рдерд░реНрдорд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕реЗрдВрд╕рд░ рдкрд░ рдЖрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдЗрдЯ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

- рдмрд╛рдХреА рд╕рдм - рджреЗрдЦреЗрдВ
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ
рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреАрдПрд▓рд╕реА 160 рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдмрдирд╛рдИ рдЧрдИ рдереАред
рд╕реНрдерд╛рдкрд┐рдд CoDeSysред
IP рдкрддреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рддрд╛рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрде
c: \ project \ pro \ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЗрд╕реЗ
my_work.pro рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдпрдВ
run.cmd рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
"C:\Program Files\3S Software\CoDeSys V2.3\Codesys.exe" "C:\project\pro\my_work.pro" /userlevel 0 /password 157999 /online
рдЕрдиреБрдкреНрд░рдпреЛрдЧ
run.cmd рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ
рдХрд░рддрд╛ рд╣реИ
WinExec(Pchar(тАЬc:\run.cmdтАЭ), SW_HIDE);
рдореИрдВрдиреЗ рддрд╛рдкрдорд╛рди рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
DDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ )
config.ini [CoDeSys] service=CoDeSys topic=C:\project\pro\my_work.pro item=C:\Program Files\3S Software\CoDeSys V2.3\ cmd=C:\run.cmd [db] host=127.0.0.1 port=3306 user=root key=keypassword db=workdb
рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ:
- "Config.ini" рд╕реЗ CoDeSys рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
"Config.ini" рд╕реЗ MySQL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ
рдЯрд╛рдЗрдорд░ рджреНрд╡рд╛рд░рд╛ (рдпрд╣ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛):
- MySQL рдХреЗ рд╕рд╛рде рд╕реЗрдВрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдШрдЯрдХ рдмрдирд╛рдПрдВ DDE.DDECONv :
DDE.DDEConv[тАж]:= TDdeClientConv.Create(Self) DDE.DDEConv[тАж].ServiceApplication:=тАЭpatchcodesysтАЭ DDE.DDEConv[тАж].SetLink(тАЬnameтАЭ,тАЭpatchddeтАЭ)
рд╣рдо DDE.DDEItem рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ DDE.DDECONv рдШрдЯрдХ рд╕реЗ рдмрд╛рдБрдзрддреЗ рд╣реИрдВ:
DDE.DDEItem[тАж]:=TDdeClientItem.Create(Self) DDE.DDEItem[тАж].DdeConv:=DDE.DDEConv[тАж]
рд╣рдо MySQL рдХреЗ рд╕рд╛рде рд╕реЗрдВрд╕рд░ рдХрд╛ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ:
DDE.DDEItem[тАж].DdeItem:=MySQL.GetSensorName(тАж)
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рддрд╛рдкрдорд╛рди рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
DDE.DDEItem[тАж].Text
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рддрд╛рдкрдорд╛рди рдорд╛рди рдФрд░ рдЙрдирдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред
MySQL.InsertTemp(MySQL.GetSensorName(...),тАЭтАЭ,INSQL(UMin[...]),INSQL(UMax[...]),INSQL(CRMin[...]),INSQL(CRMax[...]))
- рд╣рдо рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдФрд░ рд╕рдордп рдкрд░ MySQL рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
рдХрдо рд╕реЗ рдХрдо
UMin[IтАж]:=OUTSQL(MySQL.GetMin(MySQL.GetSensorName(тАж)))
рдЕрдзрд┐рдХрддрдоред
UMax[тАж]:=OUTSQL(MySQL.GetMax(MySQL.GetSensorName(...)))
рдиреНрдпреВрдирддрдо рдиреНрдпреВрдирддрдо
CRMin[тАж]:=OUTSQL(MySQL.GetCriticalMin(MySQL.GetSensorName(тАж)))
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдзрд┐рдХрддрдо
CRMax[тАж]:=OUTSQL(MySQL.GetCriticalMax(MySQL.GetSensorName(тАж)))
рд╕рдордп
CRTime[тАж]:=MySQL.GetCriticalTime(MySQL.GetSensorName(тАж))
рдиреЛрдЯ: " рдореВрд░реНрдЦ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛" - рдпрджрд┐ рдиреНрдпреВрдирддрдо рдЕрдзрд┐рдХрддрдо рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ - рддреЛ рд╣рдо рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВред
if (UMin[тАж]>=UMax[тАж]) then begin UM[тАж]:=UMin[тАж]; UMin[тАж]:=UMax[тАж]; UMax[тАж]:=UM[тАж]; end;
- рджреБрд░реНрдШрдЯрдирд╛:
рдпрджрд┐ рдХреЛрдИ рджреБрд░реНрдШрдЯрдирд╛ рдирд╣реАрдВ рд╣реБрдИ, рддреЛ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдПрдВ
MySQL.InsertCrash(FormatDateTime('yyyy-mm-dd hh:nn:ss', dt),FormatDateTime('yyyy-mm-dd hh:nn:ss', dt),MySQL.GetSensorName(...),тАж)
рдЕрдЧрд░ рдХреЛрдИ рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ рддреЛ рд╣рдо рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ
MySQL.UpdateCrash(MySQL.GetCrashID(MySQL.GetSensorName(...)),FormatDateTime('yyyy-mm-dd hh:nn:ss', dt),тАж)
рджреБрд░реНрдШрдЯрдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИред рдкреВрд░рд╛ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░реЗрдВред
рд╡реЗрдм рд╕рд╛рдЗрдЯ
PHP рдореЗрдВ рдкреЗрдЬ рд▓рд┐рдЦреЗред
рдореБрдЦреНрдп рдкреГрд╖реНрда (рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛, рдЕрдзрд┐рдХ рдХрд┐рдХ рди рдХрд░реЗрдВ):
<?php require 'config.php'; session_start(); $page = isset( $_GET['page'] ) ? $_GET['page'] : ""; switch ( $page ) { case 'login': login(); break; case 'logout': logout(); break; case 'list': listpage(); break; тАжтАжтАжтАжтАжтАжтАж.. ?>
рд╢реЗрд╖ рдкреГрд╖реНрда рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╕реЗрдВрд╕рд░ рдХреА рд╕реВрдЪреАред рдирд╛рдо, рд╕реЗрдВрд╕рд░ рдирд╛рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рд╕реЗрдВрд╕рд░ рдкреНрд░рдХрд╛рд░ред

- рд╕реЗрдВрд╕рд░ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдП рдЧрдП рдереЗред

- "рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐" рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: рджреБрд░реНрдШрдЯрдирд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рджреБрд░реНрдШрдЯрдирд╛ рдкреВрд░реНрдг, рдЧрдВрднреАрд░ рджреБрд░реНрдШрдЯрдирд╛ред
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЙрдирдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
- рд▓реЙрдЧрд┐рдВрдЧ рдХрд┐рд╕рдиреЗ рдХреАред
- рд╕рднреА рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреБрд░рд╛рд▓реЗрдЦред
- рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ред
рдмреИрд╕рд╛рдЦреА
- рдЬрдм CoDeSys рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

рд╣рдо рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВред
W_WND_Button_Run: HWND: W_WND_RUN: HWND; C_Button_Message='Button'; C_CoDeSys_Message='CoDeSys'; W_WND_RUN := FindWindow(nil,C_CoDeSys_Message); if W_WND_RUN<>0 then begin W_WND_Button_Run:=FindWindowEx(W_WND_RUN, 0,C_Button_Message, nil); if W_WND_Button_Run<>0 then begin SendMessage(W_WND_Button_Run, WM_LBUTTONDOWN, 10, 10); SendMessage(W_WND_Button_Run, WM_LBUTTONUP, 10, 10); SendMessage(W_WND_Button_Run, WM_LBUTTONDOWN, 10, 10); SendMessage(W_WND_Button_Run, WM_LBUTTONUP, 10, 10); end; end;
- рдЕрдЪрд╛рдирдХ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

W_WND_Error:=FindWindow(nil,''); if W_WND_Error<>0 then begin W_WND_Button_Error:=FindWindowEx(W_WND_Error,0,'Button', nil); if W_WND_Button_Error<>0 then begin SendMessage(W_WND_Button_Error, WM_LBUTTONDOWN, 10, 10); SendMessage(W_WND_Button_Error, WM_LBUTTONUP, 10, 10); SendMessage(W_WND_Button_Error, WM_LBUTTONDOWN, 10, 10); SendMessage(W_WND_Button_Error, WM_LBUTTONUP, 10, 10); PostMessage(FindWindow(PChar(C_CoDeSys),nil), WM_QUIT, 0, 0); end; end;
- рдЕрд╕рдВрдЧрдд рд╣реИрдВрдЧред

рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред
C_CLOSE_DEBUG='CoDeSys for Automation Alliance (debug)'; W_WND_CLOSE:=FindWindow(nil,C_CLOSE_DEBUG); if W_WND_CLOSE<>0 then begin KillProcess('Codesys.exe'); KillProcess('WerFault.exe'); PostMessage(FindWindow(PChar(C_Close_DEBUG),nil), WM_QUIT, 0, 0); PostMessage(FindWindow(PChar(C_CoDeSys),nil), WM_QUIT, 0, 0); MySQL.InsertLog('Error debug.. Kill process - codesys.exe and WerFault.exe'); MySQL.InsertLog('Restart programm'); RestartThisApp; end; // function KillProcess(ExeName: string): LongBool; var B: BOOL; ProcList: THandle; PE: TProcessEntry32; begin Result := False; ProcList := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); PE.dwSize := SizeOf(PE); B := Process32First(ProcList, PE); while B do begin if (UpperCase(PE.szExeFile) = UpperCase(ExtractFileName(ExeName))) then Result := TerminateProcess(OpenProcess($0001, False, PE.th32ProcessID), 0); B:= Process32Next(ProcList, PE); end; CloseHandle(ProcList); end; // procedure TForm1.RestartThisApp; begin ShellExecute(Handle, nil, PChar(Application.ExeName), nil, nil, SW_SHOWNORMAL); Application.Terminate; // or, if this is the main form, simply Close; end;
Zabbix
127.0.0.1 рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдЬрдмрд╛рди рдмрдирд╛рдпрд╛ред
рдЗрд╕рдореЗрдВ "рд╕реЗрдВрд╕рд░" рдирд╛рдо рдХрд╛ рдПрдХ рдбрд┐рдЯреЗрдХреНрд╢рди рдирд┐рдпрдо рд╣реИред


рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЯреНрд░рд┐рдЧрд░ред

Zabbix_agentd.conf рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
UserParameter=sensors[*],/usr/lib/zabbix/alertscripts/sensors.sh UserParameter=crash[*],/usr/lib/zabbix/alertscripts/crash.sh $1
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреБрдж:
sensors.sh
#!/bin/sh unset id unset res id=(`echo "select id FROM sensor WHERE type='1'" | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null`) echo '{ "data": [' for (( count=1; count<${#id[@]}; count++ )) do res=(`echo "select name FROM sensor WHERE (type='1' and id='${id[$count]}') " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null `) r={${res[@]} l=${#r} res1=(`echo "select param FROM sensor WHERE (type='1' and id='${id[$count]}') " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null `) r1={${res1[@]} l1=${#r1} res2=(`echo "select ddename FROM sensor WHERE (type='1' and id='${id[$count]}') " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null `) r2={${res2[@]} l2=${#r2} res3=(`echo "select min FROM temp_${r2:17:l2} ORDER BY id DESC LIMIT 1 " | mysql -uroot -ps -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null`) r3={${res3[@]} l3=${#r3} res4=(`echo "select max FROM temp_${r2:17:l2} ORDER BY id DESC LIMIT 1 " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null`) r4={${res4[@]} l4=${#r4} res5=(`echo "select cmin FROM temp_${r2:17:l2} ORDER BY id DESC LIMIT 1 " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null`) r5={${res5[@]} l5=${#r5}2>/dev/null res6=(`echo "select cmax FROM temp_${r2:17:l2} ORDER BY id DESC LIMIT 1 " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null`) r6={${res6[@]} l6=${#r6} res7=(`echo "select param FROM temp_${r2:17:l2} ORDER BY id DESC LIMIT 1 " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null`) r7={${res7[@]} l7=${#r7} s=$s'{ "{#SID}": "'${id[$count]}'", "{#SNAME}": "'${r:5:l}'", "{#SDDENAME}": "'${r2:17:l2}'" , "{#SPARAM}": "'${r7:7:l7}'", "{#SMIN}": "'${r3:5:l3}'", "{#SMAX}": "'${r4:5:l4}'", "{#SCMIN}": "'${r5:6:l5}'", "{#SCMAX}": "'${r6:6:l6}'" },' done a=${#s} b=${s: 0: $a-1} c=${#b} d=$b echo $d']}'
crash.sh
#!/bin/sh a=$1 unset res res=(`echo "select flag, id_status FROM crash WHERE id_sensor='$a' ORDER BY id DESC LIMIT 1 " | mysql -uroot -p -D workdb -h 0.0.0.0 --default-character-set=utf8 2>/dev/null `) for (( count=2; count<${#res[@]}; count++ )) do s=$s' '${res[$count]} done b=${s:0:2} c=${s:3:4} if [ $b = 0 -a $c = 1 ] then echo 0 else echo 1 fi
рдФрд░ рдлрд┐рд░ zabbix рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдореЗрд▓ рдФрд░ рдПрд╕рдПрдордПрд╕ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
рдкрд░рд┐рдгрд╛рдо рд╡рд░реНрддрдорд╛рди рдФрд░ рдкрд┐рдЫрд▓реЗ рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдЙрджреНрдпрдо рдореЗрдВ рдПрдХ рддрд╛рдкрдорд╛рди рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдереАред

рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

рдлрд┐рд▓рд╣рд╛рд▓, рджрд░рд╡рд╛рдЬреЗ рдЦреЛрд▓рдиреЗ / рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдВрд╕рд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд ( рд╕рд╛рдкреЗрдХреНрд╖ )ред
- рдХрд░реНрдо рд╕реЗ (?)ред
- 3 рд╕рд╛рд▓ рд╕реЗ рдирд┐рдЧрд░рд╛рдиреА рдЪрд▓ рд░рд╣реА рд╣реИред
рд╡рд┐рдкрдХреНрд╖:
- рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдХрдИ рдмрд┐рдВрджреБ: рдирд┐рдпрдВрддреНрд░рдХ, рдиреЗрдЯрд╡рд░реНрдХ, CoDeSys рдкреНрд░реЛрдЧреНрд░рд╛рдо, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди, MySQL , IIS ред
рдкреБрдирд╢реНрдЪ
рдЬреНрдпрд╛рджрд╛ рд▓рд╛рдд рдордд рдорд╛рд░реЛред рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИред