我是 Jess 的初学者。我正在尝试比较 Jess 中 Java 类的两个变量并尝试执行规则。
我已经导入cTNumber
并measuredCurrent
(都是整数)形成了一个名为CurrentSignal
. 同样导入vTNumber
并measuredVoltage
形成一个java类DERSignal
。现在我想制定一个规则,如果cTNumber
等于vTNumber
然后乘measuredCurrent
和measuredVoltage
(两者都是双)来计算功率。
我正在尝试这种方式......
(import signals.*)
(deftemplate CurrentSignal (declare (from-class CurrentSignal)))
(deftemplate DERSignal (declare (from-class DERSignal)))
(defglobal ?*CTnumber* = 0)
(defglobal ?*VTnumber* = 0)
(defglobal ?*VTnumberDER* = 0)
(defglobal ?*measuredCurrent* = 0)
(defglobal ?*measuredVoltage* = 0)
(defglobal ?*measuredVoltageDER* = 0)
(defrule Get-CT-Number
(CurrentSignal (cTNumber ?m))
(CurrentSignal (measuredCurrent ?c))
=>
(bind ?*measuredCurrent* ?c)
(printout t "Measured Current : " ?*measuredCurrent*" Amps"crlf)
(bind ?*CTnumber* ?m)
(printout t ?*CTnumber* crlf)
)
(defrule Get-DER-Number
(DERSignal (vTNumber ?o))
(DERSignal (measuredVoltage ?V))
=>
(bind ?*measuredVoltageDER* ?V)
(printout t "Measured Voltage : " ?*measuredVoltageDER* " V" crlf)
(bind ?*VTnumberDER* ?o)
(printout t ?*VTnumberDER* crlf)
)
(defrule Power-Calculation-DER-signal
"Power calculation of DER Bay"
(test (= ?*CTnumber* ?*VTnumberDER* ))
=>
(printout t "Total Generation : " (* ?*measuredCurrent* ?*measuredVoltageDER*) crlf)
)
但是总代数显示为 0。但我尝试在 Java 中进行计算,它显示了一个数字。谁能帮我解决这个问题。谢谢你。