ç£æ¥ããŒã¿ã¯è²ŽéãªãªãœãŒã¹ã§ãããæ©æ¢°ã®æ§èœãããã»ã¹ã補åã«é¢ããæŽå¯ãæäŸããŸãã ãã®ããŒã¿ãåéããŠåæããããšã§ãäŒæ¥ã¯è£œåã®å質ãé«ããå¹çãæé©åãããµãã©ã€ãã§ãŒã³ã管çããäºé²ä¿å
šã广çã«ã¹ã±ãžã¥ãŒã«ã§ããŸãã ãã ããç£æ¥çšããã€ã¹ããã®ããŒã¿åéã¯è€éãªããã»ã¹ã«ãªãå¯èœæ§ããããŸãã éåžžããããã®ããã€ã¹ã¯ããŸããŸãªãã³ããŒã«ãã£ãŠè£œé ãããŠããããããããç¬èªã®ããŒã¿åœ¢åŒãã¢ãã¬ãã·ã³ã°ãããã³ãããã³ã«ã䜿çšããŠããŸãã ãŸããå®éã®è£œé å·¥çš (æ¬çªç°å¢) ã«å¿
èŠãªãœãããŠã§ã¢ãå°å
¥ãéçšããŠããããã«ã¯ãæ€èšŒæãããããã«è€éã«ãªãããšããããŸãã Shop Floor Connectivity (SFC) ã¯å·¥å Žããã®ããŒã¿åéãå¯èœã«ãããœãªã¥ãŒã·ã§ã³ã§ãæ°èŠèšåã§ãã£ãŠãã¬ã¬ã·ãŒãªãããã³ã«ãçšããæ¢åèšåã§ãã£ãŠãã«ã¹ã¿ãã€ãºå¯èœãªæ¥ç¶ãœãªã¥ãŒã·ã§ã³ãè¿
éã«æäŸã§ããŸãã SFC ã¯ãæ¢åã® IoT ããŒã¿åéãµãŒãã¹ã®å¶çŽã«å¯ŸåŠããããŒã¿åéãçµ±åããããšã§ãããŸããŸãªãã³ããŒã®æ©åšããäžè²«ããæ¹æ³ã§ããŒã¿ãåéããããŸããŸãª AWS ãµãŒãã¹ã§äœ¿çšã§ããããã«ããŠããŸãã SFC ã³ã³ããŒãã³ã SFC ãæ§æããã³ã³ããŒãã³ãã«ã¯äž»ã« 3 ã€ã®ã¿ã€ãããããŸãã ãããã³ã«ã¢ããã¿ãŒ SFC ã³ã¢ ã¿ãŒã²ããã¢ããã¿ãŒ å³ïŒSFC ã³ã³ããŒãã³ãã®æŠèŠ SFC ã³ã³ããŒãã³ãã®æŠèŠ ãããã³ã«ã¢ããã¿ãŒ ãããã³ã«ã¢ããã¿ãŒã¯ãããã€ãã®ç£æ¥çšããã€ã¹ããããŒã¿ãèªã¿åãããã«äœ¿çšãããŸãããã®ã¢ããã¿ãŒã¯ãããã€ã¹ã䜿çšããŠãããããã³ã«ãæœè±¡åãã远å ã®ã¡ã¿ããŒã¿ãå«ãããŒã¿ãå
±éã®åœ¢åŒã§ SFC ã³ã¢ã«éä¿¡ããŸãã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã¬ãŒã ã¯ãŒã¯ã®ä»ã®éšåã倿Žããããšãªããæ°ãããããã³ã«ã¢ããã¿ãŒã§ SFC ãç°¡åã«æ¡åŒµã§ããããã«èšèšãããŠããŸãã ãã®èšäºã®å·çæç¹ã§ãSFC ã«ã¯ Modbus TCPãMQTTãOPCUAãEthernet/IP PCCCãADSãSNMPãS7ãããã³ SQL çšã®ã¢ããã¿ãŒãªã©ããããŸãã (蚳泚ïŒä»ã«ã察å¿ãããã³ã«ããããã詳现㯠Github ãªããžã㪠ããåç
§ãã ãã) SFC ã³ã¢ SFC ã³ã¢ã³ã³ããŒãã³ã㯠SFC ãã¬ãŒã ã¯ãŒã¯ã®ã³ã³ãããŒã©ãŒã§ãã ãããã³ã«ã¢ããã¿ãŒãä»ããããŒã¿åéã®èšå®ãšã¹ã±ãžã¥ãŒãªã³ã°ãåŠçããŸãã ãªãã·ã§ã³ã§ã60 çš®é¡ä»¥äžã®å倿ãªã©ãå¯èœãªé¢æ°ãçµã¿åãããŠãåä¿¡ããåããŒã¿å€ã倿ã§ããŸããããã«ãããè€éãªããŒã¿å€æèŠä»¶ã«å¯Ÿå¿ã§ããŸãã SFC ã³ã¢ã¯ãšã³ãããŒãšã³ãã«ããŒã¿åãå¿ å®ã«é£æºã§ããè€éãªæ§é åããŒã¿åã倿¬¡å
é
åãªã©ã«ã€ããŠãããœãŒã¹ããèªã¿åã£ãããŒã¿åœ¢åŒã§ã¿ãŒã²ããã«éä¿¡ã§ããŸãã ãªãã·ã§ã³ãšããŠã12 çš®é¡ã®éèšé¢æ°ã䜿çšããŠãããŒã¿ããšããžã§ãããã¡ãªã³ã°ããŠéçŽãããããã¯ãŒã¯ãã©ãã£ãã¯ã®åæžãå¯èœã§ãã SFC ã³ã¢ã¯ AWS Secrets Manager ãšçµ±åãããŠãããããã·ã¹ãã èšå®ã§äœ¿çšããã·ãŒã¯ã¬ããããã¬ãŒã¹ãã«ããŒã§æå®ã§ããŸãã ã¿ãŒã²ããã¢ããã¿ãŒ ã¿ãŒã²ããã¢ããã¿ãŒã¯ãSFC ã³ã¢ããããŒã¿ãåä¿¡ããç¹å®ã® AWS ãµãŒãã¹ãã客æ§ç¬èªã®ãµãŒãã¹ã«éä¿¡ããã³ã³ããŒãã³ãã§ãã ã³ã³ããŒãã³ãã¯ãªãã·ã§ã³ã§ Apache Velocity ãã³ãã¬ãŒãã䜿çšããŠããŒã¿å€æãé©çšããåä¿¡ãµãŒãã¹ã«å¿
èŠãªåœ¢åŒã§ããŒã¿ãé
ä¿¡ã§ããŸãã æ¬èšäºã®å·çæç¹ã§ã¯ã AWS IoT Analytics , AWS IoT Core , Amazon Kinesis Data Streams , Amazon Data Firehose , AWS Lambda , Amazon Managed Streaming for Apache Kafka (MSK) , Amazon Simple Storage Service (S3) , AWS IoT SiteWise , Amazon Timestream , Amazon Simple Notification Service (SNS) , Amazon Simple Queue Service (SQS) ã®ã¢ããã¿ãŒããããŸãã ããŒã«ã«ãã¡ã€ã«ã·ã¹ãã ãã¿ãŒããã«åºåãMQTT ã¯ã©ã€ã¢ã³ãçšã®è¿œå ã¿ãŒã²ãããçšæãããŠããŸãã ããŒã¿åé ããŒã¿åéã¯èšå®ãã¡ã€ã«ã«ãã£ãŠæ§æããããšãã§ãã远å ã®ã³ãŒãã£ã³ã°ã¯å¿
èŠãããŸããã ããã¯ãSFC ã³ã¢ããã»ã¹ã«ã¹ã±ãžã¥ãŒã«ãå®çŸ©ããããšã«ãã£ãŠå®çŸãããŸãã åã¹ã±ãžã¥ãŒã«ã®èšå®ã§ã¯åéééãšããŒã¿ãœãŒã¹ãèšå®ã§ããæ§ã
ãªçš®é¡ã®ããŒã¿ãœãŒã¹ããç°ãªã圢åŒã®ããŒã¿ãèšå®ãããšã«èªã¿åããŸãããœãŒã¹ã®çš®é¡ã¯ããŸããŸã§ãã ãœãŒã¹ã¯ã䜿çšããããããã³ã«ã¢ããã¿ãŒãšããã®ã¢ããã¿ãŒã䜿çšããŠèªã¿åãå¿
èŠãããå€ãå®çŸ©ããŸãã ãªãã·ã§ã³ã§ã倿ãšéèšãå®çŸ©ããŠãåéããããŒã¿ã«é©çšã§ããŸãã 1 ã€ã®ã¹ã±ãžã¥ãŒã«ã§ã¯ãåéããã³åŠçãããããŒã¿ãéä¿¡ããã¿ãŒã²ããã¢ããã¿ãŒãæå®ããŸãã ããã〠SFC ã³ã¢ã¯ããŠãŒã¶ãŒãèšå®ããã³ãã¯ã¿ãŒãšã¿ãŒã²ããã¢ããã¿ãŒãããŒãããåäžã®ããã»ã¹ãšããŠãããã€ã§ããŸãã ãŸãã¯ããããã³ã«ã¢ããã¿ãã¿ãŒã²ããã¢ããã¿ãããã³ SFC ã³ã¢ããåéããããŒã¿ã亀æããããã« TCP/IP ã¹ããªãŒã ãä»ããŠéä¿¡ããåã
ã®ãµãŒãã¹ãšããŠå±éããããšãã§ããŸãã ãããã®ãµãŒãã¹ã¯ãåãç©çãã·ã³ã«é
眮ããããšããå¥ã®å€éšããŒããŠã§ã¢ã«é
眮ããããšãã§ããŸãã ãã®æè»æ§ã«ãããããŒã¿åéãšåŠçã®è² è·åæ£ãå¯èœã«ãªããããŸããŸãªæ¥ç¶èŠä»¶ãšå¶éããããããã¯ãŒã¯ã»ã°ã¡ã³ãããŸããã§å±éã§ããŸãã 以äžã®å³ã¯ãããã€ãã®ãããã€ã¡ã³ãäŸã瀺ããŠããŸãã å³ïŒSFC ã®æ§æäŸ SFC ã³ã³ããŒãã³ããå®è¡ããã«ã¯ Java ä»®æ³ãã·ã³ãå¿
èŠã§ãã ã³ã³ããŒãã³ãã¯ãã¹ã¿ã³ãã¢ãã³ã®ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãããšããŠããŸã㯠AWS IoT Greengrass ã³ã³ããŒãã³ããšããŠå®è¡ã§ããŸãã SFC ã®æ¡åŒµ SFC ã¯ãæ°ãããããã³ã«ãšã¿ãŒã²ããã¢ããã¿ãç°¡åã«å®è£
ãæ¡åŒµã§ããŸãã æ°ããã¢ããã¿ãŒã®ã³ã³ããŒãã³ããæ§ç¯ããã«ã¯ãéçºè
㯠SFC ã³ã¢ãã¢ããã¿ãŒãšéä¿¡ããããã«äœ¿çšããã¢ããã¿ãŒã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¿
èŠããããŸãã SFC ã¯ãéçºè
ã SFC ã®ã³ãŒããçšããŠãããã³ã«ãšã¿ãŒã²ããã®å®è£
ã«éäžã§ããããã«èšèšãããŠããŸãããå¿
ããã SFC ã®ã³ãŒããä¿®æ£ããå¿
èŠã¯ãããŸãããSFC ã¯æ¢åã®èšå® (Configuration) ãçµã¿åãããŠã«ã¹ã¿ãã€ãºãããèšå®ãããã€ããæ§æã§ããŸãã SFC ã³ã³ããŒãã³ãã«ãã£ãŠçæãããã¡ããªã¯ã¹ã¯ã Amazon CloudWatch ã¡ããªã¯ã¹ããã®ä»ã®ã¡ããªã¯ã¹ããŒã¿ã¹ãã¢ã«éä¿¡ã§ããããã«ãã«ã¹ã¿ã ã¡ããªã¯ã¹ã©ã€ã¿ãŒ (æžãèŸŒã¿æ©èœ) ãæ§æã§ããŸãã ã«ã¹ã¿ã ãã°ã©ã€ã¿ãŒãèšå®ããããšã§ããã®ã³ã°åºåããŒã¿ãã«ã¹ã¿ã ã¹ãã¢ã«æžã蟌ãããšãã§ããŸãã OPC UA ãã Amazon S3 ãš AWS IoT Core ãžã®èšå®äŸ 以äžã¯ OPC UA ãµãŒããŒããããŒã¿ãèªã¿åããããŒã¿å å·¥ãéèšãè¡ããã« AWS IoT Core ãµãŒãã¹ã® MQTT ãããã¯ãš Amazon S3 ãã±ããå
ã®ãªããžã§ã¯ãã«çŽæ¥éä¿¡ããç°¡åãªèšå®äŸã§ãã ããã«ãäžã®ç»åã«ã¯ç»å ŽããŠããŸããããããã°ã¿ãŒã²ãããå«ãŸããŠããããããã°ç®çã§ããŒã¿ãã³ã³ãœãŒã«ã«éä¿¡ããŸãã å³ïŒèšå®ãã¡ã€ã«ã§å®çŸ©ãããæ§æã®ã€ã¡ãŒãž SFC èšå®ãã¡ã€ã« { "AWSVersion": "2022-04-02", "Name": "OPCUA to S3, IoT Core and console", "Schedules": [ { "Name": "OPCUA-DATA", "Interval": 1000, "Sources": { "OPCUA-SOURCE": ["*"] }, "Targets": ["IoTCoreTarget", "S3Target", "DebugTarget"] } ], "Sources": { "OPCUA-SOURCE": { "Name": "OPCUA-SOURCE", "ProtocolAdapter": "OPC-UA", "AdapterOpcuaServer": "OPCUA-SERVER", "SourceReadingMode": "Subscription", "Channels": { "ServerStatus": { "NodeId": "ns=0;i=2256" }, "SimulationCounter": { "NodeId": "ns=3;i=1001" }, "SimulationRandom": { "NodeId": "ns=3;i=1002" }, "LevelAlarm": { "NodeId": "ns=6;s=MyLevel.Alarm", "EventType": "ExclusiveLevelAlarmType" } } } }, "ProtocolAdapters": { "OPC-UA": { "AdapterType": "OPCUA", "OpcuaServers": { "OPCUA-SERVER": { "Address": "opc.tcp://sfc-server", "Path": "OPCUA/SimulationServer" } } } }, "Targets": { "IoTCoreTarget": { "TargetType": "AWS-IOT-HTTP", "TopicName": "sfc-data-topic", "Region": "eu-west-1", "CredentialProviderClient": "AwsIotClient" }, "S3Target": { "TargetType": "AWS-S3", "Region": "eu-west-1", "BucketName": "sfc-data-bucket", "Interval": 60, "BufferSize": 1, "CredentialProviderClient": "AwsIotClient", "Compression": "Zip" }, "DebugTarget": { "TargetType": "DEBUG-TARGET" } }, "AdapterTypes": { "OPCUA": { "JarFiles": ["/sfc/opcua/lib"], "FactoryClassName": "com.amazonaws.sfc.opcua.OpcuaAdapter" } }, "TargetTypes": { "AWS-IOT-HTTP": { "JarFiles": ["/sfc/aws-iot-http-target/lib"], "FactoryClassName": "com.amazonaws.sfc.awsiot.http.AwsIotHttpTargetWriter" }, "AWS-S3": { "JarFiles": ["/sfc/aws-s3-target/lib"], "FactoryClassName": "com.amazonaws.sfc.awss3.AwsS3TargetWriter" }, "DEBUG-TARGET": { "JarFiles": ["/sfc/debug-target/lib"], "FactoryClassName": "com.amazonaws.sfc.debugtarget.DebugTargetWriter" } }, "AwsIotCredentialProviderClients": { "AwsIotClient": { "IotCredentialEndpoint": "1234567890abcd.credentials.iot.eu-west-1.amazonaws.com", "RoleAlias": "TokenExchangeRoleAlias", "ThingName": "MyThingName", "Certificate": "/sfc/cert/certificate.crt", "PrivateKey": "/sfc/cert/private.key", "RootCa": "/sfc/cert/root.pem" } } } èšå®ã®ãã€ã³ããšãªãé
ç® Schedule : èšå®ã®äžå¿ãšãªãã®ã Schedule (ã¹ã±ãžã¥ãŒã«) ã§ããã®äŸã§ã¯ âOPCUA-DATAâ ã§ãã ãã®ã¹ã±ãžã¥ãŒã«ã¯ãããŒã¿ååŸã®ãœãŒã¹ã®æŠèŠã瀺ããåéééãããªç§åäœã§èšå®ããããŒã¿é
ä¿¡ã®ã¿ãŒã²ãããšãªãå®å
ãæå®ããŸãã Sources : ãã®ã»ã¯ã·ã§ã³ã§ã¯ãããŒã¿ãœãŒã¹ã«ã€ããŠèšè¿°ããŸãã ãã®äŸã§ã¯ãåäžã® OPC UA ãœãŒã¹ãå®çŸ©ãããŠããŸãã ãã®ãœãŒã¹å
ã®è©³çްãšããŠãã¢ããã¿ãŒåãšããŒã¿ã®ååŸå
ãšãªãã¢ããã¿ãŒå
ã®ç¹å®ã®ãµãŒããŒãå«ãŸããŸãã ãã£ã³ãã«ã«ã¯ãããŸããŸãªã¿ã€ãã®ãœãŒã¹ã¢ããã¿ãŒã«åãããããŒã¿é
ç®ãå«ãŸããŠããŸãã ãã®äŸã«ããã OPC UA ã¢ããã¿ãŒã®å Žåããããã®ãã£ã³ãã«ã¯ããŒã¿ããŒããã€ãã³ããã¢ã©ãŒã ãªã©ã®ããŒã¿é
ç®ã衚ãããããããåºæã®ããŒã ID ã§èå¥ãããŸãã Protocol Adapters : 䜿çšããããããã³ã«ã¢ããã¿ãŒã¯ããã®ã»ã¯ã·ã§ã³ã§å®çŸ©ããŸãã åãããã³ã«ã¢ããã¿ãŒã¿ã€ãã«ã¯åºæã®èŠçŽ ããããŸãã ãã®äŸã§äœ¿çšãããŠãã OPC UA ã¢ããã¿ãŒã®å ŽåãããŒã¿ãèªã¿åãããå®éã® OPC UA ãµãŒããŒã®å®çŸ©ããããŸãã Targets : ãã®ã»ã¯ã·ã§ã³ã§ã¯ãããŒã¿ãé
ä¿¡ããå®å
ãå®çŸ©ããŸãã ã¿ãŒã²ããã®çš®é¡ããšã«ãAmazon S3 ã¿ãŒã²ããã®å Žå㯠Amazon S3 ãã±ããåãAWS IoT Core ã¢ããã¿ãŒã®å Žåã¯ãããã¯åãªã©ãç¹å®ã®èŠçŽ ããããŸãã Adapter Types and Target Types: åã¢ããã¿ãŒãšã¿ãŒã²ããã¯åã
ã®èšå®ãæã¡ãŸããããã㯠AdapterTypes ãŸã㯠TargetTypes ã»ã¯ã·ã§ã³ã§èšå®ããå¿
èŠããããŸãã ããããã®ã¿ã€ãã¯ãã¢ããã¿ãŒãŸãã¯ã¿ãŒã²ãããå®è£
ãã JAR ãã¡ã€ã«ãããŒãããå Žæãšããããã®ã€ã³ã¹ã¿ã³ã¹ãäœæããããã®ãã¡ã¯ããªãŒã¯ã©ã¹ã®ååãå®çŸ©ããŸãã SFC ã³ã¢ã¯ããã®æ
å ±ã䜿çšããŠå¿
èŠãªã¢ããã¿ãŒãšã¿ãŒã²ããã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã (泚:ãããã®ã»ã¯ã·ã§ã³ã¯ãã¢ããã¿ãŒãŸãã¯ã¿ãŒã²ããã SFC ã³ã¢ãšåãããã»ã¹ã§å®è¡ãããŠããå Žåã«ã®ã¿å¿
èŠã§ãã ã¢ããã¿ãŒãŸãã¯ã¿ãŒã²ããã IPC ãµãŒãã¹ãšããŠå®è¡ãããå Žåãã¢ããã¿ãŒã¯ãããã³ã«ãŸãã¯ã¿ãŒã²ãããµãŒããŒãåç
§ããŸããããã«ãããã¢ã¯ã»ã¹å¯èœãªã¢ãã¬ã¹ãšããŒããå®çŸ©ãããŸãã) AWS IoT Credential Provider Clients: ãã®ã»ã¯ã·ã§ã³ã§ã¯ãAWS ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãå¿
èŠãšããã¿ãŒã²ããã䜿çšããã¯ã©ã€ã¢ã³ããå®çŸ©ããŸããåã¯ã©ã€ã¢ã³ãã¯ãäžæçãªè³æ Œæ
å ±ãååŸããããã® X.509 èšŒææžãšããŒãã¡ã€ã«ã®ã»ããã䜿çšããŸããããŒã«ãšã€ãªã¢ã¹ã¯ãAWS ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããŒã«ãæããŸãã詳现ã«ã€ããŠã¯ãAWS Security ããã°ã®èšäº âHow to Eliminate the Need for Hardcoded AWS Credentials in Devices by Using the AWS IoT Credentials Providerâ ãåç
§ããŠãã ããã SFC ãå©çšéå§ããã«ã¯ SFC ã¯ãœãŒã¹ã³ãŒããšããŠæäŸãããŠããã https://github.com/aws-samples/shopfloor-connectivity ããå
¥æã§ããŸããGitHub ã® SFC ãªããžããªã«ã¯ãSFC ã®æ§ææ¹æ³ãšã«ã¹ã¿ã ã³ã³ããŒãã³ãã®äœææ¹æ³ã«ã€ããŠè©³ãã説æãããããã¥ã¡ã³ããå«ãŸããŠããŸããäºåãã«ãããã SFC ããã±ãŒãžã¯ã https://github.com/aws-samples/shopfloor-connectivity/releases ããããŠã³ããŒãã§ããŸãã SFC ãªããžããªã«ã¯ããã®èšäºã§äœ¿çšããäŸã® SFC ã®ãããã€ãšæ§æã«å¿
èŠãªæé ã説æããå
æ¬çãªã¯ã€ãã¯ã¹ã¿ãŒãã¬ã€ããå«ãŸããŠããŸãã æçš¿è
ã«ã€ã㊠Arie Leeuwesteijn ã¢ããŸã³ ãŠã§ã ãµãŒãã¹ (AWS) ã®ããªã³ã·ãã«ãœãªã¥ãŒã·ã§ã³ãã«ããŒã§ãã Arie Leeuwesteijn ã¯ãç£æ¥ããã³è£œé æ¥ã®ã¯ã©ã€ã¢ã³ãã«åãããã¯ã©ãŠããœãªã¥ãŒã·ã§ã³ã®èšèšãå°éãšããŠããŸãã äŒæ¥é¡§å®¢ãå°ãå°éç¥èãæã€åœŒã¯ãéçšã®æé©åãšããžãã¹äŸ¡å€ã®åäžãç®çãšããã¯ã©ãŠããµãŒãã¹ã®å®çšåãä¿é²ããŠããŸãã ãã®ããã°ã¯ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã®é»ç°ã翻蚳ããŸãããåæã¯ ãã¡ã ã§ãã