The quick fix is to add 65536 to any .value that is negative.
Like this?
View.LogPrintValue LOGFILEHANDLE.Value, O_Prog_2.Value65536 / 100 , 2
fix would be to write it to a DINT and then use the bit-wise And operator mask out the high 15 bits e.g. this
CLng(whatever.value)
becomes this:
CLng(whatever.value) And CLng(65535)
<or>
CLng(whatever.value) And CLng(&0000FFFFH)
You could also make this a function:
FUNCTION fix_rawint(rawvalue)
fix_rawint = CLng(rawvalue) And CLng(&0000FFFFH)
END FUNCTION
then a statement like this:
View.LogPrintValue LOGFILEHANDLE.Value, O_Prog_1.Value / 100 , 2
becomes this (I think):
View.LogPrintValue LOGFILEHANDLE.Value, fix_rawvalue(O_Prog_1.Value) / 100 , 2
LOGFILEHANDLE.Value = View.LogOpenFile (LOGFILENAME.Value)
If LOGFILEHANDLE.Value = -1 Then
LOGFILEHANDLE.Value = View.LogNewFile (LOGFILENAME.Value)
'Add Column titles to new file
FUNCTION fix_rawint(rawvalue)
fix_rawint = Clng(rawvalue) And Clng(&0000fffh)END FUNCTION
View.LogPrintString LOGFILEHANDLE.Value, "DATE, TIME, prog1, prog2, prog3, prog4, prog5, prog6, O_Prog_1, O_Prog_2, O_Prog_3, O_Prog_4, O_Prog_5, O_Prog_6"
View.LogNewLine LOGFILEHANDLE.Value
End If
View.LogSetUseComma LOGFILEHANDLE.Value, 1 ' Add comma after LogPrintValue (default)
'Log the current data
View.LogDate LOGFILEHANDLE.Value
View.LogTime LOGFILEHANDLE.Value
View.LogPrintValue LOGFILEHANDLE.Value, fix_rawvalue(prog1.Value), 0
View.LogPrintValue LOGFILEHANDLE.Value, prog2.Value, 0
View.LogPrintValue LOGFILEHANDLE.Value, prog3.Value, 0
View.LogPrintValue LOGFILEHANDLE.Value, prog4.Value, 0
View.LogPrintValue LOGFILEHANDLE.Value, prog5.Value, 0
View.LogPrintValue LOGFILEHANDLE.Value, prog6.Value, 0
View.LogPrintValue LOGFILEHANDLE.Value, fix_rawvalue(prog1.Value) / 100 , 2
View.LogPrintValue LOGFILEHANDLE.Value, O_Prog_2.Value / 100 , 2
View.LogPrintValue LOGFILEHANDLE.Value, O_Prog_3.Value / 100 , 2
View.LogPrintValue LOGFILEHANDLE.Value, O_Prog_4.Value / 100 , 2
View.LogPrintValue LOGFILEHANDLE.Value, O_Prog_5.Value / 100 , 2
View.LogPrintValue LOGFILEHANDLE.Value, O_Prog_6.Value / 100 , 2
View.LogNewLine LOGFILEHANDLE.Value
'Close file so it doesn't get corrupted
like this?