The functions listed here can be used in expressions in the ComfileHMI editor.
Functions with a single argument:
sinh(value): Hyperbolic Sine
cosh(value): Hyperbolic Cosine
tanh(value): Hyperbolic Tangent
floor(value): Rounds number down to the nearest integer value.
ceil(value): Rounds number up to the nearest integer value.
exp(value): e raised to a given exponent
log(value): Natural Logarithm
log10(value): Log base 10
fabs(value): absolute value
sqrt(value): square root
Functions with 2 arguments:
pow(x,y): x raised to the power y
fmod(x,y): the remainder of x divided by y.
Functions with 5 arguments:
scale(input, minimum input, maximum input, minimum output, maximum output): Scales
inputproportionally to (
minimum input) / (
float_to_bytes(floatValue, “variable1”, “variable2”, “variable3”, “variable4”): Decomposes a floating point value into its composed bytes. Afterward the bytes can be manipulated in various ways to, for example, change the byte order and store the values in addressable internal memory.
variable1is the least significant byte and
variable4is the most significant byte.
variables are case-sensitive and must be enclosed in double quotes.
Functions with a variable number of arguments:
max(x,y,z,…): Returns the largest value from the argument list
min(x,y,z,…): Returns the smallest value from the argument list
max_index(x,y,z,…): Returns the index of the largest value in the argument list
min_index(x,y,z,…): Returns the index of the smallest value in the argument list
avg(x,y,z,…): Returns the average of all values in the argument list
stdev(x,y,z,…): Returns the standard deviation of all values in the argument list
The following functions can be used to detect communication problems between the ComfileHMI and the PLC.
timeout_result(): Returns 1 if the last communication resulted in a timeout waiting for a response. Return 0 if no timeout occurred.
timeout_count(): Returns the total number of times a communication timeout occurred since the project was executed.
reset_timeout_count(): Resets the timeout count returned from
The following functions are used to read from and write to internal memory.
set_mem(index, value): Writes
valueto internal memory at
mem(index): Reads the value current stored in internal memory at
set_mem(index, value1, value2, …, valueN)
0if not. e.g.
file_exists(“storage card\myfile.txt”) == 1
file_to_text(file_path): Returns the contents of
file_pathas a string. If the file's contents have the byte-order mark
FF FE, the contents of the file will be Unicode encoded. e.g.
$content = file_to_text(“storage card\myfile.txt”)
text_to_file(string, file_path): Stores string variable
stringto the file
text_to_file($content, “storage card\myfile.txt”)
Functions associated with the system.
action_group_repeat_index(): Retrieves the number of times a user event was executed.
backlight_state(): Returns whether or not the LCD backlight is on.
beep(): Causes the panel PC to emit an audible beep sound.
cpu_usage(): Returns the current CPU utilization as a percentage.
exit_project(): Causes the current project to exit. This is the same effect as touching the upper right corner of the screen 5 times in quick succession.
firmware_version: Retrieves the firmware version running on the panel PC. For example
273corresponds to v2.73.
idle_seconds(): Returns the number of seconds since the screen was last touched.
idle_minutes(): Returns the number of minutes since the screen was last touched.
prev_screen_id(): Returns the id of the screen that the current screen navigated from.
reboot_system(): Reboots the panel PC
screen_id(): Returns the id of the current screen.
set_backlight_state(value): Sets the state of the LCD backlight on or off. If
1the LCD backlight turns on, if
0the LCD backlight is turns off.
set_data_processing_period(value): This function can be used to throttle CPU usage. If the CPU usage for a project is too high, the data processing period can be increased to throttle back the amount of resources that the HMI software dedicates to processing data.
valueis in units of milliseconds; default is 1 ms.
tick_count(): The number of milliseconds since the system was powered on.
touch_duration(): The number of milliseconds since the last time the screen was touched. If the screen has never been touched -1 is returned.
verify_developer_key(value): Using the ComfileHMI panel PC's runtime configuration screen, a unique key can be assigned to a individual device or group of devices.
verify_developer_keycan then be used at runtime within a project to test which device a project is running on and dynamically offer a different experience. The developer key cannot be read; one can only check if
valuematches the developer key assigned to the device. This function returns
valuematches the developer key assigned to the device or
0if it does not.
keypad_state(): Returns whether the current keypad is opened.
Functions to convert between data types.
text_to_num(string): Parses a character string in base 10.
num_to_text_int(number): Prints a number as a base 10 integer character string.
num_to_text_int(number, digits): Prints a number as a base 10 integer character string with leading 0's. Ex:
num_to_text_int(3.14, 4)prints “0003”.
num_to_text_hex(number): Prints a number as a base 16 integer character string.
num_to_text_hex(number, digits): Prints a number as a base 16 integer character string with leading 0's
num_to_text_dec(number, fractional digits): Prints a number as a base 10 character string with a given number of fractional digits. Ex:
num_to_text_dec(3.14159, 4)= “3.1416”
In the Add Action –> Run Action Group properties, in the Advanced Options is the ability to pass a primary and secondary parameter to the actions (Add Action Parameter and Add Secondary Action Parameter respectively) .
The parameters can then be read from within the executing action using the following functions.
action_param: Retrieves the primary parameter passed to an action.
sub_action_param: Retrieves the secondary parameter passed to an action group.
Functions with no argument.
year(): The current year
month(): The current month (1~12)
day(): The day of the month
day_of_week(): The day of the week (0~6), 0 = Sunday
hour(): The hour of the day (0~23)
minute(): The minute component of the current hour (0~59)
second(): The second component of the current minute (0~59)
rand(): returns a random number in the range of 0~32767 (0x7FFF)
Functions that take 1 argument but return no value.
set_year(value): Sets the current year
set_month(value): Sets the current month (1~12)
set_day(value): Sets the day of the month
set_hour(value): Sets the hour of the day (0~23)
set_minute(value): Sets the minute component of the current hour (0~59)
set_second(value): Sets the second component of the current minute (0~59)
srand(seed): Sets the seed value for generating random numbers with the
It is recommended to call
srand(tick_count()) to seed the random number generator before using