刻時図から生成

# 言語実装 
Calendar 2024
https://qiita.com/advent-calendar/2024/lang_dev
Day 19 投稿予定記事です。

５年前まで、工作機械のソフトウェア開発に従事していた。
コンパイラを３週間写経などをしてもらった。

UML(Unified Modeling Language)のTiming Chartから、モータの制御ソフトを自動生成するシステムの設計を行なってもらった。

Enterprise ArchitectのAddonで作るか、
Bridge PointのAddonで作るか迷いました。

機械系の設計者に操作してもらうことを考慮して、ExcelでTiming Chartを書くことにしました。

費用面からLibre Officeにすることも検討しました。
刻時図を書くための操作と、結果としてのファイルの解読でわからないことがあり断念しました。

# 制御プログラム生成装置、制御プログラム生成方法、プログラム
特許6787616
>【課題】自動製造機械の動作を制御する制御プログラムを自動で生成する。
【解決手段】自動製造機械（１）に搭載されている複数のアクチュエータの基本動作と、基本動作を実現するためのプログラム要素とを対応付けて記憶しておく。また、自動製造機械の動作を、複数の基本動作の終了と他の基本動作の開始とが論理演算によって関連付けられた動作チャート（２００）によって記述しておく。そして、自動製造機械の動作が記述された動作チャートを読み込んで、動作チャート中の基本動作をプログラム要素に変換すると共に、動作チャートに従ってプログラム要素を結合する。こうすれば、自動製造機械の動作を制御する制御プログラムを自動で生成することが可能となる。

特許6829505
>【課題】自動製造機械の動作を制御する制御プログラムを自動で生成する。
【解決手段】自動製造機械（１）に搭載されている複数のアクチュエータの基本動作と、基本動作を実現するためのプログラム要素とを対応付けて記憶しておく。また、自動製造機械の動作を、自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、自動製造機械の動作が複数の基本動作に分解されると共に、基本動作が複数の部分期間の何れかに割り当てられた動作チャート（２００）によって記述しておく。そして、自動製造機械の動作が記述された動作チャートを読み込んで、動作チャート中の基本動作をプログラム要素に変換すると共に、動作チャート中での部分期間の順番に従ってプログラム要素を結合する。こうすれば、自動製造機械の動作を制御する制御プログラムを自動で生成することが可能となる。

特開2021-117975
>【課題】自動製造機械の動作を制御する制御プログラムを自動で生成する。
【解決手段】自動製造機械（１）に搭載されている複数のアクチュエータの基本動作と、基本動作を実現するためのプログラム要素とを対応付けて記憶しておく。また、自動製造機械の動作を、複数の基本動作の終了と他の基本動作の開始とが論理演算によって関連付けられた動作チャート（２００）によって記述しておく。そして、自動製造機械の動作が記述された動作チャートを読み込んで、動作チャート中の基本動作をプログラム要素に変換すると共に、動作チャートに従ってプログラム要素を結合する。こうすれば、自動製造機械の動作を制御する制御プログラムを自動で生成することが可能となる。

特開2021-174522
>【課題】自動製造機械の動作を制御する制御プログラムを自動で生成する。
【解決手段】自動製造機械（１）に搭載されている複数のアクチュエータの基本動作と、基本動作を実現するためのプログラム要素とを対応付けて記憶しておく。また、自動製造機械の動作を、自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、自動製造機械の動作が複数の基本動作に分解されると共に、基本動作が複数の部分期間の何れかに割り当てられた動作チャート（２００）によって記述しておく。そして、自動製造機械の動作が記述された動作チャートを読み込んで、動作チャート中の基本動作をプログラム要素に変換すると共に、動作チャート中での部分期間の順番に従ってプログラム要素を結合する。こうすれば、自動製造機械の動作を制御する制御プログラムを自動で生成することが可能となる。

特開2021-177372
>【課題】動作チャートに自動製造機械の動作の内容が誤って記載される事態を回避する。
【解決手段】自動製造機械（１）の動作開始から終了までの動作期間を複数の部分期間に分割し、更に、自動製造機械の動作を複数のアクチュエータの基本動作に分割して、基本動作を何れかの部分期間に割り当てることで自動製造機械の動作を動作チャート（２００）に記述する。動作チャート上の基本動作は、動作を定性的に記述した動作記述（２０６ａ）と、数値テーブル（２０６ｂ）または複数の数値パラメータ（２０６ｃ）とを用いて記載する。そして、自動製造機械の動作が記述された動作チャートを読み込んで、動作チャート中の動作記述を、動作記述に対応して記憶しておいたプログラム要素に変換すると共に、数値テーブルまたは複数の数値パラメータに設定された数値をプログラム要素に設定した後、動作チャート中での部分期間の順番に従ってプログラム要素を結合する。

特開2022-013621
>【課題】多数のアクチュエータが搭載された自動製造機械の制御プログラムを迅速に実行する。
【解決手段】自動製造機械（１０、２０、３０）が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されて、各々の部分期間に動作させるアクチュエータと、アクチュエータの動作内容とが割り当てられた制御プログラムを記憶しておく。そして、制御対象の部分期間を順番に１つずつ選択して、その部分期間に割り当てられたアクチュエータの動作をフィードバック制御する。こうすれば、たとえ多数のアクチュエータを搭載した自動製造機械の動作を制御する場合でも、同時に制御するアクチュエータの数が抑制されるので、高い処理能力を有する動作制御装置を用意する必要が無く、制御プログラムを容易に且つ迅速に実行することができる。

特開2022-026361
>【課題】間違えた記載の動作チャート（ＹＯＧＯチャート）から制御プログラムを生成する事態を抑制可能とする。
【解決手段】表形式の座標位置に基本動作を記載して、座標位置の一軸側の座標値が基本動作を行う部分期間を示し、他軸側の座標値が基本動作を行うアクチュエータを示した動作チャート（２００）を作成しておき、動作チャートを読み込んで制御プログラムを生成する。制御プログラムの生成に先立って、基本動作が記載された座標位置を取得して、基本動作の座標位置から決まるアクチュエータと、基本動作から決まるアクチュエータとが一致しているか否かを判断する。一致していれば、動作チャートが記載要件を満足するものと判断して制御プログラムを生成する。こうすれば、記載要件を満たさない動作チャートから制御プログラムを生成する事態を抑制することが可能となる。

特開2022-026361
>【課題】間違えた記載の動作チャート（ＹＯＧＯチャート）から制御プログラムを生成する事態を抑制可能とする。
【解決手段】表形式の座標位置に基本動作を記載して、座標位置の一軸側の座標値が基本動作を行う部分期間を示し、他軸側の座標値が基本動作を行うアクチュエータを示した動作チャート（２００）を作成しておき、動作チャートを読み込んで制御プログラムを生成する。制御プログラムの生成に先立って、基本動作が記載された座標位置を取得して、基本動作の座標位置から決まるアクチュエータと、基本動作から決まるアクチュエータとが一致しているか否かを判断する。一致していれば、動作チャートが記載要件を満足するものと判断して制御プログラムを生成する。こうすれば、記載要件を満たさない動作チャートから制御プログラムを生成する事態を抑制することが可能となる。

特開2023-104873
>【課題】自動製造機械（１０）の動作が複雑になっても動作チャート（２００）を容易に作成して、制御プログラムの自動生成を可能とする。
【解決手段】動作チャートを形成する複数の部分期間の中で、連続する複数の部分期間を纏めた副チャート（３００）を予め作成しておく。また、動作チャート中には、副チャートとして纏められた複数の部分期間の代わりに、副チャートを特定する副チャート表示（３０１）を部分期間に記載しておく。制御プログラムを生成する際には、動作チャートと一緒に副チャートも読み込んで、動作チャートの部分期間に記載された基本動作を結合すると共に、動作チャート中で副チャート表示が記載された部分期間については、副チャート中の連続する部分期間に割り当てられた基本動作を、副チャート上での部分期間の順序に従って結合することによって制御プログラムを生成する。

特開2024-110909
>【課題】自動製造機械（１０）が動作を開始してから終了するまでの動作時間が短い制御プログラム（４００）を自動で生成する。
【解決手段】動作チャートの複数の部分期間にアクチュエータの基本動作を割り当てて自動製造機械の動作を記述し、基本動作に対応するプログラム要素を動作チャート上での部分期間の順序で結合して制御プログラムを生成する。動作チャートに、複数の部分期間と複数の並列部分期間とが並列に形成された並列期間（２１０）を設定し、並列期間の並列部分期間には所定の選択アクチュエータの基本動作を割り当て、並列期間の部分期間には選択アクチュエータ以外のアクチュエータの基本動作を割り当てる。動作チャートの並列期間内では、並列部分期間に割り当てた基本動作のプログラム要素は並列部分期間の順序で結合し、部分期間に割り当てた基本動作のプログラム要素は部分期間の順序で結合することによって制御プログラムを生成する。

# 参考資料
言語実装  Calendar 2022
https://qiita.com/advent-calendar/2022/lang_dev

文法派 対 写経派 CN3054を題材に coding(152)
https://qiita.com/kaizen_nagoya/items/445ebc1939f0034ee038