Mitisubishi Q173-Signed integer in home shift position amount

sawyer65

Member
Join Date
May 2016
Location
Auburn,AL
Posts
21
I set up a Mitisubishi test system on the bench.

Q03UDSPU
Q173DCPU
MR-J3-40B
HF-KP43
HMI is a LS XP50 TTA/KP43

I am trying to use a signed integer from the HMI in the Home Position Shift Amount Value.
If I enter a negative value directly into the Home Position Shift value in MT Developer2, it works correctly and the servo move backwards towards the RLS at the end of the home position return. When i enter a negative value in a register input (D2600) from the HMI, the servo moves forward at towards the FLS.
D2600 is set as a signed 16 bit integer in the the HMI input box, the watch window of MT Developer2 also has D2600 as signed.
It appears the value sent to the motor is unsigned.
The is probably a setting or parameter I am missing but I can't seem to find it.
 
I set up a Mitisubishi test system on the bench.

Q03UDSPU
Q173DCPU
MR-J3-40B
HF-KP43
HMI is a LS XP50 TTA/KP43

I am trying to use a signed integer from the HMI in the Home Position Shift Amount Value.
If I enter a negative value directly into the Home Position Shift value in MT Developer2, it works correctly and the servo move backwards towards the RLS at the end of the home position return. When i enter a negative value in a register input (D2600) from the HMI, the servo moves forward at towards the FLS.
D2600 is set as a signed 16 bit integer in the the HMI input box, the watch window of MT Developer2 also has D2600 as signed.
It appears the value sent to the motor is unsigned.
The is probably a setting or parameter I am missing but I can't seem to find it.


I'm terrible when it comes to comprehending problem descriptions but here goes:


Could it be that you are sending a signed 16bit value to a 32bit register? If so...


You are inputting a negative 16bit value, which means that bit15 is set (this is the sign bit for a word) . If this is being sent as hexadecimal to a 32bit register, it will just be a greater, positive value.


Using actual numbers:
Signed 16bit integer of -15000 = C586 (hexadecimal)


Input C586 (hexadecimal) into a signed 32bit register and you will get 50536 decimal.


For the -15000 to be preserved, bits 16 thru 31 would need to be set as in FFFFC586.


Surely the HMI has a 32bit option?


Craig
 

Similar Topics

Hi guys, I have a problem with setting up the parameters for PowerFlex 525. So we have 4x motor connected in parallel to 1 PowerFlex, each motor...
Replies
8
Views
1,084
I'm having to make an AOI to use with a generic ethernet device because the manufacturer does not provide an AOP. I just want to do a sanity check...
Replies
13
Views
1,262
Is there a way in CX-Programmer to ad UINTs together with an instruction without a compiler warning. Ladder Rung: Warning: Instructions...
Replies
2
Views
1,255
Replies
3
Views
1,345
I'm trying to read a u32 register from a fuel meter over modbus rtu. There isn't a unsigned integer option under the "treat as" field. I select...
Replies
15
Views
3,869
Back
Top Bottom