jake4eng
Member
I am having problems expressing an ANALOG OUTPUT 16bit INT word (0-10V Proportional Valve Voltage) as a REAL decimal number.
From my understanding the word is divided into 2 (8bit) bytes...one representing the whole number value and the second the decimal value.
We're using BL20 I/O Module (german therefore LSB first).
I need to MOV/COP (read) the value, CONVERT it into a REAL number, Manipulate the REAL VALUE, then CONVERT the MANIPULATED REAL Value back into a 16bit INTEGER & WRITE the NEW Integer Value into Proportional Valve Voltage Location.
I also have a similar situation regarding our Incremental Encoder. In this scenario the pulse count is obviously a whole number (no decimals) where 4 (16bit) bytes represent the REAL Count Value..
I have read other posts on similar conversion topics and understand the general premise, but I'm having problems specifying write parameters..
- i.e. writing bits 0-7 from an INT into SINT[0] (HIGH BYTE representing the whole # value? ) and writing bits 8-15 into SINT[1] (LOW BYTE representing the decimal value) THEN CONVERTING into REAL # (Voltage fed to Proportional Valve) ...manual section... page 282&283 http://pdb2.turck.de/repo/media/_us/Anlagen/d300717.pdf
- i.e. writing bits 0-15 from INT[0] , INT[1] , INT[2] and INT[3] into a LINT (not sure if correct) THEN CONVERTING into REAL # (Encoder Count)
...manual section... page 17 (current count value) http://pdb2.turck.de/repo/media/_en/Anlagen/D301224.pdf
ANY SUGGESTIONS WOULD BE GREATLY APPRECIATED...
project file if interested.. https://sites.google.com/site/lyncedrgb/eva/untitledpost-2/StellaPLC.ACD
From my understanding the word is divided into 2 (8bit) bytes...one representing the whole number value and the second the decimal value.
We're using BL20 I/O Module (german therefore LSB first).
I need to MOV/COP (read) the value, CONVERT it into a REAL number, Manipulate the REAL VALUE, then CONVERT the MANIPULATED REAL Value back into a 16bit INTEGER & WRITE the NEW Integer Value into Proportional Valve Voltage Location.
I also have a similar situation regarding our Incremental Encoder. In this scenario the pulse count is obviously a whole number (no decimals) where 4 (16bit) bytes represent the REAL Count Value..
I have read other posts on similar conversion topics and understand the general premise, but I'm having problems specifying write parameters..
- i.e. writing bits 0-7 from an INT into SINT[0] (HIGH BYTE representing the whole # value? ) and writing bits 8-15 into SINT[1] (LOW BYTE representing the decimal value) THEN CONVERTING into REAL # (Voltage fed to Proportional Valve) ...manual section... page 282&283 http://pdb2.turck.de/repo/media/_us/Anlagen/d300717.pdf
- i.e. writing bits 0-15 from INT[0] , INT[1] , INT[2] and INT[3] into a LINT (not sure if correct) THEN CONVERTING into REAL # (Encoder Count)
...manual section... page 17 (current count value) http://pdb2.turck.de/repo/media/_en/Anlagen/D301224.pdf
ANY SUGGESTIONS WOULD BE GREATLY APPRECIATED...
project file if interested.. https://sites.google.com/site/lyncedrgb/eva/untitledpost-2/StellaPLC.ACD
Last edited: