# 绑定信号与孪生体

完成信号的订阅以后，我们就需要把信号和其所驱动的孪生体关联起来。

点击选择有效的订阅后(这里有效是指信号的`Type`为UMT所支持的类型)，窗口右侧会出现信号绑定区域： ![](https://590671407-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjRYQBrGBRq9cuhWqyze%2Fuploads%2Fgit-blob-15f8c62b86155e5e04bbd015c7bb4a96f287a205%2FbindingArea.png?alt=media)

假设我们为`opc.tcp://1.117.47.96:62541/SampleServer`的`ns=2;s=169.254.200.200_5020/InputRegisters_0_1`信号绑定孪生体。选择该信号，点击+添加一个信号的回调，然后将所要驱动的孪生体拖到`GameObject`栏并在`EventHandler`栏选择回调函数

![](https://590671407-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjRYQBrGBRq9cuhWqyze%2Fuploads%2Fgit-blob-fd72bcd83e079539c9574740a45c0556ec7784b8%2FhandlerAdded.png?alt=media)

这里绑定的回调所做的工作很简单，将收到的信号直接打印到Unity Console。

信号传入回到的参数类型为ReinterpretAs的类型，为Int16，而`EventHandler`接受的参数类型为Single,这里假设信号的值单位为`mrad`而回调需要接受的参数单位为`degree`，那么所需要的类型和单位转换将通过`Bolt`来实现

## 添加Bolt

Bolt是Unity的一个可视化编程插件，通过节点式的编辑图表来制定逻辑

点击Bolt栏按钮将会弹出Bolt Graph Editor:

![](https://590671407-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjRYQBrGBRq9cuhWqyze%2Fuploads%2Fgit-blob-e555dfd9fac290c94a00a45ebe4217dbfdb24da4%2ForigBolt.png?alt=media)

原始Bolt图表所实现的逻辑是：当信号有更新时，直接将输入作为输出传出。

我们现在更改图标来实现我们希望的转化：

![](https://590671407-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjRYQBrGBRq9cuhWqyze%2Fuploads%2Fgit-blob-58af5958a6638a98f7b964210fb58fd813f3b18b%2FmodBolt.png?alt=media)

更改过图标的逻辑是：当信号有更新时，将输入乘以0.0573然后输出。

## 测试

点击`Play`运行程序可以看到 Unity Console有如下结果：

![](https://590671407-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcjRYQBrGBRq9cuhWqyze%2Fuploads%2Fgit-blob-1b6a31b9b57f4a00793552bd3f412138566ed00b%2Ftest.png?alt=media)
