{"id":1524,"date":"2022-05-15T11:20:15","date_gmt":"2022-05-15T09:20:15","guid":{"rendered":"https:\/\/zen-cori.138-201-132-86.plesk.page\/?p=1524"},"modified":"2022-09-28T16:20:56","modified_gmt":"2022-09-28T07:20:56","slug":"simulink-interface-concepts","status":"publish","type":"post","link":"https:\/\/www.btc-embedded.jp\/ja\/simulink-interface-concepts\/","title":{"rendered":"Simulink Interface Concepts"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1524\" class=\"elementor elementor-1524\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3b5f0493 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3b5f0493\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-559a247a\" data-id=\"559a247a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d83c847 elementor-widget elementor-widget-text-editor\" data-id=\"d83c847\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>In Model-based Development and Embedded Software Engineering, the growing complexity requires concepts like modularization, ease of maintenance, or module reusability. In this context it is crucial to understand the interface in Simulink, which is defined by the data flow into and out of a subsystem. This blog article gives an overview about the different interfaces and Simulink data flow options and the effect on code generation and testing for embedded applications.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c099a8 elementor-widget elementor-widget-heading\" data-id=\"7c099a8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\"><h1 style=\"font-size: 2em; margin-top: 1rem; margin-right: 0px; margin-left: 0px; color: rgb(0, 69, 144); letter-spacing: 0.025em; font-family: Raleway, sans-serif; white-space: normal;\"><\/h1><h2 data-elementor-setting-key=\"title\" data-pen-placeholder=\"Type Here...\" style=\"font-family: Inter, sans-serif; font-weight: var( --e-global-typography-71433d6-font-weight ); line-height: var( --e-global-typography-71433d6-line-height ); font-size: var( --e-global-typography-71433d6-font-size ); text-transform: none; font-style: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; letter-spacing: normal; word-spacing: 0px;\">Visible data flow via Ports<\/h2><\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1ff07f elementor-widget elementor-widget-text-editor\" data-id=\"a1ff07f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Well-defined interfaces are an integral part of a modular design. Commonly a Simulink subsystem communicates with the rest of the model via inports and outports. Every port is characterized by a data type (e.g., UInt8 or double) which can be either specified explicitly in the block dialog or inherited from the signal source. In the latter case, the data type can be displayed next to the outgoing line of the block, once the model has been initialized (e.g., via the command Control+D). In addition to scalar variables, a port can also contain more complex information in form of vectors or multi-dimensional arrays.<\/p><p>As a Simulink model grows in size and complexity, a large number of inports and outports can be difficult to organize and edit. One way to overcome the visual clutter is to group the signals in form of Buses. Simulink blocks such as\u00a0<i>Bus Creator<\/i>\u00a0and\u00a0<i>Bus Selector<\/i>\u00a0will help the user to group the signals and select the signals that are of interest. One bus signal can also contain other buses, allowing a hierarchy with several levels. Providing signal names will help the user to identify the signals in later stages. It is also possible to group buses into an array of buses.<\/p><p>Simulink buses can be either virtual or nonvirtual. The main difference between virtual and nonvirtual buses is how the memory allocation is done in Simulink. The virtual bus is a virtual representation, and it doesn\u2019t affect how the memory is allocated, whereas a nonvirtual bus represents memory.<\/p><p>Following image summarizes a model with virtual bus connected to a virtual subsystem and a nonvirtual bus connected to a nonvirtual subsystem.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19ece90 elementor-widget elementor-widget-image\" data-id=\"19ece90\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"612\" height=\"280\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/06\/busses-1920x1920-e8b.png\" class=\"attachment-large size-large wp-image-1526\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-934b48a elementor-widget elementor-widget-text-editor\" data-id=\"934b48a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Within the generated C-Code, only the components within the bus that are utilized within the subsystem are passed through the boundary. i.e., there will be no proof within the code that other signals also entered the function. At compile time, a direct connection between ports replaces the virtual bus. For nonvirtual bus, the input signal is copied into a variable, which uses structures with a shorter interface and the structure matches the bus object definition. The concept of defining an interface using a bus object is carried through to the generated code.<\/p><p>While buses can make a complex model \u201ceasier to read\u201d, they can also hide information as the effective interface of a subsystem might not be visible (\u201ceffective\u201d meaning the signals which are actually used inside of the subsystem). A possible solution is, to put the needed bus selectors outside of the subsystem and therefore only provided the needed signals on the inports.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27e953f elementor-widget elementor-widget-heading\" data-id=\"27e953f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Hidden data flow between scopes<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6cdaf06 elementor-widget elementor-widget-text-editor\" data-id=\"6cdaf06\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Until now we only talked about signal flow represented by signal lines. However, constructs like [GoTo]\/[From] and Data Store Memory blocks enable passing information throughout the model without a direct line connection. We can call this \u201chidden data flow\u201d because the data can cross subsystem boundaries without being visible as explicit lines and ports.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8f3060b elementor-widget elementor-widget-heading\" data-id=\"8f3060b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">GoTo\/From Blocks<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ec190f elementor-widget elementor-widget-text-editor\" data-id=\"6ec190f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><i>[GoTo]<\/i>\u00a0and\u00a0<i>[From]<\/i>\u00a0blocks allow for the signal connections to be made without a direct connection between blocks. The data passed into a\u00a0<i>[GoTo]<\/i>\u00a0block can be called by all corresponding\u00a0<i>[From]<\/i>\u00a0blocks. A single\u00a0<i>[GoTo]<\/i>\u00a0block can have more than one\u00a0<i>[From]<\/i>\u00a0blocks. It also possible to pass the bus signals across the subsystems using a combination of Buses,\u00a0<i>[GoTo]<\/i>\u00a0and\u00a0<i>[From]<\/i>\u00a0blocks. The accessibility of the\u00a0<i>[GoTo]<\/i>\u00a0block data by a\u00a0<i>[From]<\/i>\u00a0block depends in the\u00a0<i>[GoTo]<\/i>block\u2019s tag visibility. The permitted scopes are:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f72eab6 elementor-widget elementor-widget-image\" data-id=\"f72eab6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"273\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab1.png\" class=\"attachment-large size-large wp-image-4657\" alt=\"\" srcset=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab1.png 3272w, https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab1-768x262.png 768w, https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab1-1536x525.png 1536w, https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab1-2048x700.png 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e4a4a4c elementor-widget elementor-widget-image\" data-id=\"e4a4a4c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"612\" height=\"236\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/06\/fromgoto-1920x1920-e8b.png\" class=\"attachment-large size-large wp-image-1529\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-95f5f80 elementor-widget elementor-widget-text-editor\" data-id=\"95f5f80\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>For auto code generation, we have to distinguish between virtual and non-virtual subsystems. For a virtual subsystem, the C-Code is not affected by the use of from\/goto blocks. If the subsystem is nonvirtual, initializing the system runs into compilation error because\u00a0<i>[GoTo]<\/i>\/<i>[From]<\/i>\u00a0connections cannot cross nonvirtual subsystem boundaries.<\/p><p>According to the MAAB guidelines, rule na_001 suggests that\u00a0<i>[GoTo]<\/i>\u00a0block scope shall be set to Local. When\u00a0<i>[GoTo]<\/i>and corresponding\u00a0<i>[From]<\/i>\u00a0blocks are used across subsystem boarders, the connection relationships can be difficult to understand, and errors can also occur when the configuration of a subsystem changes\u00a0<i>from<\/i>\u00a0virtual to nonvirtual.<\/p><p>MAAB rule Jc_0171 also suggests using at least one signal line between two structural subsystems. i.e., to not have floating subsystems such as all inputs\/outputs connected via\u00a0<i>[GoTo]<\/i>\u00a0and\u00a0<i>[From]<\/i>\u00a0blocks.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da6f93a elementor-widget elementor-widget-heading\" data-id=\"da6f93a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Data Store Memory<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa217fc elementor-widget elementor-widget-text-editor\" data-id=\"fa217fc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>A Data Store is a named memory in Simulink.\u00a0<i>Data Store Read<\/i>\u00a0and\u00a0<i>Data Store Write<\/i>\u00a0blocks of the same name can access the Data Store Memory block. This means that the Data Store mechanism also enables the data transfer between the subsystems without a signal connection using ports.\u00a0 When the Data Store Memory block is defined in a subsystem, Data Store Read and Data Store Write blocks can access the block only if they are located in the same hierarchy or below. Another option which doesn\u2019t need a Data Store Memory block is a global Data Store defined as a Simulink.signal object in the workspace which allows all the Data Store Read and Data Store Write blocks to access the data by all models in the Workspace. Similar to [GoTo] and [From], multiple Data Store Read and Data Store Write blocks can be used for one Data Store memory block or Simulink.signal object. However, this can introduce issues with the order of access to a Data Store. There are three defined order of access errors associated with Data Stores:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f1f3620 elementor-widget elementor-widget-image\" data-id=\"f1f3620\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"273\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab2.png\" class=\"attachment-large size-large wp-image-4660\" alt=\"\" srcset=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab2.png 3272w, https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab2-768x262.png 768w, https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab2-1536x525.png 1536w, https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/Blog_Simulink_Tab2-2048x700.png 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79c29f9 elementor-widget elementor-widget-text-editor\" data-id=\"79c29f9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Starting from MATLAB 2011 version, Data Store blocks also provide Bus support. The following image shows as example of using Bus objects in Data Store memory blocks.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4ed432 elementor-widget elementor-widget-image\" data-id=\"a4ed432\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"606\" height=\"164\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/05\/datastorememory-1920x1920-e8b-1.png\" class=\"attachment-large size-large wp-image-1539\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-190a8e8 elementor-widget elementor-widget-text-editor\" data-id=\"190a8e8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>MAAB rule jc_0161 suggests defining the Data Store Memory block with data required for code execution and generation and to define the Data Store Memory block in the smallest possible scope. This improves the readability when the usage is limited, and the unused data can affect the maintenance and operability.<\/p><p>MAAB rule na_0024 suggests using signal lines between MATLAB function instead of Data Store blocks.\u00a0 When multiple Data Store blocks are used, they reduce the readability of the data flow, leading to errors in update reference timing.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cf6fff1 elementor-widget elementor-widget-heading\" data-id=\"cf6fff1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef2476b elementor-widget elementor-widget-text-editor\" data-id=\"ef2476b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>For complex models, it can become difficult to understand how the different communication mechanisms contribute to the architecture. This article described different interface concepts of Matlab\/Simulink models as well as their impact on readability and automatic code generation.<\/p><p>When it comes to testing the models, we can first say that the used test tools need to be able to deal with all these interface concepts in order to connect their test harnesses to the model. When it comes to writing the test cases, it is of course important for the test engineer to understand the effective interface of the subsystems. This can be challenging when the effective interface of a subsystem is not directl visible, e.g. because of unused bus signals or Data Stores.\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>In Model-based Development and Embedded Software Engineering, the growing complexity requires concepts like mo [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":9011,"comment_status":"open","ping_status":"closed","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[49,48],"product":[],"use_cases":[],"class_list":["post-1524","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-model-based-development","tag-simulink"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/1524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/comments?post=1524"}],"version-history":[{"count":28,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/1524\/revisions"}],"predecessor-version":[{"id":9087,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/1524\/revisions\/9087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/media\/9011"}],"wp:attachment":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/media?parent=1524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/categories?post=1524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/tags?post=1524"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/product?post=1524"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/use_cases?post=1524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}