Coding 奇難雜症

Q1. 我想请问一下, 我有一个“constant"叫 SW_AUTO_PB
如果我想每当我按这个青色的”button"我的 SW_AUTO_PB value 都会每次加 1
那请问 coding 应该怎样写?

Q2. 想请问这是什么Error? 可以怎样解决?

SaaS Composer 支持对 EdgeHub 的反向控制功能,实现方式和範例如下:
直接在事件处理中调用反向控制的接口方法

反向控制方法及其参数说明
dataRefreshUtil.setValue(datasourceName,datasourceType,{
“target” : “12#92#|lat”,
“value” : “123”
})
// datasourceName : 数据源名称
// datasourceType : plugin 名称所对应的 plugin type ene-simple-json-datasource
// target: 所要控制的目标数据,填写数据源中的Object|Param,注意中间要用|分隔
// value : 设置的目标值

您好~
谢谢您的回复
可是我想要的是
“每按一次按钮, 12#92|lat的参数会从 32+1, 33+1,34+1跳"
以此类推
请问应该要如何?

Hi Chien_Wei_Hiew,
請問是否能夠描述一下您具體的應用情境呢?是為了讓風扇旋轉呢?還是想單純呈現數值遞增呢?如果是上述的需求可以直接在 SaaS Composer 設定模擬數據即可,就不需採用反向控制的功能。
煩請不吝提供我們更多的資訊,以便了解您具體的應用情境,我們會為您提供最適配的建議以及最佳解決方法。

@Elina_Liu 您好

不好意思之前没有给完整的资讯
我是想要把Saas Composer 做成有SCADA 的design

  1. 当我按RO-9的开关阀,会有一个弹窗跳出来
  2. 然后可以选择 “Auto" , “Open” , “Close”
  3. 然后我的开关阀颜色会随着 “Open” - 转青色, “Close"-转红色

image

  1. 我的“Auto", “Open”, “Close” 程式是用 PLC ladder diagram写的
    我的PLC Addressing, “Auto” ,“Open”, “Close” 都是一个 Integer/Number format
    比如
    “Auto” - SW_AUTO_PB (Number)
    “Open” - SW_OPEN_PB (Number)
    “Close” - SW_CLOSE_PB (Number)

  1. RO-1的开关阀的 Addressing
    “Auto” - SW_AUTO_PB.bit1
    “Open” - SW_OPEN_PB.bit1
    “Close” - SW_CLOSE_PB.bit1
    以此类推
    所以RO-9的开关阀的 Addressing
    “Auto” - SW_AUTO_PB.bit9
    “Open” - SW_OPEN_PB.bit9
    “Close” - SW_CLOSE_PB.bit9

6.当按下RO-1 的 “Auto” 按键, SW_AUTO_PB 的bit 1 会从“0” 变成"1"… SW_AUTO_PB的数值也会变成"2"
当放开RO-1 的 “Auto” 按键, SW_AUTO_PB 的bit 1 会从“1” 变回"0"… SW_AUTO_PB的数值也会变成"0"

7.当按下RO-9 的 “Auto” 按键, SW_AUTO_PB 的bit 9 会从“0” 变成"1"… SW_AUTO_PB的数值也会变成"512"
当放开RO-9 的 “Auto” 按键, SW_AUTO_PB 的bit 9 会从“1” 变回"0"… SW_AUTO_PB的数值也会变成"0"

image

@Chien_Wei_Hiew 您好,

  1. 關於彈出視窗實作方法可以參考這篇討論:How to create pop out screen for control in 3D format?

  2. 關於 2D 物件顏色改變以及 Event Handler 配置可以參考這篇技術文檔:Interactive Background Color Change on Mouse Down Event

  3. 關於 EdgeHub 數值的反向控制實作,我們建議可以新增一個 Text 物件用來呈現數值,另外新增一個 Button,透過點擊 Button 讓 EdgeHub 數值進行遞增,具體操作參考如下:
    (1) 首先新增一個 Text 綁定 EdgeHub datasource,並命名 Text 的 tag 標簽,此範例命名為 “text1”;新增一個 Button 並勾選 Events Interactive。
    (2) 開啟 Button Event Handler 視窗選擇 Click event,輸入var currvalue = dataModel.getDataByTag(“text1”).s(‘text’); 以取得當前的 value 加 1 作為 target value,dataRefreshUtil.setValue function 來反向寫入 target value 作為 EdgeHub 的新數值,以下是範例程式:

// 取得當前 value
var currvalue = dataModel.getDataByTag(“text1”).s(‘text’);

// parseInt() 確保為整數資料型態
var target = parseInt(currvalue ) + 1;

//反向控制 EdgeHub data
dataRefreshUtil.setValue(“EdgeHub data source”,“ene-simple-json-datasource”,{
“target” : “12#92#|lat”,
“value” : target}

@Elina_Liu 您好~

谢谢您的回复~
我想在item3 再深入一点探讨
1.我已经测试了2D是成功了~ 可是我想问如果我的是在3D那请问要怎样新加texT去绑定?
2.EdgeHub 數值的反向控制實作, 一定需要新增 text 去绑定吗? 如果我有10个开关阀那可能我就需要新增10个text 去绑定了…有没有其他方法除了新增东西可以直接绑定的吗?
3. 我2D是成功把数值从原有的4,开始每按一次按键都会+1… 可是差不多一分钟那样就它会自己变回去4
其实我想要的是:
当按键A被按数值就会+1 (4+1)
当按键A弹回时就会变回4 (5-1)
当按键B被按数值就会+2 (4+2)
当按键B弹回时就会变回4 (6-2)

谢谢你

@Chien_Wei_Hiew 您好,

  1. 關於在 3D 場景新增 2D text 實作方法可以參考這篇討論:Add 2D Symbols to 3D scene

  2. 在 SaaS Composer 中如果要獲得數據就必須對 data source target value 進行綁定,也就是說若要取得 10 個开关阀的數值就必須綁定這 10 個點位在 SaaS Composer 中。如果您不想在畫面中顯示這些點位的 text,可以在控制屬性下 disable text 的可見、可選中、可移動等屬性,請參考下圖。

  3. 這是因為 SC 反向控制僅作用在 edgehub 上的數值,並未作用到邊緣端的設備上,因此當邊緣端設備再次上傳數據時,又會將原本的數據更新到 edgehub 上。如果要將 edgehub 的數據更新到邊緣設備上,具體作法會根據您所使用的邊緣端設備而有所不同,建議您可以聯繫研華的業務窗口或 FAE 給予進一步協助,謝謝。