以äžã®è°è«ã«è²¢ç®ããŠãã ãã
@ mark-lazarides @ Roald87@ philippleidig @ jozefchmelarããã§ã³ã³ãã³ã·ã§ã³ã«ã€ããŠã®è°è«ãç¶ããŸããã...ç°¡åãªãã£ããã®ããã®ããã¿ã 掻åã远跡ããããã®ããã§ã®è°è«
ç§ã®æèŠã§ã¯ãããããã£ã¯æ¬¡ã®ããã«å®çŸ©ããå¿ èŠããããŸããIsEnabledãã ååèªäœã¯ããããã©ã®ã¿ã€ãã§ãããããã§ã«ç€ºããŠããã¯ãã§ãã
ã¡ãœããã®æ»ãå€ã¯ããŒã«å€ãšããŠæ°ã«å ¥ã£ãŠããŸãã ããè€éãªããŒã¿åã¯ãå€éšã§ã€ã³ã¹ã¿ã³ã¹åããããåç §ã«ãã£ãŠè¿ãå¿ èŠããããããäžé©åã ãšæããŸãã
InxtonãŸãã¯tc.proberã䜿çšããã«ã¯ããfbComponentãã®ååºæ¬ã¯ã©ã¹ã®ç¶æ¿ãå¿ èŠã§ããïŒ
ã¿ã€ãã®åœåã«é¢ããŠã¯ãç§ã¯å人çã«å°ãéæ¿ã§ãäžè¬çã«ãã¬ãã£ãã¯ã¹ãçç¥ããŠããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ãåç
§ãããã³ãã€ã³ã¿ãé€ããŸãã
äŸãã°
ã¿ã€ãããŒãã³ã°
| ãããã¯ã¿ã€ã| è¡šèš| ãã¬ãã£ãã¯ã¹| äŸ|
| ïŒ------------- | ïŒ--------- | ïŒ------------ | ïŒ------------------------------------------------- -|
| FB/CLASSå| PascalCase|ããã| Cyclinder
|
| ENUMã¿ã€ãå| PascalCase|ããã| MachineState.Start
|
| ã€ã³ã¿ãŒãã§ãŒã¹å| PascalCase | I
| ICyclinder
|
| é¢æ°å| PascalCase|ããã| Add()
|
| STRUCTå| PascalCase | ããã| Data
|
| UNIONå| PascalCase | ããã| Control
|
@philippleidig
- ç§ã®æèŠã§ã¯ãããããã£ã¯æ¬¡ã®ããã«å®çŸ©ããå¿ èŠããããŸããIsEnabledãã ååèªäœã¯ããããã©ã®ã¿ã€ãã§ãããããã§ã«ç€ºããŠããã¯ãã§ãã
å®å šã«åæããŸãã
- ã¡ãœããã®æ»ãå€ã¯ããŒã«å€ãšããŠæ°ã«å ¥ã£ãŠããŸãã ããè€éãªããŒã¿åã¯ãå€éšã§ã€ã³ã¹ã¿ã³ã¹åããããåç §ã«ãã£ãŠè¿ãå¿ èŠããããããäžé©åã ãšæããŸãã
ã³ã³ããŒãã³ãã§èª¬æããããã«äœ¿çšããŸãã ã·ãŒã±ã³ã¹ã®ç¶æ ãå¶åŸ¡ãããšãã«äŸ¿å©ã§ãã ã»ãšãã©ã®å ŽåãããŒã«å€ã§ååã§ãã ã¡ãœããã®ç¶æ ã«ã€ããŠããå€ãã®æ å ±ãããã°ããå ŽåããããŸã...ããããããã«ã¯ããåºãè°è«ãå¿ èŠã«ãªããŸãïŒå€åæµæ¢-äœãã®ãããªæ§æïŒ
- InxtonãŸãã¯tc.proberã䜿çšããã«ã¯ããfbComponentãã®ååºæ¬ã¯ã©ã¹ã®ç¶æ¿ãå¿ èŠã§ããïŒ
ãããããã®ããã®ç¹å®ã®èŠä»¶ããInxtonãtc.proberããããŸããã ãã®ããã«äœ¿çšããŸãã ComponentBase
ã¯ãããã€ãã®ãããªãã¯ã³ã³ãã©ã¯ãïŒæåã¡ãœãããªã©ïŒãæã€æœè±¡ã¯ã©ã¹ã§ãããã³ã³ããŒãã³ãã«ããã€ãã®äžè¬çãªæ©èœãå®è£
ã§ããŸãã ç§ã¯ç¶æ¿ã®å€§ãã¡ã³ã§ã¯ãããŸãããïŒç§ã¯äœæ²ã奜ãã§ãïŒããã®å Žåãå°æ¥ã®ããã«ããã€ãã®ãªãã·ã§ã³ãéããŠããããããšæããŸãã
inxtonã§ã¯ãã³ã¬ã¯ã·ã§ã³å
ã®ãã¹ãŠã®ã³ã³ããŒãã³ããåéããå Žåã something is copmonent
ã«ãã®ããã®ã¡ã«ããºã ããããšãã«ãããè¡ãããšãã§ããŸãã
ããã«ã¯å¥ã®çç±ããããŸãã ç§ãã¡ã¯ä»æ¥ãããã€ãã®èŠä»¶ãããããŒã¹ã©ã€ãã©ãªã®ãªãŒãã³ãœãŒã·ã³ã°ã«åãçµãã§ããŸãã æ¥é±äœããæãã€ãããšãã§ãããšããã®ã§ããã 詳现ããç¥ããããŸãã
- ã¿ã€ãã®åœåã«é¢ããŠã¯ãç§ã¯å人çã«å°ãéæ¿ã§ãäžè¬çã«ãã¬ãã£ãã¯ã¹ãçç¥ããŠããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ãåç §ãããã³ãã€ã³ã¿ãé€ããŸãã
äŸãã°ã¿ã€ãããŒãã³ã°
ãããã¯ã¿ã€ãè¡šèšãã¬ãã£ãã¯ã¹ã®äŸ
FB /CLASSåPascalCaseãããCyclinder
ENUMã¿ã€ãåPascalCaseãããMachineState.Start
ã€ã³ã¿ãŒãã§ãŒã¹åPascalCaseI
ICyclinder
é¢æ°åPascalCaseãããAdd()
æ§é äœåPascalCaseãããData
UNIONåPascalCaseãããControl
ãã¬ãã£ãã¯ã¹ã®ãã¡ã³ã§ããããŸããã ãã®è¡šã¯ãç§ãã¡ã䜿çšããŠãããã¬ãã£ãã¯ã¹ã®ã·ã¹ãã ã«äŒŒãŠããŸã...ãããããããåãé€ãããšã«ããå Žåãç§ã¯ãã 幞ãã«ãªããŸãã
ã»ãšãã©ã®å Žåããã¬ãã£ãã¯ã¹ã䜿çšããŠãã¡ãªããã¯ãããŸããã @philippleidigã®ææ¡ã«åæããŸãã
ããã§ã¯ããã€ã³ã¿ãšåç §ã¯äŸå€ã ãšæããŸãã
ç§ã¯PRïŒ5ã§èªåã®å€§äŒãææ¡ããŸãã
ãã¬ãã£ãã¯ã¹ã䜿çšããŠãã¡ãªããã¯ãããŸããã ããã¯ç§ã«ã¯äœã®å©ãã«ããªããŸããã
ã¯ã©ã¹ïŒFBïŒã¡ã³ããŒå€æ°ã¯é衚瀺ã«ããå°ããååã§å§ããå¿
èŠããããŸã
ããã¹ã«ã«VAR{å±æ§'é衚瀺'}ããªã¬ãŒïŒBOOL;{å±æ§'é衚瀺'}ã«ãŠã³ã¿ãŒïŒINT;{å±æ§'é衚瀺'}analogStatusïŒAnalogStatus;END_VARã
@jozefchmelar
ã»ãšãã©ã®å Žåããã¬ãã£ãã¯ã¹ã䜿çšããŠãã¡ãªããã¯ãããŸããã @philippleidigã®ææ¡ã«åæããŸãã
ããã§ã¯ããã€ã³ã¿ãšåç §ã¯äŸå€ã ãšæããŸãã
ð
ç§ã¯PRïŒ5ã§èªåã®å€§äŒãææ¡ããŸããã¡ã³ããŒã®åœåãšã¿ã€ãã®åœå
ãã¬ãã£ãã¯ã¹ã䜿çšããŠãã¡ãªããã¯ãããŸããã ããã¯ç§ã«ã¯äœã®å©ãã«ããªããŸããã
ððã¡ã³ããŒå€æ°
ã¯ã©ã¹ïŒFBïŒã¡ã³ããŒå€æ°ã¯é衚瀺ã«ããå°ããååã§å§ããå¿ èŠããããŸã
VAR {attribute 'hide'} trigger : BOOL; {attribute 'hide'} counter : INT; {attribute 'hide'} analogStatus : AnalogStatus; END_VAR
trigger
ïŒå€æ°åïŒãšTrigger
ïŒããããã£åïŒã¯ç«¶åããŸãã ææ¡ã©ããããã¬ãã£ãã¯ã¹ãšããŠ_
ãä»ããå¿
èŠããããŸããå®å šã«åæããŸãð
å±æ§ãconditionalshowãããããŸãã ãã ããããã¯ã³ã³ãã€ã«æžã¿ã©ã€ãã©ãªãšçµã¿åãããŠã®ã¿äœ¿çšã§ããŸãã
https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_plc_intro/8095402123.htmlïŒid = 7685156034373049758
ãªãŒãã³ã©ã€ãã©ãªãæäŸãããšæ³å®ããŠããã®ã§ãããã¯éãããæå³ãããããŸããã
@PTKuãèšã£ãããã«ãã¡ã³ããŒå€æ°ã®ãã¬ãã£ãã¯ã¹ãšããŠã®_
ãå¿
èŠã§ãã
ç§ã¯éåžžãCïŒã®åœåèŠåãšååã®éžæã«åºå·ããã®ã奜ãã§ãã
ã¡ãœããã®æ»ãå€ã¯ããŒã«å€ãšããŠæ°ã«å ¥ã£ãŠããŸãã ããè€éãªããŒã¿åã¯ãå€éšã§ã€ã³ã¹ã¿ã³ã¹åããããåç §ã«ãã£ãŠè¿ãå¿ èŠããããããäžé©åã ãšæããŸãã
@philippleidigæ»ãå€ãšã¯ã©ãããæå³ã§ããïŒ ãã®å Žåããããã¯ãšã©ãŒãã§ãã¯ãšããŠäœ¿çšãããŸããïŒ éåžžãæ»ãå€ã¯ã¡ãœããã«ãã£ãŠç°ãªããŸãã CalculcateArea
ã¯REAL
`LREAL`ãè¿ããŸãã
ææ¡ãããå€æ°ã®åœåã«å®å šã«åæããŸãïŒ
ã¡ãœããã®æ»ãå€ã¯ããŒã«å€ãšããŠæ°ã«å ¥ã£ãŠããŸãã ããè€éãªããŒã¿åã¯ãå€éšã§ã€ã³ã¹ã¿ã³ã¹åããããåç §ã«ãã£ãŠè¿ãå¿ èŠããããããäžé©åã ãšæããŸãã
@philippleidigæ»ãå€ãšã¯ã©ãããæå³ã§ããïŒ ãã®å Žåããããã¯ãšã©ãŒãã§ãã¯ãšããŠäœ¿çšãããŸããïŒ éåžžãæ»ãå€ã¯ã¡ãœããã«ãã£ãŠç°ãªããŸãã
CalculcateArea
ã¯REAL``LREAL
$ãè¿ããŸãã
@ Roald87ã¢ã€ãã¢ã¯ãã¢ã¯ã·ã§ã³ãå®è¡ããã³ã³ããŒãã³ãã®ã¡ãœããããã¢ã¯ã·ã§ã³ãå®äºãããšãtrueããè¿ããšãããã®ã§ãïŒããŒã ã»ã³ãµãŒ/äœçœ®ã«éãããšãã«MoveToHomeïŒïŒïŒã ããã«ãããå¿ èŠã«å¿ããŠä»ã®è¿åã¿ã€ãã劚ããããããšã¯ãããŸããã
ææ¡ãããå€æ°ã®åœåã«å®å šã«åæããŸãïŒ
é åã«ã€ããŠã®ææ¡ããããŸãã 0ããŒã¹ã®é åã®ã¿ããã©ã³ã¹ãã€ã«ããinxtonã³ã³ãã€ã©ã®æ£åŒãªèŠä»¶ããããŸãã ãã®çç±ã¯ãCïŒã§äœ¿çšããå Žåã®æ··ä¹±ãé²ãããã§ãã
_arrayïŒARRAY [0..10] OF BOOL; //ãã©ã³ã¹ãã€ã«
ãã®é
_arrayïŒARRAY [1..10] OF BOOL; //ãã©ã³ã¹ãã€ã«ããŸãã
ããã«ã€ããŠäœãã³ã¡ã³ãã¯ãããŸããïŒ
TwinCAT HMIïŒTE2000ïŒãåæ§
TwinCAT HMIïŒTE2000ïŒãåæ§
ã¢ã¬ã€ãHMIãšåæããããšéåžžã«äŸ¿å©ã§ãã
@philippleidig || @Roald87ã¯é åãšplsã«ã€ããŠã®PRã³ã³ãã³ã·ã§ã³ã®ããããã§ã...ç§ã¯ã¡ããã©ãªããžããªã§ããå€ãã®è²¢ç®è ãèŠãã®ã奜ãã§ã:)ã
é åã«ã€ããŠã®ææ¡ããããŸãã 0ããŒã¹ã®é åã®ã¿ããã©ã³ã¹ãã€ã«ããinxtonã³ã³ãã€ã©ã®æ£åŒãªèŠä»¶ããããŸãã ãã®çç±ã¯ãCïŒã§äœ¿çšããå Žåã®æ··ä¹±ãé²ãããã§ãã
_arrayïŒARRAY [0..10] OF BOOL; //ãã©ã³ã¹ãã€ã«
ãã®é
_arrayïŒARRAY [1..10] OF BOOL; //ãã©ã³ã¹ãã€ã«ããŸããããã«ã€ããŠäœãã³ã¡ã³ãã¯ãããŸããïŒ
æ§é åããã¹ãã®ã«ãŒããæ©èœããæ¹æ³ã®ããã«ãç§ã¯PLCé åã®å¯žæ³ã1..Xã«ä¿ã€ããšã奜ã¿ãŸãã ãã®çµæãã³ãŒãã¯PLCã®ã©ãã§ãèªã¿ããããªããŸãã PLCäžã§åžžã«é åçã§ä¿å®ããããã³ãŒããæžãã¹ãã ãšæããŸãã ãµãŒãããŒãã£ã®ã³ãŒãã§ããé©åã«æ©èœãããããã«ã·ã ãå¿ èŠãªå Žåã¯ããããåå¥ã«ç®¡çã§ããŸãã
// Declaration
NUMBER_OF_DRIVES : INT := 10;
drives : ARRAY[1..NUMBER_OF_DRIVES] OF I_Drive;
// now in the code
FOR i := 1 to NUMBER_OF_DRIVES DO
drives[i].SomethingCool();
END_FOR
// Compared to
// Declaration
drives : ARRAY[0..(NUMBER_OF_DRIVES -1) ] OF I_Drive;
// Code
FOR i := 0 to (NUMBER_OF_DRIVES -1) DO
drives[i].SomethingCool();
END_FOR
ã¡ãœããã®æ»ãå€ã¯ããŒã«å€ãšããŠæ°ã«å ¥ã£ãŠããŸãã ããè€éãªããŒã¿åã¯ãå€éšã§ã€ã³ã¹ã¿ã³ã¹åããããåç §ã«ãã£ãŠè¿ãå¿ èŠããããããäžé©åã ãšæããŸãã
ã¡ãœããã¯ããã®ã¡ãœããã«ãšã£ãŠåççãªãã®ãè¿ãå¿ èŠããããšæããŸãã ã¡ãœããã®ååã¯ããããç解ããã®ã«åœ¹ç«ã€ã¯ãã§ãã
ããªãã¡
IF NOT piece.PassesValidation() THEN
LogError('Piece does not pass validation');
END_IF
// OR
IF sequence.Finished THEN
axis.Disable(); // No return type necessary.
state := WaitForAxisDisabled;
END_IF
@ Roald87ã¢ã€ãã¢ã¯ãã¢ã¯ã·ã§ã³ãå®è¡ããã³ã³ããŒãã³ãã®ã¡ãœããããã¢ã¯ã·ã§ã³ãå®äºãããšãtrueããè¿ããšãããã®ã§ãïŒããŒã ã»ã³ãµãŒ/äœçœ®ã«éãããšãã«MoveToHomeïŒïŒïŒã ããã«ãããå¿ èŠã«å¿ããŠä»ã®è¿åã¿ã€ãã劚ããããããšã¯ãããŸããã
ãããªãã¯ã¡ãœãããç¹°ãè¿ãåŒã³åºããšããã¢ãããŒãã¯æ¬åœã«å¥œãã§ã¯ãããŸããããã®ã¡ãœããã¯ãæ£ããè¿ããããŸã§æ©èœãç¹°ãè¿ãå®è¡ããŸãã åãå ¥ãããããšæãã±ãŒã¹ã1ã€ãããŸãïŒã€ã³ã¿ãŒãã§ã€ã¹ã«ãExecuteãã¿ã€ãã®ã¡ãœãããããå Žåã§ãããããæ©èœãããããã®ããè¯ãæ¹æ³ããããšæããŸãïŒã
ããã«é¢ããåé¡;
atEnd := axis.GoToEnd();
atBeginning := axis.GoToBeginning();
@philippleidigã¯TwinCATHMIã«ç²ŸéããŠããŸããã é0ããŒã¹ã®é åã¯ããã§ã©ã®ããã«åŠçãããŸããïŒ
@ mark-lazarides
ã¡ãœããã¯ããã®ã¡ãœããã«ãšã£ãŠåççãªãã®ãè¿ãå¿ èŠããããšæããŸãã ã¡ãœããã®ååã¯ããããç解ããã®ã«åœ¹ç«ã€ã¯ãã§ãã
ð
䞊è¡æ§ãšç«¶åç¶æ ã¯ãã¹ãŠåççãªæžå¿µäºé ã§ãã IMHOãããã®åé¡ã¯ãã³ã³ããŒãã³ãã®ã¬ãã«ã§å¯èœãªéã察åŠããå¿ èŠããããŸãããããéèŠãªã®ã¯ãã³ã³ããŒãã³ããæ¶è²»ããéã®èª¿æŽã®ã¬ãã«ã§å¯ŸåŠããå¿ èŠããããŸãã ã³ã³ããŒãã³ãã¡ãœããã¯ãé©åã«å®è£ ãããç¶æ ã³ã³ãããŒã©ãŒã®ãããªããªããã£ãïŒåçŽãªCASEãIFãELSIFããŸãã¯ããè€éãªã·ãŒã±ã³ãµãŒ/ã»ã¬ã¯ã¿ãŒ/ã€ãã¬ãŒã¿ãŒïŒå ããåŒã³åºãå¿ èŠããããŸããããã«ãããã³ã³ããŒãã³ãã®åãã€ã³ã¹ã¿ã³ã¹ã®ç«¶åããã¡ãœããã®åæåŒã³åºããé²æ¢ãããŸãã ã
ãã®ãããªããšã¯ãã³ã³ããŒãã³ãã®ã³ã³ã·ã¥ãŒããŒã³ãŒãã§é²æ¢ããå¿
èŠããããŸã
ãatEndïŒ= axis.GoToEndïŒïŒ;atBeginningïŒ= axis.GoToBeginningïŒïŒ;ã
å®äºãããštrue
executing methods
ã¯ãã¯ãªãŒã³ãªå®£èšåã®äœ¿çšãå¯èœã«ããŸãã
ç§ã念é ã«çœ®ããŠããã®ã¯ã次ã®ãããªãã®ã§ãã
~~~
VAR
_stateïŒINT;
CASE _state OF
0ïŒ
IFïŒaxis.MoveAbsoluteïŒPositionïŒ100.0ïŒïŒTHEN
_stateïŒ= 1;
END_IF;
1ïŒ
IFïŒaxis.MoveRelativeïŒPositionïŒ100.0ïŒïŒTHEN
_stateïŒ= 2;
END_IF;
2ïŒ
IFïŒaxis.MoveAbsoluteïŒPositionïŒ300.0ïŒïŒTHEN
_stateïŒ= 3;
END_IF;
3ïŒ
_stateïŒ= 0;
END_CASE
~~~
ããã¯ã«æžããããšãã§ããŸã
~~~
VAR
_stateïŒINT;
CASE _state OF
0ïŒ
AwaitïŒaxis.MoveAbsoluteïŒPositionïŒ100.0ïŒã1ïŒ;
1ïŒ
AwaitïŒaxis.MoveRelativeïŒPositionïŒ100.0ïŒã2ïŒ;
2ïŒ
AwaitïŒaxis.MoveAbsoluteïŒPositionïŒ300.0ïŒã3ïŒ;
3ïŒ
AwaitïŒtrueã0ïŒ;
===================================
æ¹æ³ãåŸ
ã€
VAR_INPUT
å®äºïŒBOOL
nextStateïŒINT;
END_VAR
IFïŒå®äºïŒTHEN
_stateïŒ= nextState;
~~~
ç·šéïŒã³ã³ããŒãã³ãã¯åäžã®PLCã¿ã¹ã¯ã§äœ¿çšãããŠãããšæããŸã
ããã¯ã³ãŒãã®æ¶è²»ã«å¶çŽã課ããŸãã æ¶è²»è
ãããããééã£ãé åºã§äœ¿çšããå Žåãåœç€Ÿã®ã³ã³ããŒãã³ãã¯ãšã©ãŒã®è²¬ä»»ãè² ããªãã¯ãã§ãã 圌ãã¯ãã¹ãŠã®çžäºäœçšã«ããŸãåå¿ããã¯ãã§ãã ãããã¯å¿
ããããæ©èœãããå¿
èŠã¯ãããŸããïŒã€ãŸãã axis.Enable()
ãæ©èœããªãåã«$ res := axis.MoveTo(Position:=100);
ãåŒã³åºãïŒããæ¶è²»ããã³ãŒãã«ã¯ãåé¡ãçºçããå Žæãç解ããããã«ãã¹ãŠã®ãã€ã³ãã§ååãªæ
å ±ãæäŸããå¿
èŠããããŸãã
ããã§ãç§ã«ã¯ããèªããŸããã axis.MoveAbsoluteïŒsyxïŒãèªã¿åã£ãŠãåšæçã«åŒã³åºãå¿ èŠãããããšãç解ããããšã¯ã§ããŸããã ç§ãã¡ã®æ £çšçãªã¹ã¿ã€ã«ãããªãã®ã¹ã¿ã€ã«ãå¿ èŠãšããŠããããšãç¥ã£ãŠããã°ãããªãã¯ç解ããã§ãããããã®æç¹ã§ãç§ãã¡ã¯éåžžã«äœ¿ãããããã®ãäœæã§ããªãã£ããšæããŸãã
ãŸãããšã©ãŒãé€å€ã§ãããã©ããã«é¢ä¿ãªãããšã©ãŒãçºçããå¯èœæ§ãé«ããªããŸãã 埪ç°ã¡ãœããåŒã³åºãã¢ãããŒãã䜿çšãããšããªããžã§ã¯ãã®ç¶æ ãåŒã³åºãæºåãã§ããŠãããã©ããã確èªããã¡ãœãããäœæããŠããã埪ç°ã¡ãœãããåŒã³åºãããªããžã§ã¯ãã®ä»ã®ç¶æ ãç£èŠããŠããã®éã«äœãèµ·ãããªãã£ãããšã確èªã§ããŸãã ãŸãã¯ãæåãããã©ãããéç¥ãããªã¯ãšã¹ããäœæããŠãããã¹ããŒã¿ã¹ã®å®äºãç£èŠããŸãã å¿ èŠã«å¿ããŠããªã¯ãšã¹ãã®äžéšãšããŠãã®ã³ãŒã«ããã¯ãç»é²ã§ããŸããããã¯ãããã«å¯Ÿããé©åãªãªããžã§ã¯ãæåã¢ãããŒãã§ãããããå€ãã®åŒã³åºã/åãåãããåšæçã«æžãããŸãã
@ mark-lazaridesæ£è§£ã§ãïŒ ç§ã¯execute methods
ïŒãã®ããã«åŒã³ãŸãããïŒã¯åŸªç°ããžãã¯ãå®è£
ããã¹ãã§ã¯ãããŸããã ç§ã¯ä»¥åã«è°è«ããããšãã埪ç°çã«å®è¡ããå¿
èŠããããã®ãFBã®æ¬äœãŸãã¯Cyclic
ã¡ãœããã®ããããã«é
眮ãããããšãä¿èšŒãããšä»®å®ããŸããã ããã¯ãæ¶è²»è
ããã°ã©ã ã®é©åãªå Žæã§åŒã³åºãå¿
èŠããããŸãã
ããã£ãã ã§ã¯ããªããã®ã¡ãœãããåšæçã«åŒã³åºãã®ã§ããããã ç§ã¯ãŸã å ã®è°è«ãç«ã£ãŠãããšæããŸãã ã¡ãœããã¯1ã€ã®ãžã§ããå®è¡ããå¿ èŠããããŸãã äœããéå§ããïŒãããã£ãŠããã®æåãå ±åããïŒããäœããååŸããïŒãããŠãããè¿ãïŒã
ããã£ãã ã§ã¯ããªããã®ã¡ãœãããåšæçã«åŒã³åºãã®ã§ããããã ç§ã¯ãŸã å ã®è°è«ãç«ã£ãŠãããšæããŸãã ã¡ãœããã¯1ã€ã®ãžã§ããå®è¡ããå¿ èŠããããŸãã äœããéå§ããïŒãããã£ãŠããã®æåãå ±åããïŒããäœããååŸããïŒãããŠãããè¿ãïŒã
ç°è°ã¯ãããŸãããå®è¡ã¡ãœãããåšæçã«åŒã³åºãå¿ èŠã¯ãããŸããããåŒã³åºãå Žåã¯åé¡ã«ãªããŸããã
ã¡ãœãããæäœã®çµæãè¿ãããšãã§ããªãã£ãçç±ãããããŸããã
ãã£ãšè€éãªã³ã³ããŒãã³ããèãåºãããããã®ã¢ã€ãã¢ã®ãããã¿ã€ããäœæããå¿ èŠããããšæããŸãïŒç©ºæ°å§ãã¹ãã³ã¯ãã®è°è«ã«ã¯ååè€éã§ã¯ãããŸããïŒãã©ã€ã/軞ããå§ããããšãã§ãããšæããŸãã
åæããŸãããããŒã¿ãŒã
ã¹ã¬ããåã®é¢ä¿ã§ããããã³ã³ãã³ã·ã§ã³ãšããŠç®æããŠãããšæããŸããïŒ èª€è§£ãããå Žåã¯ãè©«ã³ç³ãäžããŸãã
ã¯ãªã¹ã¯çŸåšPRãšããŠåºæ¬çãªè»žãããã¯ãæã£ãŠããŸã-ç§ã¯ããã«ã€ããŠã³ã¡ã³ãããŸããããããããã¯ããã«ãã£ãšç®ãåããå¿ èŠããããŸãã
@ mark-lazaridesè¬çœªã¯å¿ èŠãããŸããããŒã¯ãç§ãã¡ã¯èªç±ã«è°è«ããããã«ããã«ããŸããç§ã¯ææ¥PRãèŠãŠãããŸã...
@philippleidig @ Roald87 @dhullett08ã³ã³ããŒãã³ãèšèšã«ã€ããŠã®è°è«ãããã«ãããŸã
PLCopenããã¥ã¡ã³ãããåãããããã€ãã®ã©ã³ãã ãªææ¡ã
plcopen_coding_guidelines_version_1.0.pdf
å®æ°
ç°¡åã«èå¥ã§ããããã«ãALLCAPSã«å«ããå¿
èŠããããŸã
蚱容ãããååã®é·ã
æå°4æåæ倧24æåïŒ
PLCopenããã¥ã¡ã³ãããåãããããã€ãã®ã©ã³ãã ãªææ¡ã
ãªã³ã¯ãããããšã
å®æ°
ç°¡åã«èå¥ã§ããããã«ãALLCAPSã«å«ããå¿ èŠããããŸã
ð
蚱容ãããååã®é·ã
æå°4æåæ倧24æåïŒ
é·ãååã¯ãæå³ãè¡šããŸã§åé¡ã«ã¯ãªããŸããã24æåã§ååã§ãããæ倧æ°ã«å¶éã¯ãããŸããã æåã çãããååã¯ç¢ºãã«çããããã®ã§ããã4æåãè¶ ããå¿ èŠããããŸãã
@Seversonicããªãã®ã³ã¡ã³ããããã¥ã¡ã³ãã«è¿œå ãããŸãã...
ãã£ã¹ã«ãã·ã§ã³ç¶ãããïŒ11
ç§ã¯ããªãã®ã³ã³ãã³ã·ã§ã³ãæ¬åœã«å¥œãã§ã¯ãããŸããããããªãã®ãããžã§ã¯ãã¯éåžžã«èå³æ·±ããšæããŸãïŒ
å人çã«ç§ã¯ããå€å
žçãªæ¹æ³ã奜ã¿ãŸã
FB_fbé¢æ°ãããã¯
M_AddïŒïŒã¡ãœãã
P_Parameter Prop
ããã«ã¡ã¯ã @PeterZerlauthãšããããšãã PLCãšåŸæ¥ã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®äžéã«ãããããèŠåã«åæããã®ã¯å°ãé¢åã§ãã
ãããè°è«ã®åæããã®äžè«èª¿æ»ã§ãïŒ
ããã«å ããŠãããã§è°è«ããããSlack Channelã§ã¯ã @dhullett08TcOpenãªããžããªã«ãäœãããããããããŸããã
ãã¬ãã£ãã¯ã¹ãæçšãªæ å ±ãæäŸããªãå ŽåããŸãã¯ææ°ã®IDEãéå»ã«ãã¬ãã£ãã¯ã¹ã§äŒéããæ å ±ãæäŸããå Žåã¯ããã¬ãã£ãã¯ã¹ãç Žæ£ããå¿ èŠããããšããäžè¬çãªæèŠããããŸããïŒãŸãã¯å°ãªããšãç§ã¯ããããã®ããã«è§£éããŸãïŒã
ç§ã¯ãããå人çãªå¥œã¿ã«é¢ãããã®ã§ããããããè¡ãæ£ããæ¹æ³ãééã£ãæ¹æ³ããªãããšãç解ããŠããŸãã äœãã«åæããå¿ èŠããããŸãã
ããã§ç· ããããã¯ããã§è°è«ãç¶ããŸãïŒ https ïŒ//github.com/TcOpenGroup/TcOpen/discussions/11
æãåèã«ãªãã³ã¡ã³ã
é åã«ã€ããŠã®ææ¡ããããŸãã 0ããŒã¹ã®é åã®ã¿ããã©ã³ã¹ãã€ã«ããinxtonã³ã³ãã€ã©ã®æ£åŒãªèŠä»¶ããããŸãã ãã®çç±ã¯ãCïŒã§äœ¿çšããå Žåã®æ··ä¹±ãé²ãããã§ãã
_arrayïŒARRAY [0..10] OF BOOL; //ãã©ã³ã¹ãã€ã«
ãã®é
_arrayïŒARRAY [1..10] OF BOOL; //ãã©ã³ã¹ãã€ã«ããŸãã
ããã«ã€ããŠäœãã³ã¡ã³ãã¯ãããŸããïŒ