Hello! I’m trying to implement this exact same example, but controlling with the current that passes through the resistance instead of the speed in speed_sensor.w.

    @equations begin
        #...
       #connect(current_sensor.i, :y, feedback.input2) #not working
        feedback.input2 ~ current_sensor.i
        connect(R1.n, current_sensor.p)        
        connect(current_sensor.n, L1.p)        
        #...
    end

@named model = DCMotor()

sys = structural_simplify(model)

At structural_simplify it gives ERROR: MethodError: no method matching -(::SymbolicUtils.BasicSymbolic{Real}, ::ODESystem) The function `-` exists, but no method is defined for this combination of argument types.
Since I’ve had similar issues with other implementations, I figured it could be a beginner’s problem.

It’s because feedback.input2 is a connector and not a variable. You would have to do

feedback.input2.u ~ current_sensor.i

instead.

Why does

connect(current_sensor.i, :y, feedback.input2)

not work?