シーメンス#OpennessでStartDriveのTelgramを変更しよう

今回はOpennessを使ってTIAでStartDriveを通じて構成したDriveのTelegramを追加・変更などを行いたいと思っております。

TIA Openness Explorer

その前に、まずTIA Openness Explorerをダウンロードしましょう。

このツールを使えば、Opennessの構造よりわかりやすくイメージすることができます。

https://support.industry.siemens.com/cs/document/109760816/tia-openness-explorer?dti=0&lc=en-CN

ダウンロードしたものを解凍し、Siemens.Automation.Opns.Explorerをクリックします。

以下のような画面が出てきます。

まずはDLL Filesの参照場所を設定します。いつもclrライブラリで参照したDLL PATHとまったく一緒です。

もし新しいTIAを開きたいのであれば、”Start new TIA Portal instance”のCheckBOXを入れます。いま開いてるTIAを操作したなら3番のRefreshボタンおし、PIDのところ該当するものを選んで、Start Explorerします。

それだけですOKです!

DriveObject

TIA Openness上でパラメータ・Telegramを変更などした場合はまずDriveObejct Classを作成しないとだめです。

DevicesItem

ではまず前回作ったG120のItemsを取ります。

少しなんで?と思われる人がいると思いますが、TIA Openness Explorerを開いてみると実際以下のCodeで取ろうとするDriveItemは赤矢印のところです。

#Get the G120 Devices Item
G120_DriveItem=myproject.Devices[0].Items[0].Items[0]

でも、0番なら”_0”のDeviceItemImplがあるじゃないですか!それならDevice_0は配列のIndex1番になるはずです!と思われるかもしれません。

そこで、TypeIdentifierを取ってみあす。

>’OrderNumber:6SL3244-0BB12-1FA0/4.7.10′

G120_DriveItem.TypeIdentifier

Device名も取ってみます。

>’Device_0′

G120_DriveItem.Name

結果はDevice_0のAttributeに格納した値と一緒です。

そしてPositionNumberのところをみてほしいです。ここには0が入っています。

つまりINDEX 0です。

DriveObject 作成

G120_DriveObj=G120_DriveItem.GetService[MCD.DriveObjectContainer]().DriveObjects[0]

実は先のDeviceItemでGetService<T>という項目があり、それをクリックし、中にある虫眼鏡を押します。

そうすると、該当するItemsがどんなObjectがなど含めているか一覧できます。もちろん、今回私達が必要なMC.Drives.DriveObjectContainerが入っています。

Telegram

次はTelegramを追加しようと思います。

下図ではTelegram30(Proface)、Telegram20(Main)とExtensionあり、あと追加転送Telegram999が入っています。

Main Telegramを確かめてみます。

TelegramNumberはいま使用してるTelegram番号が格納されています。

MainTelegram=G120_DriveObj.Telegrams.Find(0)
MainTelegram.TelegramNumber

>20

そしてちょっと変わったのはGetSize()の関数使うと長さが10、返してくれます。この10は10Wordsの意味です。実際はTelegram20基本6Wordsがあり、そして追加4Wordと一緒に加算し10になります。

MainTelegram.GetSize(tia.HW.AddressIoType.Input)

>10

Main 6 + Exten4

Outputも、基本は2Wordで追加3Wordなので合計5Wordになります。

MainTelegram.GetSize(tia.HW.AddressIoType.Output)

Main 2+Exten3

ここでCanChangeSize()という関数を使えばこのTelegramのサイズを変更できるかどうかをCheckできます。

試しにTelegram20のInput Word(6)を3で変えてもいいかな~ってCheckしたら、もちろんだめです。

MainTelegram.CanChangeSize(tia.HW.AddressIoType.Input,3,True)

>False

なので、ここでChangeSize()を6にしたら、追加Wordなしに変更できます。

MainTelegram.ChangeSize(tia.HW.AddressIoType.Input,6,True)

ChangeSize()を8にしたら追加Wordは2になりますね。

MainTelegram.ChangeSize(tia.HW.AddressIoType.Input,8,True)

Telegram番号もset_TelegramNumber()で変更できます。

MainTelegram.set_TelegramNumber(1)

以下でFind(2)を入れるとFree Telegramの情報いただけます。

AdditionalTelegram=G120_DriveObj.Telegrams.Find(2)

例えばTelegramNumber。

AdditionalTelegram.TelegramNumber

>999

Size。

SupplementaryTelegram.GetSize(tia.HW.AddressIoType.Input)

>6

SupplementaryTelegram.GetSize(tia.HW.AddressIoType.Output)

>1

999を追加できるかどうかもCheckできます。

G120_DriveObj.Telegrams.CanInsertAdditionalTelegram(2,tia.HW.AddressIoType.Input)

Output will aslo auto create.

以下の関数で999を探せますし、Sizeも変更できます、

AdditionalTelegram=G120_DriveObj.Telegrams.Find(2)
AdditionalTelegram.TelegramNumber
AdditionalTelegram.ChangeSize(tia.HW.AddressIoType.Input,6,True)

Outputも一緒にです。

AdditionalTelegram.ChangeSize(tia.HW.AddressIoType.Output,3,True)

ProfisafeのTelegram30もFind(3)で情報いただけます。

SafetyTelegram=G120_DriveObj.Telegrams.Find(3)
SafetyTelegram.TelegramNumber

>30

SafetyのTelegram30をInsertできるかどうかもCheckできます。

SAFETY_TELEGRAM_30=30
G120_DriveObj.Telegrams.CanInsertSafetyTelegram(SAFETY_TELEGRAM_30)

>True

そしてSafetyのTelegram30追加します。

G120_DriveObj.Telegrams.InsertSafetyTelegram(SAFETY_TELEGRAM_30)

以上ですーお疲れ様です。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする