What's new for the HMIWorks Standard Edition. Note: Please remember to update the MiniOS8 with last version to prevent problems. Refer to the following folder (after installation): C:\ICPDAS\HMIWorks_Standard\bin\boot Double-click on the OsUpdate.bat file and follow the prompt procedures to update it. The -H version, and 7'' TouchPAD do not have MiniOS8, therefore nothing to update. ================================================================= v2.10.46, Oct.18, 2019 Chg: Change the Watchdog Timer function of Modbus TCP to master and slave parts. Modbus TCP Master Timeout (s): Used to reboot the TouchPAD when it works as Modbus TCP master, and there is no communication during the specified period. Modbus TCP Slave Timeout (s): Used to reboot the TouchPAD when it works as Modbus TCP slave, and there is no communication during the specified period. Fix: MQTT functions cause compiler warnings for the TPD-433-H/Mx projects. Fixed. Fix: Some blod fonts cause compiler errors when using BitButton. Fixed. Fix: The "Range check error" message may pop up when compiling the project. Restart the computer can also solve this issue. Fixed. ================================================================= v2.10.45, May.29, 2019 Chg: Sort the tag list when clicking the "Name" title. Chg: Supports larger picture index (255 ==> 65535) on the CheckBox. Only for 7'' and H version of TouchPADs. Fix: Check Ethernet configuration to prevent error message... "macro 'IPADDR' requires 4 arguments, but only 1 given.". Device setup page is shown automatically if the IP/Mask/Gateway settings are empty when building project. ================================================================= v2.10.44, May.27, 2019 Chg: Sort the tag list when selecting tag. Chg: Sort the TouchPAD list when searching through Ethernet. ================================================================= v2.10.43, Apr.10, 2019 Add: Support adding multiple sections of the I/O tags without delete existing tags. This works for user-defined Modbus RTU / TCP slave devices. Add new "Add Tags" button for adding I/O tags, instead of using "Edit" button that also used for "Select" model. Fix: TouchPAD may show noise srcreen when starting up. Fixed. Chg: Change the default silent time of serial connection from 0 to 10 ms. This reduce communication problems for some slow-response devices. ================================================================= v2.10.42, Feb.20, 2019 Add: Add the EncodeDateTime / DecodeDateTime functions. // Encoding date time information to the time_t data type. // No need -1900 for the yy parameter, and no need -1 for the mm parameter. time_t EncodeDateTime(int yy, int mm, int dd, int hh, int nn, int ss); // Decoding time_t data type to the date time information. void DecodeDateTime(time_t time, int *yy, int *mm, int *dd, int *hh, int *nn, int *ss); Add: Allowing change the font size of the Code Editor manually. Modify the UserConfig.ini file to add the 'CodeEditorFontSize' parameter in the [System] section. For example... [System] CodeEditorFontSize=12 ================================================================= v2.10.41, Jan.29, 2019 Fix: Have a better display result when switching screen (frame). For the 4.3'' and 7'' H series including TPD-43x-H / TPD-43x-Mx / TPD-43xF-H, TPD-703 (-64), VPD-14x-H, VPD-173N (-64) / VPD-173X (-64) models. ================================================================= v2.10.40, Dec.25, 2018 Add: Supports new functions functions for the models... TPD-283-H / TPD-283U-H, TPD-433-H / TPD-433-Mx / TPD-433F-H, TPD-703 (-64), VPD-133-H, VPD-143-H, VPD-173N (-64), VPD-173X (-64). typedef void (*HMI_TCP_CALLBACK) (tHandle); // This function assigns a callback function for the ACCEPTED event on a server session. // The callback function will be called with the new session handle when connected. // This allows a TCP server to accept multiple client connections, and allows // reading / writting to different child handles. // Note: Read / Write to a server handle will be redirect to the last connected client. // void hmi_TCPSetCallbackAccepted(tHandle h, HMI_TCP_CALLBACK pfnAccepted); // This function assigns a callback function for the CONNECTED event on a outgoing session. // void hmi_TCPSetCallbackConnected(tHandle h, HMI_TCP_CALLBACK pfnConnected); // This function assigns a callback function for the DISCONNECTED event on a session. // The handle is invalid for TCP/IP operations when DISCONNECTED callback is called. // The handle is only used to notify user's application that it disconnected. // void hmi_TCPSetCallbackDisconnected(tHandle h, HMI_TCP_CALLBACK pfnDisconnected); // This function assigns a callback function for the RECEIVED event on a session. // void hmi_TCPSetCallbackReceived(tHandle h, HMI_TCP_CALLBACK pfnReceived); // Set TCP watchdog to cut-off the connection when idle for a long time. // The valid range is 10 to 65500 seconds. // For compatibility, 30 minutes, a very long period setting is used by default. // void hmi_TCPSetWatchdog( tHandle h, unsigned short usTimeout); #define hmi_TCPGetLocalIP hmi_LocalIPAddrGet #define INVALID_HANDLE (-1) ================================================================= v2.10.39, Nov.27, 2018 Fix: DCON protocol may not work correctly with I-7000 modules on MiniOS8. Fix the issue and rebuild the following MiniOS8 (v1.3.2, Nov.13, 2018): TPD-280U / 283U / 430 / 433 / 432F / 433F, VPD-130 / 132 / 133 / 142 / 143. Add: Add USB download interface for TPD-703 (-64) models. The USB port will be added on the TPD-703 (-64) models on next hardware revision. ================================================================= v2.10.38, Nov.07, 2018 Fix: The ebFont does not work correctly for TPD-703-64, VPD-173x-64 models that has 64 MB external flash. Fixed. Fix: The XV303/306/307/308/310 boards are using Engineering Unit for TouchPAD. Fix the IO script to force using Engineering Unit format. ================================================================= v2.10.37, Oct.26, 2018 Chg: Enable using ebFont for the following models. TPD-280U-H(Mx) / TPD-283U-H (Mx) / TPD-43x-H (Mx) / TPD-43xF-H / TPD-703 (-64) / VPD-13x-H / VPD-14x-H / VPD-173N (-64) / VPD-173X (-64) For using ebFont, user has to install ebFont on TouchPAD first. Contact us for more information. Chg: Modbus TCP checks watchdog every 3 seconds, instead of 10 ms. Chg: When project path contains special chars, there is warning message. Change the warning message shown every 2 hours, instead of every time. Fix: Includes math.h header files for the TPD-433-H, TPD-430-H.ini, TPD-432-Mx.ini and TPD-433-Mx.ini models. ================================================================= v2.10.36, Sep.26, 2018 Chg: Remove some duplicated messages for Ethernet downloading. Fix: Fix a performance issue that causes slow response for Ethernet ping. This issue may also cause Ethernet stop working, such as no response for ping and cannot connect to the TouchPAD. The problem is related to TPD-433-H, TPD-433-Mx, TPD-433F-H, TPD-703 (-64) , VPD-173N (-64) and VPD-173X (-64) models. ================================================================= v2.10.35, Sep.20, 2018 Add: Supports Watchdog for Modbus TCP Slave function. Click the HMIWorks menu item "Project / Project Configuration" to pop up the "Project Configurations" window, and then configure the "Modbus TCP Timeout" setting in the "Watchdog Timer (WDT)" block of the "General" page. This new feature supports TPD-283-H, TPD-283-Mx, TPD-283U-H, TPD-283U-Mx, TPD-433-H, TPD-433-Mx, TPD-433F-H, TPD-703 (-64), VPD-133-H, VPD-143-H, VPD-173N (-64), and VPD-173X (-64) models (high-speed versions). Add: Supports the XV303 Board. Update the IO script for the XV307 / XV310 boards. Fix: Modbus TCP Slave function causes link error on the TPD-433-H / TPD-433-M2 and TPD-433F-H models. Fixed. ================================================================= v2.10.34, Jun.05, 2018 Fix: Warning 'rxx_pxx' defined but not used. The warning message may be appeared when using parallel feature on the ladder program. Fixed. ================================================================= v2.10.33, May.04, 2018 Fix: "Invalid class typecast" happens when creating label + jumper on the LadderDesigner. Fixed. Fix: New rung cannot be created when selecting a comment on LadderDesigner. Fixed. ================================================================= v2.10.32, Apr.23, 2018 Fix: Multiple slave TouchPAD cannot be created on the same serial connection. Master and slave TouchPAD also cannot be created on the same serial connection. Change the prompted warning message for one time only, not prompted on each device repeatedly. Fix: The new double-buffer feature on the 4.3'' and 7'' TouchPAD can block the MCU awhile. This can cause uart sending message in segments and then cause communication problems, especially for the timing critical protocol such as Modbus RTU/ASCII. The Modbus RTU/ASCII functions are fixed by built-in lock/unlock LCD when sending data on uart. Users don't need to lock/unlock LCD by them-self. For users want to send uart data without being interrupted, the following procedures can be used. HMI_LOCK_LCD(); send uart data... HMI_UNLOCK_LCD(); Fix: The backup function still have operation when disabled. Chg: Add verification on CheckBoxValueSet() function to skip the same value settings. This prevents drawing same images on the CheckBox when the set value is same as original. This also reduces the related loadings. Add: Add AIO400 profile for the Modbus RTU Slave (TouchPAD) function. ================================================================= v2.10.31, Mar.12, 2018 Fix: HMIWorks menu function "File / Save Project As" does not rename related files with new name correctly. Fixed. ================================================================= v2.10.30, Mar.05, 2018 Fix: Backup program does not work correctly when the project path contains space. Fix: Function Block - user_define\Pack does not work correctly. Add: Provides 2 KB EEPROM user space for H versions and 7'' models. The EEPROM is available on 32-bit operation, so there are 512 DWORD. API functions... The hmi_EepromErase() function is not required before any write operation. Be careful! The EEPROM has about 100,000 times erase/write limitation on each address. // ui32Address : Defines the offset address of the EEPROM to be written to. // The valid offset address is between 0 - 511. // ui32Count : Defines the number of 32-bit data that is to be written. // The valid value is between 1 - 512. // pui32Data : Points to the first 32-bit data to write to the EEPROM. void hmi_UserEepromRead(unsigned long ui32Address, unsigned long ui32Count, unsigned long *pui32Data) // ui32Address : Defines the offset address of the EEPROM to be written to. // The valid offset address is between 0 - 511. // ui32Count : Defines the number of 32-bit data that is to be written. // The valid value is between 1 - 512. // pui32Data : Points to the first 32-bit data to write to the EEPROM. // Return : Returns 0 on success or non-zero values on failure. unsigned long hmi_EepromWrite(unsigned long ui32Address, unsigned long ui32Count, unsigned long *pui32Data) // ui32Address : Defines the offset address of the EEPROM to be written to. // The valid offset address is between 0 - 511. // ui32Count : Defines the number of 32-bit data that is to be written. // The valid value is between 1 - 512. // Return : Returns 0 on success or non-zero values on failure. unsigned long hmi_EepromErase(unsigned long ui32Address, unsigned long ui32Count); Function Blocks on System group: EepromRead, EepromWrite, EepromErase. The EepromErase function block is not required before any write operation. Be careful! The EEPROM has about 100,000 times erase/write limitation on each address. ================================================================= v2.10.29, Feb.09, 2018 Fix: The screen does not refreshed automatically when the timer event changes widget's status. (for H versions) Fix: A small line appears in the right-bottom corner. Fix: The Watchdog Timer of the H versions does not work in correct timing. Chg: Change the Watchdog Timer setting unit from milli-seconds to seconds on the Project Configuration page. Fix: Remove unused or empty function blocks. \FunctionBlock\IR-210\Assign \FunctionBlock\IR-210 \FunctionBlock\VPD-130\TestPanelKey ================================================================= v2.10.28, Feb.02, 2018 Chg: Modify the LCD driver and graphic library to have better display result for the 4.3'' and 7'' TouchPAD models. (LCD uses double-buffer) Add: Add HMI_REFRESH_LCD() macro for refreshing LCD manually if need. The LCD is automatically refreshed after click/paint events. If user needs to refresh the LCD inside a click event, then this macro can be used. For example: void HotSpot7OnClick(tWidget *pWidget) { CheckBoxValueSet(&CheckBox11, 1); // screen refresh required HMI_REFRESH_LCD(); // Option: manually refresh screen // for testing only, not suggested to have long delay (blocking) in this way. hmi_DelayUS(500000); // Auto-refresh the LCD after click event. } ================================================================= v2.10.27, Jan.16, 2018 Fix: The MiniOS8 of VPD-132 does not work correctly. Update the MiniOS8 to v1.3.1 for VPD-132 and VPD-133. Fix: Change back to support Modbus data address 0 to 65535. Standard Modbus address should be 1 - 9999. User has to remove the leading 0X, 1X, 3X, 4X digit when entering Modbus data address. ================================================================= v2.10.26, Jan.11, 2018 Fix: The TextAsImage property does not work correctly. User has to manually reassign the image files into the object-list widget when using HMIWorks v2.10.23 - 25. ================================================================= v2.10.25, Dec.25, 2017 Fix: HMIWorks shows correct MiniOS8 version depending on TouchPAD model. Fix: Reduce screen flashing when drawing images. Chg: Reduce some Ethernet download messages. Chg: Remove the unused bin file if the bix file is used. ================================================================= v2.10.24, Dec.01, 2017 Chg: Force a default setting for the WDT Timeout, Reset WDT, Modbus TCP WDT and LCD auto off on the Project Configuration if the last setting is zero. We would suggest new projects enabling these features for better experiences, even users can still disable these features manually. Chg: Change the display sequence of the TouchPAD type as followings: Modbus TCP Master, Modbus TCP Slave, Modbus RTU Master, Modbus RTU Slave, Modbus ASCII Master, Modbus ASCII Slave and then DCON Master. Add: Supports new model TPD-432F-H. Add: Supports Modbus ASCII master/slave functions for high-speed versions of TouchPAD. TPD-280-H, TPD-280-Mx, TPD-280U-H, TPD-280U-Mx, TPD-283U-H, TPD-283U-Mx, TPD-430-H, TPD-433-H, TPD-432F-H, TPD-433F-H, TPD-433-Mx, TPD-703 (-64), VPD-130-H, VPD-132-H, VPD-133-H, VPD-142-H, VPD-143-H, VPD-703 (-64), VPD-703X (-64) models. The new Modbus ASCII API functions have almost the same name as Modbus RTU, and have the same usage, same parameters and same operations. For example: Modbus RTU functions Modbus ASCII functions ====================== ====================== mrs_RegisterSlave(...) ==> mas_RegisterSlave(...) mrs_ProcessCmd(...) ==> mas_ProcessCmd(...) mrm_ReadAIO(...) ==> mam_ReadAIO(...) mrm_ReadDIO(...) ==> mam_ReadDIO(...) Fix: HMIWorks may crash when compiling timer widget with ladder mode. This is not supported and fixed with showing error messages instead. ================================================================= v2.10.23, Oct.31, 2017 Add: Supports user-defined [Pictures] folder. By using this feature, you can build programs with different style pictures that are placed on different picture folders under project. Note: The file name of pictures on each folder must be the same, so the program needs no modification for file name issues. eg.: [Pic1] stores standard style pictures, while [Pic2] for cute style. Change the [Pictures] setting to [Pic1] or [Pic2], and then rebuild to get the new style program. Click "Project / Project Configuration" menu item, Click "Others" page, and then input on the "User Pictures / Folder Name" field. Add: Supports Touch Fitler feature. By calling hmi_ConfigTouchFilter(ms) function, the TouchPAD can skip some OnClick/OnRelease events after last OnRelease event is processed. This may be useful if you want to ignore events when user clicking too fast. Parameter is time period based on ms, while 0 is disabling this function. Fix: Adjust running sequence of main program to prevent reboot when customer's program blocking FormShow for a long time. ================================================================= v2.10.22, Sep.20, 2017 Add: New models VPD-173X, VPD-173X-64 which supports XVBoard. Add: New Modbus TCP watchdog function is introduced. When TouchPAD failed to get response from Modbus TCP slave devices during a specified period, then the TouchPAD is rebooted. This can be used to monitor the status of the TouchPAD in case of unknown communication issues happened. For enabling this feature, click HMIWorks menu / Project Configuration / General / Watchdog Timer / Modbus TCP Timeout (s), and then input a value. The valid timeout value is between 10 to 10,000 seconds. This new feature supports TPD-283-H, TPD-283-Mx, TPD-283U-H, TPD-283U-Mx, TPD-433-H, TPD-433-Mx, TPD-433F-H, TPD-703 (-64), VPD-133-H, VPD-143-H, VPD-173N (-64), and VPD-173X (-64) models (high-speed versions). # New function mtm_CheckWDT(unsigned long ulTimeout) is introduced for API users. The ulTimeout value is based on 10 ms unit. For example: Checking if it is 30 seconds timed out, calls mtm_CheckWDT(3000). Note: 30 seconds * 1000 ms / 10 ms = 3000. We would suggest calling mtm_CheckWDT(xxx) each second for checking the status. And this function will reboot the TouchPAD when timed out. Add: AIO64 profile for Modbus TCP/RTU slave. Chg: Disable some fields on ProjectConfiguration page depending on models. Have some checks on the value of the fields. Chg: Remove duplicated messages when downloading firmware through Ethernet. Chg: Remove Watchdog Enable field, and use Watchdog Timeout to indicates it's status. Watchdog is enabled when the timeout value larger than 1000 ms. Chg: Shows 1xxxx, 0xxxx, 3xxxx, 4xxxx address on comment filed for DI/DO/AI/AO reference. Note: The leading value 1/0/3/4 are not used, and will be automatically removed when input. Fix: Right-click operations on the workspace may not work correctly. Fix: The startup LED of TPD-703 (-64) and VPD-173 (-64) does not works correctly. The LED of VPD-173 (-64) shows wrong sate (OFF when HMI_LED_ON). Fixed. Fix: The About box shows wrong Windows version. ================================================================= v2.10.21, Jul.03, 2017 Fix: Widgets does not work after grouped. Fixed. Fix: CheckBoxValueSet() does not work correctly when the RefObject is not assigned. ================================================================= v2.10.20, Jun.26, 2017 Fix: Errors when creating new projects. Fix: No error messages when updating TouchPAD firmware but not found on USB. Fix: Compile error for the hmi_Connection_Process0(). ================================================================= v2.10.19, Jun.22, 2017 Fix: Download user specified bin/bix does not work correctly. Fix: Shows wrong message "image size = -1" on console output when building TPD-430 projects. Fix: The Ethernet firmware update does not work when the computer's IP address is changed without reconfiguring the Host IP parameter on the SetupEthernetDevice window. This new version checks on this, and bring up the configuration window when the Host IP is invalid. Fix: The SetupEthernetDevice window wrong checks the download IP for the TPD-433F model. Chg: Have a copy of the Ethernet download messages into the console output. ================================================================= v2.10.18, Jun.06, 2017 Fix: Status bar may not show current download interface correctly. Fix: TPD-283U-Mx/TPD-283U-H may have wrong message on serial port. Add: Supports silent-time on serial communication. The silent-time parameter is available on each serial connection setting. Few legacy devices may require silent-time before processing another message, so this is used. Chg: Show most related connections based Modbus TCP master, slave..., to reduce wrong selection. ================================================================= v2.10.17, May.10, 2017 Add: Supports VPD-143-H and VPD-142-H model. Add: Supports XVBus on VPD-130-H model. Add: Add "Open Backup Folder" menu item. If the backup function is enabled, then user can find bacup files easily. Fix: HMIWorks sometimes crashed when closing software. Fixed. Fix: Supports selecting empty line on widget property to remove that setting. Or press key to remove that setting. ================================================================= v2.10.16, Apr.21, 2017 Fix: Inspector panel may not show correctly. Chg: Remove TPD-432F-H, TPD-432-Mx models. Add: Support USB download for TPD-283U-Mx model. ================================================================= v2.10.15, Apr.20, 2017 Fix: Menu item "Project" may not show correctly. Fix: Compile error for TPD-280U-H. Chg: Automatically show "Inspector" and "Library" panels when opening project. ================================================================= v2.10.14, Apr.17, 2017 Add: Supports LCD backlight status readback for TPD-433F-H. ================================================================= v2.10.13, Apr.12, 2017 Chg: Move the following menu items from "Layout" to "HMI" subject. "New Frame", "Delete Frame", "Rename Frame". Move the following menu items from "HMI" to "Project" subject. "Project Configuration", "Open Project Folder". Chg: Use random xid of DHCP request for TPD-433-H, TPD-283-H/283U-H, TPD-703/703-64, VPD-133-H models. Fix: Reduces broken images when change frames. Skip image drawings on OnCreate(), OnShow() events of a frame. For TPD-43x-H, TPD-43x-Mx, TPD-43xF-H, TPD-703/703-64, VPD-173/173-64 models. ================================================================= v2.10.12, Mar.31, 2017 Fix: The welcome window does not handle the error message correctly. Fixed. Fix: Support NickName on different projects. Pervious version of HMIWorks cannot correctly search the module that have a user-defined NickName. Fixed in this version. Fix: There may have an exception error when using drop-down-list properties. Fixed. Fix: Fix some double-byte to single-byte char issues. Chg: Records the model name when creating new projects. The model name will be used as default for next project. Chg: Remove the backup information from project setting. Chg: Keep original IP address when selecting a BOOTP record with IP 0.0.0.0. Chg: Change the Ethernet configuration file. Chg: Change the text color on the code editor. Chg: Change the max. number of MRU list from 20 to 30. ================================================================= v2.10.11, Mar.21, 2017 Add: Supports TPD-432F-H, TPD-432-Mx, TPD-430-H, TPD-280U-H and TPD-280U-Mx models. Chg: Use random xid of DHCP request for TPD-433-Mx, TPD-433F-H models. ================================================================= v2.10.10, Mar.15, 2017 Fix: The screen may have a white line when checkbox position out the screen. Chg: Put TPD and VPD series in two groups when selecting model name. Thus we can select model name in a shorter list. Add: Supports VPD-133-H, VPD-132-H and VPD-130-H models. ================================================================= v2.10.09, Jan.26, 2017 Fix: Update MiniOS8 of the VPD-142 to fix staring hang issue. Change the message queue size to 32. Fix: Have a default BeepFreq and BeepDuration for new created projects. Available for the following models. TPD-433-Mx, TPD-433F-H, TPD-433-H, TPD-280-H, TPD-280-Mx, TPD-283-H, TPD-283-Mx, TPD-283U-H, TPD-703, TPD-703-64, VPD-173, VPD-173-64. ================================================================= v2.10.08, Jan.19, 2017 Add: Supports hmi_ConfigBeep() function for the following models. TPD-433-Mx, TPD-433F-H, TPD-433-H, TPD-280-H, TPD-280-Mx, TPD-283-H, TPD-283-Mx, TPD-283U-H, TPD-703, TPD-703-64, VPD-173, VPD-173-64. hmi_ConfigBeep(unsigned short usFreq, unsigned short usTicksMS); usFreq : This is the sound frequency, and the range is about 100 to 8,000 hz. usTicksMS : This is the sound lengh, and the unit is milli-seconds. The valid range of sound length is about 10 to 65,530 milli-seconds. Add: Add menu item "HMI / Open Project Folder". This launchs Windows file explorer and shows current project folder. Fix: Supports initial LED ON/OFF setting for TPD-433F-H in HMIWorks. Fix: Wrong DI address used in the LC-103 I/O script. upd: Update the calibate programs for the following models to support new LCD. TPD-280, TPD-280-H, TPD-280-Mx, TPD-283-H, TPD-283-Mx, TPD-283U-H. Already updated models: TPD-280U, TPD-283U. Not supported models: TPD-283 (keep using old LCD). ================================================================= v2.10.07, Dec.23, 2016 Add: Supports TPD-433F-H. Chg: Changes the displayed image size information in bytes instead of MB. Chg: Allows .,;()[]{} symbols in the project folder path. Fix: Sometimes C-Code Editor cannot save file. Fixed. Fix: Cannot show correct status of the TextAsImage property. Fixed. Fix: TextPushButton may show wrong string when using single text string with TextAsImage as TRUE. Fixed. Fix: Shows "Access Violation" error when reopening project. Fixed. ================================================================= v2.10.06, Nov.11, 2016 Fix: Very old version of 2.8'' TPD-280/280U/283/283U modules (about 4 years ago) do not display correctly. The MiniOS8 of TPD-280U/TPD-283U are updated to v1.3.1, while others are still v1.3.0. Chg: Change the I/O scantime of the imported devices from 200 to 100 ms. Old HMIWorks uses 100 ms as default I/O scantime. Fix: Add initial value 0 to the variable when calling ParamsRead/ParamsWrite function-blocks. ================================================================= v2.10.05, Nov.01, 2016 Fix: I/O-scan causes compiler errors when using Modbus TCP device, but no Modbus RTU. Fix: Wrong tET I/O tags and scripts. ================================================================= v2.10.04, Oct.28, 2016 Fix: The "Binding" field in the "Edit Tag" window shows wrong comment string. ================================================================= v2.10.03, Oct.26, 2016 Fix: Modbus RTU has wrong I/O address. Memo: For new ladder mode, the Coil-Set and Coil-Reset change the coil state and lock it (industrial standard) until reset or set. Other coil opertions will not unlock or change it. For old ladder mode, there is no lock feature. ================================================================= v2.10.00, Sep.01, 2016 (MiniOS8 v1.3.0) Add : 1. Function block : BacklightGet 2. H/MX, 7 inch, Ethernet version supported User flash API functions 3. Add VPD-173N, VPD-173N-64 4. Ladder - every devices have own I/O scan time. 5. TPD-283U-H supported USB download 6. H/MX, 7 inch, Ethernet version supported configure SNTP, SNTP_Stop Updated : 1. Modified message when downloading 2. MiniOS8 Update - auto select device 3. Update ethernet download box message 4. Improve download process 5. 2.8 LCD drive update 6. Control memory consumption function add user flash 7. IO.hsf : I-7063 supported DI counter and counter clear Fixed : 1. DCON API not work" 2. Activating the wrong frame ================================================================= v2.09.15, Mar.28, 2016 (MiniOS8 v1.2.9) Fixed: Widget event name not correct in C editor. Fixed: TPD-432F hmi_SetLED API link error. Fixed: TPD-703, TPD-703-64, TPD-433-Mx COM2 can't work with Modbus RTU Slave. Added: Every projects have own IP configure. Added: MQTT supported QoS, member login function. Added: Item "Help" in C editor include API reference. Added: C editor supported display widget name, APIs. Added: Ladder mode supported change address base in run time. Added: "User-defined I/O" Function supported random address. Added: TPD H/Mx version supported SNTP function. Updated: Function block "ParamsWrite". Updated: SNTP function supported feedback communication state. Updated: Add PIR-130-AC, PIR-130-DC IO.hsf. ================================================================= v2.09.14, Nov.20, 2015 (MiniOS8 v1.2.8) Fixed: Project configtion corrected. Fixed: Backlight(time to auto off) corrected for TPD-433, TPD-430, TPD-432F, TPD-433F. Added: Update RTC from NTP cliend function. Added: RTC function supported AM/PM, Week of day, 12-Hour, 24-Hour. Added: H/Mx version supported watchdog function. Added: Supported TPD-280-RHT(include temperature and humidity sensor). ================================================================= v2.09.13, Oct.08, 2015 (MiniOS8 v1.2.7) Fixed: "About" function fail Fixed: "Edit Text" function fail Fixed: Virtual tag can be duplicated Fixed: S,R,P,N coil/contact behaviors Fixed: If connection item doesn't with device, there's a waring issued when compile the project Fixed: There was an error in the slider widget proportional to the maximum value Updated: Modified widget queue size, H/Mx version from 16 to 32, TPD-703 and TPD-703-64 from 16 to 64 Updated: Function block "Unsigned2signed" Added: Ping function supported for H/Mx version ================================================================= v2.09.12, Aug.21, 2015 (MiniOS8 v1.2.7) Fixed: Bind tag function supported new ladder function Fixed: BitButton can't display correctly ================================================================= v2.09.11, Aug.19, 2015 (MiniOS8 v1.2.7) Fixed: Some function blocks doesn't support new ladder mode Fixed: TPD-433-Mx multi com port support Fixed: Calibration data save six times, and then save fail Fixed: New ladder mode appear "Lvalue required as left operand of assignment" problem Fixed: Appear warning message after compile when have not Modbus RTU device ================================================================= v2.09.10, Jul.31, 2015 (MiniOS8 v1.2.7) Fixed: S,R,P,N coil/contact behaviors Fixed: undefined reference to `GrUtf8StringWidthGet' Fixed: progress bar blinks when downloading Fixed: access violations (because of all frames' default properties = false) Added: support TPD-433-H/M ================================================================= v2.09.09, Jul.02, 2015 (MiniOS8 v1.2.7) Fixed: TPD-703 failed to be modbus tcp slave Fixed: 'g_pFontIcpdas_eb_16' undeclared Added: support the MQTT protocol Added: support M-7060, I-7088 Added: functions blocks of exp, ln, log10, Pack, ParamsWrite, etc. ================================================================= v2.09.08, Jun.01, 2015 (MiniOS8 v1.2.7) Fixed: Sometimes updating program may fail - for model: TPD-283U-H, TPD-283U-Mx, TPD-703, TPD-703-64 Fixed: access violation when using objectlist in a widget Added: support VPD-133-H ================================================================= v2.09.07, May.19, 2015 (MiniOS8 v1.2.7) Fixed: No rule to make target, e.g.`_Frame1.o' Fixed: access violation when using objectlist in a widget Fixed: frame .c and .h mismatched if frames are deleted or renamed Added: unicode font support (0x0000--0xFFFF) ================================================================= v2.09.06, Apr.28, 2015 (MiniOS8 v1.2.7) Fixed: undefined reference, hmi_LocalIPAddrGet Fixed: access violation due to default frame deleted Fixed: Slider lags one step to trigger OnChange event in some cases Added: transparent color (masked color) Added: support fonts of European language, such as French, German, Italian, Spanish Added: new font 'Roboto Condensed' Added: the degree sign (U+00B0) to the Cyrillic fonts Added: Update MiniOS8 item in the File menu ================================================================= v2.09.05, Mar.19, 2015 (MiniOS8 v1.2.6) Added: TPD-703-64 Added: project automatic scaling between models and orientations Added: CJK supports (by convert texts into images automatically) CJK=Chinese, Japanese, Korean Added: sorting of tags in the Workspace Added: project file (.hxp) backup ================================================================= v2.09.04, Feb.17, 2015 (MiniOS8 v1.2.6) Fixed: LCD wrongly turn off/on the backlight Added: TPD-703 Added: some I/O, such as M-7051, tET series, LC series devices ================================================================= v2.09.03, Feb.04, 2015 (MiniOS8 v1.2.5) Fixed: together with Modbus TCP devices, TouchPAD may lose control of Modbus RTU devices Added: suuport of TPD-280-Mx, TPD-283-Mx, TPD-283U-Mx Added: new API function, hmi_SoftwareReset Added: new API function, hmi_SerialNumberGet (for models of TPD-*-H/TPD-*-Mx only) Updated: make every TouchPAD model has its default calibration parameters Updated: raise the maximun socket number from 32 to 64 (for models of TPD-*-H/TPD-*-Mx only) ================================================================= v2.09.02, Jan.13, 2015 (MiniOS8 v1.2.4) Fixed: Modbus RTU slave reply with no CRC Fixed: a newly-opened project is not saved Added: hmi_LocalMACAddrGet function to get the local MAC address Added: XV-308 I/O board for VPD series ================================================================= v2.09.01, Dec.18, 2014 (MiniOS8 v1.2.3) Added: support TPD-283U-H Added: IO.hsf of modules, tM, PM, LC, IR, DL, XVBOARD ================================================================= v2.09.00, Oct.29, 2014 (MiniOS8 v1.2.3) Fixed: Undefined reference: _sbrk_r Fixed: Wrongly-rendered color in the Custom Font Dialog Fixed: Panes cannot be resized (e.g. Workspace) Fixed: Unable to display on TPD-280-H Fixed: TextPushButton's AutoRepeat is expanded 10 times larger Added: Reconnection Interval Updated: Reduce the power consumption because of buzzer ================================================================= v2.08.03, Sep.26, 2014 (MiniOS8 v1.2.2) Fixed: Rotary switch = 1, "Search TouchPAD" finds no TPD-283. Fixed: IR series has no modules (e.g. IR-210) Fixed: Connection form needs no IP when Modbus TCP slave is used. Fixed: Access violation when chaning connection in the Devices form (dialog). Fixed: TouchPAD fails to communicate if remote devices start up late. Added: TPD-283H Added: Project Save As Added: TouchPAD Polls Modbus TCP gateway (connected with slaves) ================================================================= v2.08.02, Jul.28, 2014 (MiniOS8 v1.2.1) Fixed: communications in DCON protocol failed Fixed: Modbus TCP slave, net id range not = 0-255 Fixed: calibrate program of TPD-280H Fixed: Modbus RTU communications on TPD-430 Fixed: Line wrongly streches beyond the IDE screen Fixed: Project saving error which sometimes corrupts project files Fixed: Modbus TCP slave timeout error at function codes 15 and 16 Fixed: The max limit of the font, icpdas_cs_cyrillic (should be 64) Added: Custom font dialog to show only supported options Added: Change the saving of project configurations into the project file (.hxp) Added: tM_series_DCON series ================================================================= v2.08.00, May.29, 2014 (MiniOS8 v1.1.9) Fixed: missing commands (rungs) when adding comments in the Ladder Designer Fixed: cursor wrongly enters in the un-selected mode Fixed: TCP reconnection problem Added: support the new TPD-280H (similar to TPD-280 but better) Updated: gcc to 4.8.3 ================================================================= v2.07.00, Apr.18, 2014 (MiniOS8 v1.1.8) Fixed: the pin variable in the copying rung changes the one in the copied rung Fixed: list index out of bounds when saving files Fixed: custom colors of a Color Dialog cannot be remembered Fixed: hmi_FillCircle is recognized undefined in the PaintBoxOnPaint function Added: Russian support Added: program image checksum for download - TPD-280/TPD-283 NOT supported Added: hmi_PlaySong function for sound range C4 -- B7 - TPD-280/TPD-283 only G5 -- B7 - Refer to http://en.wikipedia.org/wiki/Piano_key_frequencies for more details. Updated: USB driver for Window 8 ================================================================= v2.06.01, Jan.03, 2014 (MiniOS8 v1.1.7) Fixed: newly-created project displays compile error always (not exist *.d, *.o) Fixed: sometimes the value of CheckBox's RefObject disappears after reloading project Fixed: Checkbox is wrongly set when switching pages in the frame of Ladder Added: Frames have default background picture to reduce the program size Added: Label have background picture Added: Line can change color Added: Serial number support ================================================================= v2.06.00, Oct.25, 2013 (MiniOS8 v1.1.6) Fixed: some combinations of digital/analog I/O (e.g. 16DIO) of Modbus TCP slave failed to be built Fixed: when binding tags (HMI -> Bind Tags), the table of tags cannot be scrolled down. Fixed: when the second master coming in, Modbus TCP slave drops the first one. Fixed: after removing devices, a project of Modbus TCP slave fails to build Added: support a new model, VPD-142/VPD-142N Added: the RadioButton widget Added: Auto-Repeat properties of TextPushButtons Added: Circular TextPushButtons (the Shape property) Added: multiple images support for TextPushButton, Slider, CheckBox Added: two new orientations, Portrait flip and Landscape flip, for 2.8" LCD Updated: Reference property renamed as GoToFrame ================================================================= v2.05.13, Jul.23, 2013 (MiniOS8 v1.1.5) Fixed: the initial and reconnection part in Modbus TCP Master Fixed: the screen turned on with the brightness of default value, not we specify Fixed: the slider may easily have a wrong touch position Added: the control of the LCD backlight brightness (0: darkest ~ 255: brightest) Added: support a new model, VPD-143/VPD-143N Added: support new orientations on TPD-430, TPD-433, TPD-432F, TPD-433F, VPD-143 Added: project backup (compression format: 7z) Updated: the calibrate demos for all models (10 pixel -> 6 pixel) Updated: I/O modules: LC_series, tET_series, tM_series ================================================================= v2.05.12, Apr.17, 2013 (MiniOS8 v1.1.4) Added: new API function: mrm_SetSilentInterval to set the silent interval of Modbus RTU master communications. Added: new API functions: Pack, Unpack to handle Modbus data Added: Modbus TCP Slave API functions and the corresponding part in HMIWorks (Note: TPD-283 does not support Modbus TCP slave because of its small memory size.) Fixed: The ch_count (channel count) argument of Modbus RTU master API functions should have an upper limit on it. Fixed: The transaction ID increment when Modbus TCP master communications Fixed: TCP server supports multiple connections Fixed: some buttons on the dialogs of HMIWorks disappear when setting the display to 125% or 150% (in the Control Panel) in the Windows 7 Fixed: sometimes hmi_TCPRead fails to receive data Fixed: calling mtm_RegisterTCP in the OnCreate event of a frame halts the system - added a new returning value (-2) of hmi_TCPNew, mtm_RegisterTCP, etc. Modified: the max number of supported sockets 1. TPD-283: 8 2. Other TouchPAD models with Ethernet port: 32 ================================================================= v2.05.11, Feb.01, 2013 (MiniOS8 v1.1.3) Fix: bug that hangs the system if adding comments in the Ladder Designer Modify: HMIWorks_Standard\bin\Modules - Added some new series: LC_serises , PM_series, DL_series_MRTUM, DL_series_DCON Add: Bind I/O tab for Select Variable for data exchanges. Fix: the display problem of the Inspector. ================================================================= v2.05.10, Dec.17, 2012 (MiniOS8 v1.1.3) Add: configuring options on the form which is opened from "HMI -> Project Configuration" - no longer selecting options at hmi_options.h Fix: uart_Open will fail after uart_Close (Updating MiniOS8 to v1.1.3 is required.) Add: supports multi-language development environment - now supports English and traditional Chinese ================================================================= v2.05.09, Sep.07, 2012 (MiniOS8 v1.1.2) Fix: Update to support malloc/free/sprintf functions. ================================================================= v2.05.08, Aug.24, 2012 (MiniOS8 v1.1.2) Add: Supports new functions to get/set configuration information in internal flash parameters area. // Get/Save the network configuration from/to internal flash parameters area. // ulDHCP: 0=Static IP, 1 = DHCP Enabled // ulIP, ulMask, ulGateway: IP, subnet mask, gateway address // return: always 1 (TRUE) int hmi_NetworkParamsGet(unsigned long* ulDHCP, unsigned long* ulIP, unsigned long* ulMask, unsigned long* ulGateway); int hmi_NetworkParamsSet(unsigned long ulDHCP, unsigned long ulIP, unsigned long ulMask, unsigned long ulGateway); // Get/Save NetID from/to internal flash parameter area. // The NetID is reserved for Modbus RTU slave function. unsigned long hmi_NetIDParamsGet(void); int hmi_NetIDParamsSet(unsigned long ulNetID); // Get current IP address used. unsigned long hmi_LocalIPAddrGet(void); // Convert the IP address to string // ulIP: IP address // szIP: String buffer (16 bytes including null terminator char). int hmi_IPToStr(unsigned long ulIP, char szIP[]); // Convert the string to IP address // It will be 0xFFFFFFFF (255.255.255.255) if the string is invalid IP address. unsigned long hmi_StrToIP(char szIP[]); Refer to "ConfigIP" demo program for more information. Add: Supports Runtime-Setting of IP/Mask/Gateway in the setup device page of the HMIWorks. This new option supports TPD-283/283U/433/433F and VPD-133 models. Need to update MiniOS8 v1.1.2 for supporting these new functions. ================================================================= v2.05.07, Aug.13, 2012 (MiniOS8 v1.1.1) Add: Supports VPD-132 and VPD-133 new models. VPD-132: 3.5'' LCD, RS-232/485 x1, RS-485 x1, XVBus x1 VPD-132: 3.5'' LCD, Ethernet (PoE) x1, RS-232/485 x1, RS-485 x1, XVBus x1 Add: Supports XV107, XV110i, XV111i XVBoards for VPD-132 and VPD-133. XV107 : DI *8, DO *8. XV110i: Isolated DI *16. XV111i: Isolated DO *16. Add: Add authenticate code on Modbus RTU slave. Need to update MiniOS8. Add: Supports broadcast address 0 on Modbus RTU slave function. When multiple TouchPADs are working as slave devices, the broadcast function can reduce the writing communications. Need to update MiniOS8. Fix: Make the Modbus RTU slave function working stable when RS-485 bus is heavy loading. Fix: HMIWorks may fail when user changes connection interface between serial and TCP/IP. Add some filter to prevent such change. Changing interface between serial and TCP/IP is only allowed when creating new interface, not in modification mode. ================================================================= v2.05.06, Jul.10, 2012 (MiniOS8 v1.1.0) Fix: Fix the insert sequence of images on the ObjectList property page. Add: Shows item index number of the images on the ObjectList property page. Add: Add I/O profile for tM-P4C4 and tM-AD5C. Add: Supports new model TPD-432F and TPD-433F. (New MiniOS8) TPD-432F: 4.3'' LCD, RS-485 x2, DC input. TPD-433F: 4.3'' LCD, RS-485 x1, RS-232 x1, DC input, Ethernet (PoE). Chg: Move the MRU list to UserConfig.ini file. So, users can easily backup the MRU list to new HMIWorks. ================================================================= v2.05.05, Jun.12, 2012 Fix: The static IP function may not work correctly in v2.05.03 and v2.05.04. Fixed. Fix: The tab key does not work in the text editor launched by double-clicking on the compile error ouput window. Fixed. ================================================================= v2.05.04, Jun.04, 2012 (MiniOS8 v1.0.9) Fix: TCP auto-reconnect feature sometimes may not work correctly. Fixed in the new MiniOS8 v1.0.9 of TPD-433 and TPD-283U, also in the new TPD-283 library. Fix: In Ladder mode, only the first Modbus TCP connection is accessible. Fixed. Fix: Disable the watchdog of TPD-283 before update firmware. This prevents TPD-283 is being reboot during firmware update. Fix: The image under [Pictures] folder cannot be previewed correctly. Fixed. Fix: Slider shows wrong scaling, fixed. Chg: Small modification on backlight control when wake up for TPD-430/433. Updated in the new MiniOS8 v1.0.9 of TPD-430/433. Add: Add io.hsf for LC-103 under M-7000 folder. DI x1, DO x3. Add: ObjList setting window now accepts drag&drop to adjust the item sequence. Multiple selection is also supported. Supports "append" and "insert" option for deciding the position of the new added items. ================================================================= v2.05.03, May.03, 2012 (MiniOS8 v1.0.8) Fix: Very few times TPD-430 may show blank screen when startup. Fixed. The MiniOS8 of TPD-430 must be updated to v1.0.8 for fixing this. Fix: Change background color immediatly in design time after select an new color, instead of in runtime of TouchPAD. Fix: Compile shows error if I/O tag is dragged to the frame when image source is on [Pictures] library. Fixed. Fix: DHCP function for TPD-283U may not work correctly. Fixed. Chg: Modify the scaling function blcok to have internal 10,000 based computation. This prevent wrong computation when dividing a very large number, especial when using K-type themocouple. Add an new ScalingS16 function block. This allows input a 16-bit short integer that would offten used in Modbus protocol. Add: Add "Import Images" (into [Pictures] library) function for batch operation. Now, we support GIF/JPG/BMP/ICO/WMF/EMF image formats. Add GIF support when loading a single picture. Add: Add MRU list in the welcome form. So, we can select one project from the list more easily. Add "Remove nonexistent file" menu item to check and remove the nonexistent MRU list. Add: Add Enabled property for BitButton, TextButton, ObjButton, HotSpot, CheckBox, Slider widgets. macro functions... void LabelEnabledSet(tLabel *pWidget, BOOL bEnabled); BOOL LabelEnabledGet(tLabel *pWidget); void SliderEnabledSet(tSlider *pWidget, BOOL bEnabled); BOOL SliderEnabledGet(tLabel *pWidget); void CheckBoxEnabledSet(tCheckBox *pWidget, BOOL bEnabled); BOOL CheckBoxEnabledGet(tLabel *pWidget); void HotSpotEnabledSet(tHotSpot *pWidget, BOOL bEnabled); BOOL HotSpotEnabledGet(tLabel *pWidget); // These macro functions are design for TextPushButton with text only (no ObjList). void TextButtonEnabledSet(tTextButton *pWidget, BOOL bEnabled); BOOL TextButtonEnabledGet(tLabel *pWidget); // These macro functions are design for TextPushButton with ObjList (images) only. void ObjButtonEnabledSet(tObjButton *pWidget, BOOL bEnabled); BOOL ObjButtonEnabledGet(tLabel *pWidget); void BitButtonEnabledSet(tBitButton *pWidget, BOOL bEnabled); BOOL BitButtonEnabledGet(tLabel *pWidget); Add Visible property for Label, BitButton, TextButton, ObjButton, HotSpot, CheckBox, Slider widgets. Note: WidgetPaint(WIDGET_ROOT) must be used to redraw full screen after change the visible status of widgets. Don't use this feature too much. macro functions... void LabelVisibleSet(tLabel *pWidget, BOOL bVisible); BOOL LabelVisibleGet(tLabel *pWidget); void SliderVisibleSet(tSlider *pWidget, BOOL bVisible); BOOL SliderVisibleGet(tSlider *pWidget); void CheckBoxVisibleSet(tCheckBox *pWidget, BOOL bVisible); BOOL CheckBoxVisibleGet(tCheckBox *pWidget); // These macro functions are design for TextPushButton with text only (no ObjList). void TextButtonVisibleSet(tTextButton *pWidget, BOOL bVisible); BOOL TextButtonVisibleGet(tTextButton *pWidget); // These macro functions are design for TextPushButton with ObjList (images) only. void ObjButtonVisibleSet(tObjButton *pWidget, BOOL bVisible); BOOL ObjButtonVisibleGet(tObjButton *pWidget); void BitButtonVisibleSet(tBitButton *pWidget, BOOL bVisible); BOOL BitButtonVisibleGet(tBitButton *pWidget); Add: Supports TPD-433 new model with 4.3'' LCD, Ethernet (PoE) x1 and RS-485 x1. ================================================================= v2.05.02, Apr.06, 2012 (MiniOS8 v1.0.7) Fix: Sometimes the screen is partially overlayed. Modify the program to reduces this issue. Fix: Sometimes the OnRelease event of TextPushButton, BitButton and HotSpot widgets is missing. Fixed. Fix: Add Mask/Gateway field on the Setup Ethernet Device form. Add: Add callback functions for TouchLCD idle/wakeup, thus users can have his own screen saver application instead of just blank. // Prototype for the TouchLCD idle/wakeup callback functions. typedef void (*PFN_VOIDCALLBACK)(void); // This function is used to configurate the callback function when TouchLCD // idle/wake up. This function disables the predefined LCD auto-off setting. // ulTimeoutMS: Timeout value for entering the idle mode. Unit is ms. // pfnIdle : Callback functions when idle (no touch). // pfnWakeup : Callback functions when wake up (touched). void hmi_LCDIdleSetCallback(unsigned long ulTimeoutMS, PFN_VOIDCALLBACK pfnIdle, PFN_VOIDCALLBACK pfnWakeup); // This function is **optionally** used to clear the TouchLCD idle state, // enable the next idle event and callbacks. // // Sometimes the TouchPAD may need to change the frame to user-defined // alarm page when in idle mode (no touch). ==> Remember it's still in idle mode. // After the alarm off, we may want the TouchPAD go to idle mode (no touch) // again but it failed since it is already in the idle mode (no touch). // For this issue, we need to clear/reset the idle state (no touch) and enable the // idle event. Then, this function is used. void hmi_LCDIdleStatusReset(); MiniOS8 of TouchPAD must be updated to v1.0.7 for supporting this function. Add: Add macro SliderRangeGet(pWidget, lMinimum, lMaximum) to get the slider range defined at design-time. // The lMinimum/lMaximum are not pointers, while the pWidget is a pointer. void SliderRangeGet(tWidget* pWidget, long lMinimum, long lMaximum); Add: Supports TPD-283U. Ethernet x1, RS-485 x1 and dual power input (PoE & DC). ================================================================= v2.05.01, Feb.29, 2012 Add: Add InRange and OutRange function blocks in default category. InRange : Returns true when value is in the range (Min - Max). OutRange: Returns true when value is out of the range (< Min or > Max). Fix: When add a function block and delete it immediately, the HMIWorks reports access violation. Fixed. Fix: Virtual Tags under folers may be lost when opening the project. Fixed. Fix: "Center" alignment of Label does not work correctly. Fixed. (Text widget does not support this yet.) ================================================================= v2.05.00, Feb.24, 2012 (MiniOS8 v1.0.6) Note: Users have to update MiniOS8 of TouchPAD to v1.0.6. Add: Add mtm_ series functions for Modbus TCP master function to replace the old mbm_ series functions. The mbm_ series functions are still available for compatibility. This new series functions support NetID and Timeout parameters. When accessing devices via a gateway connection, the NetID can be dnyamically set. The mbm_RegisterByHandle() function is not available in mtm_ series functions, since it is required. The timeout parameter also can be different depending on remote device's performance. // modbus_id: NetID to bind with the connection. // This is used to make it compatible with mbm_ series functions. // If the mbm_ series functions are not called, then this parameter can be zero. // modbus_ip: Remote IP address // modbus_port: Remote TCP port number, usually is 502 for Modbus TCP. // // Create TCP/IP socket connection tHandle mtm_RegisterTCP(DWORD modbus_ip, int modbus_port); // Create TCP/IP socket connection, and bind the NetID with it. tHandle mtm_Register(int modbus_id, DWORD modbus_ip, int modbus_port); // Delete the TCP/IP socket connection by handle. BOOL mtm_Unregister(tHandle h); // Read/Write DIO // These new DIO functions are using char-array as parameter, instead of 32-bit DWORD type. // So, the max. DIO channels are expended to about 1,900 points, instead of limited on 32 channel. // // h : TCP/IP hanel value // NetID : Modbus TCP Network ID (usually 1 ~ 247) // addr : Starting address of the I/O points // ch_count: Number of I/O channels to be read/write. // pcData : I/O status in char-array. // timeout : TCP/IP timeout value in ms. Default is 200 ms. // When accessing more I/O points, larger timeout value may be required depending on I/O device's performance. // return : TRUE = OK, FALSE = ERROR or TIMEOUT BOOL mtm_WriteDO(tHandle h, int NetID, int addr, int ch_count, char *pcData, DWORD timeout); BOOL mtm_ReadDI( tHandle h, int NetID, int addr, int ch_count, char *pcData, DWORD timeout); BOOL mtm_ReadDO( tHandle h, int NetID, int addr, int ch_count, char *pcData, DWORD timeout); // Read/Write AIO // // h : TCP/IP hanel value // NetID : Modbus TCP Network ID (usually 1 ~ 247) // addr : Starting address of the I/O points // ch_count: Number of I/O channels to be read/write. // pwData : I/O status in WORD-array. // timeout : TCP/IP timeout value in ms. Default is 200 ms. // When accessing more I/O points, larger timeout value may be required depending on I/O device's performance. // return : TRUE = OK, FALSE = ERROR or TIMEOUT BOOL mtm_WriteAO(tHandle h, int NetID, int addr, int ch_count, WORD* pwData, DWORD timeout); BOOL mtm_ReadAI( tHandle h, int NetID, int addr, int ch_count, WORD* pwData, DWORD timeout); BOOL mtm_ReadAO( tHandle h, int NetID, int addr, int ch_count, WORD* pwData, DWORD timeout); Add: Modify the I/O script (for PET-7000/I-7000/M-7000 series) to support timeout setting. The I/O script files (io.hsf) of PET-7000 series is modified to use mtm_ series functions too. Add: Add Modbus RTU Slave funciton in Ladder mode. Now, the TouchPAD (TPD-280/280U/430 and VPD-130) supports this function. To enable the slave function in ladder mode: 1. add a device 2. select TouchPAD as "Modbus RTU Slave" 3. select "Device Series" as "Profiles(MRTUS)" 4. set it connection 5. select a profile in the "model name" field. (AIO16, AIO32, DIO16, DIO16AIO8, DIO32, DIO32AIO16, DIO64, DIO64AIO16) 6. assign a devcie name to it. 7. assign a Modbus NetID to it. Related changes are including... Add VAR_UPDATE_DIO_BUF_BYTE, VAR_UPDATE_AIO_BUF macros for working with Modbus RTU slave function in Ladder mode. Change the DioDirty and AioDirty to DWORD type. char* mrs_GetDIOBuf(unsigned char NetID, DWORD *DioDirty); WORD* mrs_GetAIOBuf(unsigned char NetID, DWORD *AioDirty); Add mrs_GetIOStatus function for getting Modbus RTU slave IO status. // The DIO/AIO status flag is cleared after calling this function. // // NetID : NetID of the TouchPAD (in slave mode). // Return: The DIO and AIO status in DWORD value. // bit 0 = 1 : Dirty/updated by remote client. // bit 1 = 1 : Dirty/updated by remote client. DWORD mrs_GetIOStatus(unsigned char NetID); Change connection interface from "UART" & "TCPIP" to "COM1", "COM2", "COM3", "XBus", "CAN" and "TCPIP". Change protocol from "UART", "MTCP" to "DCON", "MTCPM", "MTCPS" (not supported yet), "MRTUM", "MRTUS". Add: Add callback function (max. 5 functions) in MiniOS8 and lib. These functions are used to support Modbus RTU slave function in Ladder mode. After register the callback function, these functions will be executed about every 10 ms. // fun : user's callback function wake up about every 10 ms. // iParam : Parameter pass to user's callback function when called. // iRemove: Index number of the callback function to be removed. // This index function is returned when call hmi_AddHighSpeedCallback(). // return : -1 = Error, // 0 ~ 4 = index of the removed function. typedef int (*PFN_HSCallback)(int iParam); int hmi_AddHighSpeedCallback(PFN_HSCallback fun, int iParam); int hmi_RemoveHighSpeedCallback(int iRemove); *** Warning: *** The TouchPAD is single-task system. User's program or callback function should not block the system for a long time. Add: Show message to update MiniOS8 when HMIWorks is first time running. Add: Show warning message before download firmware to TPD-280 via RS-485. All other RS-485 devices should be offline, to prevent malfunction and prevent downloading failure. Fix: Fix a bug in TCP receive function that does not process buffer correctly. Add: Add hmi_TCPTimeoutBeep() for debugging. // Enable/Disable beep when TCP timeout or error. // iConfig : 0 = Disable, others = Enable void hmi_TCPTimeoutBeep(int iConfig); Add: Add HMI_TCP_TIMEOUT_BEEP configuration in include/hmi_options.h. // This is used to enable/disable the beep when TCP timeout/error. // This should be used for debug only. // This feature is supported for TPD-283 only. #define HMI_TCP_TIMEOUT_BEEP 1 // 0 = Disable (default), 1 = Beep when TCP timeout/error. Change: Change the version of MiniOS8 to v1.0.6. ================================================================= v2.04.06, Feb.06, 2012 (MiniOS8 v1.0.5) Note: For working with HMIWorks v2.04.06, the TPD-280U/430 and VPD-130 models have to update MiniOS8 to v1.0.5, Feb.06, 2012 or last. Add: Add new functions that supports timeout parameters in ms unit. int hmi_TCPReadEx(tHandle h, unsigned char *buf, int buf_len, DWORD timeout); int hmi_TCPSendCmdEx(tHandle h, unsigned char *send_data, int send_data_len, unsigned char *recv_data, int recv_data_len, DWORD timeout); Fix: The TX/RX buffer length is sometimes wrong computed, and can sometimes cause timeout when receive. Fixed in MiniOS8 v1.0.5. Fix: Tune the performance of the Modbus RTU Master/Slave API functions. Now, the average response time is about 30 ms for the Modbus RTU slave function. ================================================================= v2.04.05, Jan.05, 2012 Add: Add comment function in Lader Designer. Fix: Improves the stability of the slider widget. New functions are added: Press the slider widget 500 ms to lock it, click again to unlock. Double-click the slider widget to lock it, click again to unlock. Fix: Fix buffer overflow bug in the hmi_TCPRead() function. ================================================================= v2.04.04, Dec.13, 2011 (MiniOS8 v1.0.4) Note: The MiniOS8 of TPD-280U/430 and VPD-130 must be updated to version v1.0.4 (Dec.13, 2011) or last. This is required when using HMIWorks v2.04.04, or the firmware will not work. Change: Improve the speed of drawing background for TPD-280U/430 and VPD-130. The MiniOS8 must be updated to v1.0.4 (Dec.13, 2011). Add: Add new function in Code Editor. Support Indent/UnIndent, Comment/Uncomment under edit menu. Add: Add uart_Purge() function for TPD-280/280U/430 and VPD-130. The MiniOS8 must be updated. // 0 = no clear, 1 or other values = clear the buffer // ClearTx is for output buffer, while the ClearRx is for input buffer. // return: none int uart_Purge(HANDLE hPort, int ClearTx, int ClearRx); Fix: Timer widget executes callback function in wrong interval after enable/disable the timer. Fixed. Add: Add TimerIntervalSet() and TimerIntervalGet() fucntions. // Get the timer's target value in ms unsigned long TimerIntervalGet(tTimer *pTimer); // Reset the timer's target value in ms. (The internal tick count is also reset) void TimerIntervalSet(tTimer *pTimer, unsigned long ulInterval); For example: TimerIntervalSet(&Timer10, 2000); ulVal = TimerIntervalGet(&Timer10); ================================================================= v2.04.03, Nov.29, 2011 Change: Modify the Code Editor to support tab (3 chars). Add: Add some functions in the Code Editor. Show line numbers. Add Find/Find Next/Find Previous/Replace functions. Add Goto line function. Add: Supports OnRelease event for bitButton, TextPushButton, HotSpot. Thus user can write his code for the button release event. ================================================================= v2.04 Beta 2, Nov.23, 2011 Add: Supports Modbus RTU Slave functions in C code. For TPD-280/280U/430 and VPD-130. // NetID : 1 ~ 247 // Each char in pDioBuf contains 8-ch DIO data. // The spaces pointered by DioBuf and AioBuf are allocated by user. // Currently, we support only 1 slave device in a TouchPAD. // Set 0 to both DIO_ch_count and AIO_ch_count to unregister that slave device. // Return: TRUE = OK, FALSE = Parameter Error. BOOL mrs_RegisterSlave(unsigned char NetID, WORD DIO_StartAddr, WORD DIO_count, char *pcDioBuf, WORD AIO_StartAddr, WORD AIO_count, WORD *pwAioBuf); // Process the Modbus RTU command (suggested in each 30 ms). // Return: bit 0 = DIO is updated, bit 1 = AIO is updated. // bit 31 = Error (0x8000 0000), bit 8 = Read DI, bit 9 = Read AI unsigned long mrs_ProcessCmd(HANDLE hPort); Add: Supports MRU (Most Recently Used) project files list under the "Reopen" menu item. Add: Add Invert01 function block in math category. It inverts the VAR value from 0 to 1, and 1 to 0. Add: Add Set_Write_Flag function block in system category. It sets the write flag of a VAR (touch it), and cause it to update the remote device again with the same value. This can be used when the remote device is reboot and need to be initialized again. Add: Supports M-7019R, M-7019Z modules. Fix: Allowing user to change the mapped function of a event to a new function. This still useful when using widget array to share a single function. To change a linked function name, user have to double-click on the new function in Code Editor. Single-click (selection) will not cause change. Fix: Function Block "BacklightSet" supports 0 and 255 only. Fix the function block to support brightness 0 ~ 255 for TPD-430. ================================================================= v2.04 Beta 1, Nov.16, 2011 Add: Add BacklightSet function block in system category. This should be used for all TochPAD series. The version of MiniOS8 (TPD-280U/430 and VPD-130) must be Aug.15, 2011 or last. Add: Add some Valve pictures in Misc library. Add some Boiler, Robot and Conveyor pictures in Machine library. Add: Add new function FloatToStr(). // buf : String buffer allocated by user // fVal : Floating value assigned by user // Precision: 0 ~ 5 assigned by user // Return : 0 (false), 1 (OK) int FloatToStr(char *buf, float fVal, int precision); example: static char szMsg[20]; FloatToStr(szMsg, -10503.9995, 3); LabelTextSet(&Label4, szMsg); // This shows -10504.000 on Label4 Fix: Compile error when using Modbus RTU DI only. Fixed. Fix: Math functions (such as log/exp/pow...) causes link error. Fixed. Fix: The BitButton sometimes shows garbage image. Fixed. Fix: The data format of serial port cannot be changed correctly. Fixed. The MiniOS8 of TPD-280U/430 and VPD-130 must be updated (Oct.24, 2011) for it. The TPD-280.a library file must be updated for it. Fix: Last frame may still existing when using HotSpot to change page. Fixed. Change: Check project location if contains invalid chars. Show error message when creating project in souch folder path. We would suggest to use A ~ Z, a ~ z, 0 ~ 9, _ chars. Change: Check the IP address assigned for the TouchPAD. The 4th number cannot be 0 (net) and 255 (broadcast). ================================================================= ================================================================= v2.03 (Standard Release), Oct.12, 2011 (MiniOS8 v1.0.3) Note: It is required to update MiniOS8 of TPD-280U/430 and VPD-130 to v1.0.3 when using HMIWorks v2.03, since the internal flash data structure has something different. Change: Update MiniOS8 of TPD-280U/430 and VPD-130 to version v1.0.3. Change: Update calibrate program for TPD-280/283 and TPD-280U. Change: Change the name of "PanelKey" function block in VPD-130 category to "GetPanelKey". Change: Move "Equal" and "OnChange" function blocks from user_define to default category. Change: Small change in settings of the USB driver. Fix: New tag may not be saved and causes missing. Fixed. Fix: The OnClick event name can be wrong changed just by selecting another function before exiting the Code Editor. Fixed. Fix: Show message when a function block is not well configured, not just skip it. Fixed. Fix: Some function blocks missing the write-flag, and cause DO does not work. Fixed. Fix: Cannot insert Coil in some rung. Fixed. Fix: Cannot copy a rung in the Ladder Designer, fixed. Fix: Show message when download failed, not just disappered. Fixed. Add: Add Function Block "Get_Date_Time" and "Set_Date_Time" in "system" category. ================================================================= v2.03 beta 6, Sep.20, 2011 Change: Change the default widget name without the 'Widget' string. These make the widget name shorter (nice for C programmer when typing). CheckBoxWidgetxx, LabelWidgetxx, SliderWidgetxx, HotSpotWidgetxx ==> CheckBoxxx, Labelxx, Sliderxx, HotSpotxx. These class names for widgets are not changed, and have no compatibility issue between old and new versions. Add: Support creating new connection when adding device. Select "Create New..." in the connection drop-down list box to bring up the ConnectionForm. Add: Auto-assign device name after selecting a model name. Change: Filter off the module types in Device form preventing wrong selection. For example: TPD-283 supports modules with Modbus TCP protocol only. Change: Supports more pictures for CheckBox widget (in ladder mode). Use a virtual tag (linked in TagName) to indicate which picture should be display (in the ObjList). The valid range of the index (virtual tag value) should be between 0 and (picture-count -1), else the index will be equal to (virtual-tag-value mod picture-count). ================================================================= v2.03 beta 5, Sep.16, 2011 Change: Update the USB driver to support 64-bit Windows 7/XP. Add: Add hmi_UserParamsGet() and hmi_UserParamsSet() functions to get/set the user parameter area in the MCU internal flash. There is write/erase times limitation, and does not suggested to use it frequently. The user parameter area is 256-byte size, and the iOffset + iSize cannot larger than 256. // iOffset : 0 ~ 255 // iSize : 0 ~ 255 // pcBuffer: User's data buffer // return : 1 (true) = OK, 0 (false) = Failure int hmi_UserParamsGet(int iOffset, int iSize, char *pcBuffer); int hmi_UserParamsSet(int iOffset, int iSize, char *pcBuffer); Change: The g_sParameters.UserParamsData area is no more available. Users should use the new hmi_UserParamsGet() and hmi_UserParamsSet() functions instead. Change: The hmi_UserFlashRead(), hmi_UserFlashWrite() support 1 block only. Users should use new hmi_UserFlashReadEx() and hmi_UserFlashWriteEx() functions instead. Add: Supports user configuration to enable read/write serial flash with larger range in TPD-280U/430 and VPD-130 models. Warning: 1. The serial flash is used to store user's application firmware. It can easily cause conflict if you don't know it very well. Users have to take care about the firmware size and the flash address. We would suggest users to leave 512 KB space between application and user's data area. 2. The serial flash has write/erase times limitation, and cannot be used frequently. These functions are for advanced users only. 3. These functions are working in block-operation. Users have to erase that block (to all 0xff) before write/update. Add new functions hmi_UserFlashConfig(), hmi_UserFlashReadEx() and hmi_UserFlashWriteEx(). // Configure how many number of serial flash blocks can be read/write by users. // Each block is 4 KB size, default is 1 block (4 KB) for users. // iNumberOfSectors: 1 ~ 1792 blocks = 4 KB ~ 7 MB (0 block = disable) // 1 block = 4 KB, 2 blocks = 8 KB, 4 blocks = 16 KB, 8 blocks = 32 KB // 256 blocks = 1 MB, 512 blocks = 2 MB, 768 blocks = 3 MB, 1024 blocks = 4 MB // 1280 blocks = 5 MB, 1536 blocks = 6 MB, 1792 blocks = 7 MB. // return: Number of blocks int hmi_UserFlashConfig(unsigned long iNumberOfBlocks) // Read data from the specified block of ther serial flash. // iBlock : Block index from 0 to iNumberOfBlocks - 1. // iOffset: Offset from user's data block in flash (0 ~ 4095) // iLength: Data length to read (1 ~ 4096) // pBuffer: Data buffer // return : Data length read, 0 (false) = failure unsigned long hmi_UserFlashReadEx(unsigned long iBlock, unsigned long iOffset, unsigned long iLength, char *pBuffer); // Write data to the specified block of ther serial flash. // iBlock : Block index from 0 to iNumberOfBlocks - 1. // iOffset: Offset from user's data block in flash (0 ~ 4095) // iLength: Data length to read (1 ~ 4096) // pBuffer: Data buffer // return : Data length written. unsigned long hmi_UserFlashWriteEx(unsigned long iBlock, unsigned long iOffset, unsigned long iLength, char *pBuffer); Change: The hmi_UserFlashErase() function now supports block-index parameter. // Erase the specified serial flash block to all 0xFF. // iBlock: 0 ~ iNumberOfBlocks -1 (configured by user) // return: TRUE = Success, 0 (FALSE) = Failure int hmi_UserFlashErase(unsigned long iBlock) ================================================================= v2.03 beta 4, Sep.14, 2011 Add: Shows "32-bit" or "64-bit" of Windows version in AboutBox. Add: Add OS/CPU/Project-Folder information in the project file for reference. Add: Supports thirdparty Modbus RTU devices by user-defined DI/DO/AI/AO. Change: Change the default UART timeout from 100 to 200 ms. The MiniOS8 of TPD-280U/430 and VPD-130 must be updated. ================================================================= v2.03 beta 3, Aug.26, 2011 Change: Rename some pictures, and add more pictures. Change: Change the LCD backlight auto-off time to 30 seconds. Add: Draw "X" in HMIWorks when the picture file is not exist. So we can find out the missing part easily in design time. Add: Check file existing and ask to overwrite when add picture into library. Add: Show picture size M x N, Z KB as reference under the preview box. Add: Enable drag&drop picture from library list directly, not only from the picture preview box. Fix: Update the io.hsf file of the PM-2133 device. Now, it works for different NetID instead of 1. ================================================================= v2.03 beta 2, Aug.23, 2011 Add: Add link to the [Pictures] folder in the project. So, each project can have its own pictures easily. Add: Add "Light(M), Light(S), Controller(M), Controller(S)" picture folders. Add some more pictures. Change: Move the "arrow" pictures into "Arrow(M)" and "Arrow(S)" folders. ("M" for middle size, "S" for small size.) Remove "sanlien, DL-100, DemoRoom, Integrated_Machine" picture folders. Note: Users have to assign new pictures for their projects. ================================================================= v2.03 beta 1, Aug.17, 2011 Add: Check the program image size and show error when the size is too large. Add: Auto fix the project name when the name contains space or special chars. Add: Auto-select a Landscape/portrait mode when creating new project. Add: Add tool information in the project file for reference. For example: Add: Supports screen saver function to auto-off the LCD backlight when idle. Configure the include\hmi_options.h file to enable this function. #define HMI_LCD_AUTO_OFF 0 // 0 = disable, 5 ~ 300 seconds #define HMI_LCD_ON_BEEP 1 // 0 = disable, 1 = Beep when LCD backlight is going on #define HMI_LCD_OFF_BEEP 1 // 0 = disable, 1 = Beep when LCD backlight is going off Note: The MiniOS8 of TPD-280U/430 and VPD-130 must be updated to Aug.15, 2011 or last. The MiniOS8 is included in bin\boot\(ModelName) folders. Fix: The uart_SetTimeout() does not work correctly, fixed. Note: The MiniOS8 of TPD-280U/430 and VPD-130 must be updated to Aug.15, 2011 or last. Fix: Buttons sometimes may not back to normal status, fxied. Note: The MiniOS8 of TPD-280U/430 and VPD-130 must be updated to Aug.15, 2011 or last. Fix: The CheckBox draws X in wrong place, fixed (TPD-280/283/280U). Note: The MiniOS8 of TPD-280U must be updated to Aug.15, 2011 or last. Fix: When calling hmi_GetDateTime() or hmi_SetDateTime() functions, compile operation fails. Fixed. Fix: Some I/O tags cannot work correctly under ladder mode. Fixed. Fix: M-7018Z's IO.hsf supports 8 channels only, fix it to 10 channels. Fixed. Add: Supports M-7017 module. ================================================================= ================================================================= v2.02 (Standard Release), Aug.02, 2011 Note:**************************** 1. This version of HMIWorks requires users to update the MiniOS8 of the TPD-280U/430 and VPD-130 to Jul.25, 2011 or the last version. 2. Users have to fix their ladder programs manually, since some of the pin names of the function blocks are changed. **************************** Fix: Improves the responsability of the HotSpot, BitButton/TextPushButton. Fix: Improves the responsability of the touch screen of the TPD-430. Add: Add copy/paste features in the Ladder Designer. Thus, we can copy a rung and and paste (insert) it to another line. Add: Add hmi_ConfigBeep(unsigned short usFreq, unsigned short usTicksMS) for TPD-430. usFreq: Frequency value of the Beep between 30 ~ 4,000. usTicksMS: Time value of the Beep between 1 ~ 30,000. Add: Add hmi_BacklightSet(unsigned char ucBrightness) for TPD-430. ucBrightness: 0=Dark... 255=Light Add: Add new configuration in the hmi_options.h for TPD-430. #define HMI_BEEP_FREQ 800 // The valild value should be 30 ~ 4,000 Hz (default 800 Hz). #define HMI_BEEP_MS 25 // The time length to beep (default 25 ms). #define HMI_LCD_BRIGHTNESS 255 // 0=Dark ... 255=Light #define HMI_STARTUP_LED 0 // 1=Enable red LED, 0 = Disable red LED ================================================================= v2.02 beta 3, Jul.25, 2011 Add: Set connection-name automatically. Disable the protocol selection and choose the correct one automatically. Fix: When I/O scan time (default 100 ms) is smaller than I/O timeout value, the system can than be blocked and causes no response to the touch screen. Modify the system to improve the responsability of the touch screen. Add: Add hmi_options.h for new option settings. The file is located in C:\ICPDAS\HMIWorks_Standard\include folder. This option file is effective for all projects. For single project options, users can copy the file and put it in the project folder. The modification to the option file in the project folder will be effecitve for that project only. Add: Supports watchdog function for TPD-280/283/280U/430 and VPD-130. Now, users can enable the hardware watchdog just by change the settings in the hmi_options.h file. #define HMI_WDT_ENABLE 0 // 1 = Enable, 0 = Disable (default) #define HMI_WDT_TIMEOUT 2000 // about 2,000 ms to reboot (Valid 1,000 ~ 50,000 ms) // about 500 ms to clear WDT & preventing reboot #define HMI_WDT_CLEAR (HMI_WDT_TIMEOUT / 4) A simple C code as following can be used to test the watchdog function. while (1) ; // infinite loop to block the system Add: Supports startup-delay before enable the LCD, this reduces the power requirement at boot time. This may be used when small power supply is installed for the TouchPAD device. Users can enable this feature just by change the setting in the hmi_options.h file. #define HMI_STARTUP_DELAY 0 // delay ms, 0 = no delay Add: Supports startup-beep and touch-beep settings in the hmi_options.h file. #define HMI_STARTUP_BEEP 1 // 1 = Beep when startup, 0 = disable #define HMI_TOUCH_BEEP 0 // 1 = Beep each touch, 0 = disable Add: Supports auto-reconnect for Modbus TCP. When I/O devices is online again, it may takes about 5 seconds to auto-reconnect. Fix: When change the frame pages, the DO may be output again with the same value. fix it. Add: Add hmi_DelayUS() function for delay a while. The unit is us. Change: Gives more reasonable pin names for some function blocks. Note: Users have to fix their ladder programs manually. converter\KTYPE in1 ==> AIValue out1 ==> IntResult out2 ==> DecResult Timer\TON, TOFF value ==> DelayMS user_define\GotoFrame in ==> FrameNum user_define\CurrentFrame out ==> CurrFrame user_define\Timeout_To_Action in ==> msec user_define\WORD2Float in1 ==> inWordL in2 ==> inWordH in3 ==> inGain1K out1 ==> outFloat user_define\Float2WORD in1 ==> inVal in2 ==> inDiv1K out1 ==> outWordL out2 ==> outWordH user_define\WORD2DWORD in1 ==> inWordL in2 ==> inWordH out1 ==> outDWORD user_define\DWORD2WORD in1 ==> inDWORD out1 ==> outWordL out2 ==> outWordH Fix: In standard C programming mode, the CheckBox status does not correctly passed into the callback function. The bSelected parameter is always a wrong value. Fix the problem in this version. ================================================================= v2.02 beta 2, Jun.23, 2011 Fix: Label widget may shows wrong fixed point decimal value, fix it. Add: Add VAR_GET_WRITE_BYTE() function to simplify the writing of IO script. if( VAR_FLAG_IS_WRITE($DO0) ) iWrite++; if( VAR_VALUE($DO0) ) v_do |= (1<<0); ==> iWrite += VAR_GET_WRITE_BYTE(&v_do, $DO2, 2); Fix: Clear the TCP input buffer before sending Modbus TCP commands. This reduces errors when I/O device sometimes have small delay in reponses. ================================================================= v2.02 beta 1, Jun.16, 2011 Add: Modbus RTU master API functions in library for TPD-280/280U/430 and VPD-130. BOOL mrm_ReadAI( HANDLE hPort, int NetID, int StartAddress, int channel_count, WORD *data); BOOL mrm_ReadAO( HANDLE hPort, int NetID, int StartAddress, int channel_count, WORD *data); BOOL mrm_WriteAO(HANDLE hPort, int NetID, int StartAddress, int channel_count, WORD *data); // Each AI/AO channel uses a WORD type to store a data. BOOL mrm_ReadDI( HANDLE hPort, int NetID, int StartAddress, int channel_count, char *data); BOOL mrm_ReadDO( HANDLE hPort, int NetID, int StartAddress, int channel_count, char *data); BOOL mrm_WriteDO(HANDLE hPort, int NetID, int StartAddress, int channel_count, char *data); // Each 8-channel DI/DO uses a char to store the data. Channel 0 ~ 7 are stored in data[0], channel 8 ~ 15 are stored in data[1], ... Add: Add M7K_AnalogHexToLongK() function to convert the binary data of the M-7000 to readable value. The value is retured in *1000. The function is used for M-7000 series modules, not for other devices. long M7K_AnalogHexToLongK(char M7K_ModuleID[], short TypeCode, short HexVal); // return value * 1000 The M7K_ModuleID is passed in string format, for example: "7015" (for M-7015 module). The TypeCode indicates the used value range, then the function can know how to convert it. Refer to the TypeCode.txt in the M-7000 folder for detailed type-code and value ranges. The HexVal is the raw data returned from the M-7000 in 2'complement format. Fix: Clear the serial input buffer before sending DCON or Modbus RTU commands. TPD-280 should update the library, while the TPD-280U/TPD-430 should update the MiniOS8. Change: Change the name of the pop up menu items. Edit/Delete I/O Channel ==> Edit/Delete I/O Tag Edit/Delete Virtual Channel ==> Edit/Delete Virtual Tag Add: Add FloatToU32() and U32ToFloat() functions for converting the data format. ================================================================= ================================================================= v2.01 (standard release) Jun.03, 2011 Add: Add hmi_GetTickCount() function that returns system tick count in ms unit. The resolution is about 10 ms. This function is based on fixed time interval of 100 ticks/second. Change: Remove the DemoRoom2 graphic library. Add: Add Button(M), Button(S), Machine(M), Machine(S), Misc(M), Misc(S), Switch(M) and Switch(S) graphic libraries. The (M) stands for middle size, while the (S) stands for small size. Add: Add math/Scaling function block. Add: Add CPU information in the AboutBox of the HMIWorks. ================================================================= v2.01 beta 7 May.27, 2011 Fix: Check the serial ports by "ReadOnly", to prevent requiring administrator account under Windows 7. Change: Change some menu items to make it more readable. Add: Put the HMIWorks Standard in the exception list of firewall of the Windows XP SP2 (and lastest). This prevents the system to block off the UDP search from the HMIWorks. Add: Add batch files for the TPD-280 calibration programs. User can select COM1 ~ COM9 to download the program when using the batch file. Add: Add new functions for the timer widget. // 0 (FALSE) = disable, 1 (TRUE) = Enable int TimerEnabledGet(tTimer *pTimer); void TimerEnabledSet(tTimer *pTimer, int flag); Add: PET-7052, PET-7005. ================================================================= v2.01 beta 6 May.12, 2011 Fix: The portrait calibration program of the TPD-280U does not work correctly. Fix the portrait calibration program. The portrait and landscape data should be re-calibrated. Note: TPD-280U should be released soon! Fix: The MiniOS8 has debug message output from the serial port. Fix it for TPD-280U, TPD-430 and VPD-130. Note: The TPD-280U, TPD-430 and VPD-130 models should be released soon! Change: Move the write operation to first. Skip read operaion when there is writing operation in this loop. Add: Check the connection and device name strings. The valid chars are a~z, A~Z, 0~9 and _. The name cannot use digital as leading char. ============================================================================ v2.01 beta 5 (May.03, 2011) Add: TPD-430 now supports hmi_UserFlashErase(), hmi_UserFlashRead() and hmi_UserFlashWrite() functions. The user flash space is 4KB size, and is the lastest sector of the external flash disk of the TPD-430. The flash has 100,000 erase/program cycles limitation. For more information, see TPD430_UserFlash demo program. Change: Modify the OS of TPD-430, TPD-280U, VPD-130 to record AI values (DCON protocol) even the AI values are +9999.9 (for error). Add: Check the loaded project if the ENABLE_DI, ENABLE_DO, ENABLE_AI, ENABLE_AO, ERROR, ENABLE_DEVICE new tags are available or not. If not, add the related new tags automatically. This prevent old project compile error caused by new tags not found. ============================================================================ v2.01 beta 4 (Apr.28, 2011) Fix: The virtual tag cannot used to set DO output correctly. Fix the problem is this version. The pulse mode of coil output is also fixed. Change: Remove some duplicated or big size pictures from the library. PM-2133, PowerMeter, Excellence, TPD430_DemoRoom and TPD430_DigitalClock picture folders are now removed. These pictures will be moved into its related demo program folder. Add: Ask save before exit the Ladder Designer. Ask confirm before creating new ladder project. Add Ctrl+K to save & close the ladder project. Auto-save when new or open another TouchPAD project. Change: Modify the TPD-280 library to record AI values (DCON protocol) even the AI values are +9999.9 (for error). ============================================================================ v2.01 beta 3 (Apr.21, 2011) Add: Add function blocks WORD2DWORD, DWORD2WORD, WORD2Float, Float2WORD. Add: Support "ERROR" tag for RS-485 I/O modules (I-7000/M-7000). 0=OK, 1=Error! Add: Support "ENABLE_DEVICE" tag for all I/O modules. User can modify the tag value to 0 to disable this device in the project. This would be useful when debugging the project without remove the device. Fix: The BitButton and TextPushButton switch the frame immediatly when button clicked. Modify the operation of switch frames when button released. This problem is occurred from beta1. Fix: The CheckBox's picture may disapper when switch frame. Fix the problem coming from beta1. Add: Add a "ADDR_BASE" tag to record the address is base 0 or 1. Now, the device import form can show tags in protocol address(base 0) or PLC address 1, instead of always in protocol address. Fix: The TagName selection form has 20-byte limitation of the TagName size. Change it to 60 bytes. ============================================================================ v2.01 beta 2 (Apr.15, 2011) Add: Add HotSpotLastXGet(tHotSpot*) and HotSpotLastYGet(tHotSpot*) to get the last clicked position X, Y. Add: Add "ERROR" tag for Ethernet I/O devices. The "ERROR" tag should be 0 for indicating OK, while 1 indicating failure. ============================================================================ v2.01 beta (Apr.14, 2011) Add: Add new widget type name. (Widget Name) (Old Type Name) (New Type Name) ============== ================= =============== BitButton : tPushButtonWidget ==> tBitButton TextPushButton: tPushButtonWidget (Text type) ==> tTextButton tPushObjectWidget (ObjRef type) ==> tObjButton LabelWidget : tCanvasWidget ==> tLabel SliderWidget : tSliderWidget ==> tSlider CheckBoxWidget: tCheckBoxWidget ==> tCheckBox HotSpotWidget : tHotSpotWidget ==> tHotSpot The old widget type names are still available for compatibility. But it is recommended to use new type names in new projects. Note: tBitButton and tTextButton has the same type structure, but they are different with the tObjButton structure. Add: Add text functions for some widgets. The following functions are used to set/get a static string to/from the text properity. The widget has no buffer for the text, so the string must be static string (static char[]). LabelTextGet(tLabel*); LabelTextSet(tLabel*, const char *); TextButtonTextGet(tLabel*); TextButtonTextSet(tTextButton*, const char*); These functions also repaint the widget it-self automatically. Note: Currently the CheckBoxTextSet() does not work correctly. Will fix the problem in next version. Add: Add "Tag" properity for TextPushButton(BitButton, TextButton, ObjButton), CheckBox, Slider, HotSpot. We can set the tag properity in design time, and then read the properity in run-time. The "Tag" properity would be useful when using several widgets with a single event function. This properity indicates which widget is clicked in this time. This looks like a widget array indicator. The following functions are used to set/get Tag properity of widgets. BitButtonTagGet(tBitButton*); BitButtonTagSet(tBitButton*, int); TextButtonTagGet(tTextButton*); TextButtonTagSet(tTextButton*, int); ObjButtonTagGet(tObjButton*); ObjButtonTagSet(tObjButton*, int); CheckBoxTagGet(tCheckBox*); CheckBoxTagSet(tCheckBox*, int); SliderTagGet(tSlider*); SliderTagSet(tSlider*, int); HotSpotTagGet(tHotSpot*); HotSpotTagSet(tHotSpot*, int); Add: Add "TagName" properity for TextPushButton(BitButton, TextButton, ObjButton) and HotSpot. The "TagName" properity can link to a tag variable (for example: virtual tag). While the object is clicked, then the tag variable is set to 1. While the object is released, then the tag variable is set to 0. Several widget can link to a single tag variable for exchange the status. For example: TextButton is clicked, then a Label shows 1 when these two widgets link to the same tag variable. Add: Add the following macros for accessing Tag and Text properities. WIDGET_TAG(widget) PWIDGET_TAG(widget*) WIDGET_TEXT(widget) PWIDGET_TEXT(widget*) Add: Support multi-switching of DO and AO with several clients. The new architecture is to read back DO/AO first, and then write DO/AO depending on change instead of always write DO/AO. The IO.hsf should use VAR_GET_WRITE_DATA() to get the data to be written, instead of use VAR_VALUE() to get current data. Refer to the bin\Modules\PET-7000\PET-7060\IO.hsf for DO example. Refer to the bin\Modules\PET-7000\PET-7026\IO.hsf for AO example. Add: Add ENABLE_DI, ENABLE_DO, ENABLE_AI, ENABLE_AO virtual tags. Users can use these tags to enable/disable DI/DO/AI/AO functions, instead of always polling these values that may not used in a project. This reduces network loading and improves the performance of a TouchPAD. Refer to the bin\Modules\PET-7000\PET-7060\IO.hsf to support these tags. Users should renew the device by... Modbus TCP mode: 1. Right-click mouse button on the device in the workspace and select "Edit Device" in the pop up menu. 2. Click the "Edit" button and verify the start address and channels. 3. Click "OK". 4. Click "Yes" to delete existing tags. PET-7000 module mode: 1. Right-click mouse button on the device in the workspace and select "Edit Device" in the pop up menu. 2. Click the "Search" button and select the module name again. 3. Click "OK". 4. Click "Yes" to delete existing tags. Fix: Remove the Net ID checking on the Modbus TCP response. Therefore, Modbus TCP device can have any Net ID instead of 1. Fix: MB_WRITEDO() does not work correctly when writing a single bit DO. Fix the problem in this version. Fix: The DO channels will be off when TouchPAD connected. Fix the problem in this version. Fix: Wrong sub-net mask and gateway IP is used in statick IP mode. Fix the problem in this version. // The followings are minor updates. Fix: Fix the start address displayed in the device window. The previous verion always shows 0 for each channel. The start address is still not used in predefined I/O modules, since the address is hard coded in the IO.hsf files. Add: Add hot-key "ctrl+K" for "Save & Close" in the code editor. The "OK" button in the code editor window now supports auto-save function. So, users can just have one click on the "OK" button to save & close the file. Change: Disable the MODBUS_WAIT() function in mb_master.h. When the Modbus TCP I/O device is offline, the MODBUS_WAIT() function can block the TouchPAD and shows blank screen. Users can still enable this function by modify the mb_master.h file. Add: Add TPD-430 LED control function. hmi_SetLED( HMI_LED_ON ); hmi_SetLED( HMI_LED_OFF ); Fix: Set TPD-283 Ethernet LED as Link/ACT, instead of disable. Add: Add menu item "Run / Download File (bin)". This function can be used to download a firmware (.bin or .bix) directly without it's full project and source code. This should be useful when asking end user to update a program to TouchPAD while we don't want to release a source to end user. This function still have limitations, since the HMIWorks have to know the information related to the TouchPAD first and then can download it through the correct interface and configuration. Thus, an empty project (or demo project) with correct TouchPAD information is required. ============================================================================ v2.00 Release, Feb.17, 2011 ============================================================================ ============================================================================