Q1. 我想请问一下, 我有一个“constant"叫 SW_AUTO_PB
如果我想每当我按这个青色的”button"我的 SW_AUTO_PB value 都会每次加 1
那请问 coding 应该怎样写?
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
- 当我按RO-9的开关阀,会有一个弹窗跳出来
- 然后可以选择 “Auto" , “Open” , “Close”
- 然后我的开关阀颜色会随着 “Open” - 转青色, “Close"-转红色
- 我的“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)
- 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"
@Chien_Wei_Hiew 您好,
-
關於彈出視窗實作方法可以參考這篇討論:How to create pop out screen for control in 3D format?
-
關於 2D 物件顏色改變以及 Event Handler 配置可以參考這篇技術文檔:Interactive Background Color Change on Mouse Down Event
-
關於 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 您好,
-
關於在 3D 場景新增 2D text 實作方法可以參考這篇討論:Add 2D Symbols to 3D scene
-
在 SaaS Composer 中如果要獲得數據就必須對 data source target value 進行綁定,也就是說若要取得 10 個开关阀的數值就必須綁定這 10 個點位在 SaaS Composer 中。如果您不想在畫面中顯示這些點位的 text,可以在控制屬性下 disable text 的可見、可選中、可移動等屬性,請參考下圖。
-
這是因為 SC 反向控制僅作用在 edgehub 上的數值,並未作用到邊緣端的設備上,因此當邊緣端設備再次上傳數據時,又會將原本的數據更新到 edgehub 上。如果要將 edgehub 的數據更新到邊緣設備上,具體作法會根據您所使用的邊緣端設備而有所不同,建議您可以聯繫研華的業務窗口或 FAE 給予進一步協助,謝謝。