JYG

MrPLC Member
  • Content count

    70
  • Joined

  • Last visited

Posts posted by JYG


  1. Sysmac Studio use the HTTP protocol to get data variable from NJ/NX controller not EtherNet/IP.
    The webServer is LightTPD (https://www.lighttpd.net/).

    The Omron protocol over HTTP seem not to be documented.
    Here an excerpt from a POST : 

    0000   50 4f 53 54 20 2f 63 67 69 2d 62 69 6e 2f 63 70   POST /cgi-bin/cp
    0010   75 2e 66 63 67 69 20 48 54 54 50 2f 31 2e 31 0d   u.fcgi HTTP/1.1.
    ...
    0140   0a 4d 65 6d 6f 72 79 5f 61 73 79 6e 63 52 65 61   .Memory_asyncRea
    0150   64 20 2d 66 20 00 a8 d3 73 0e 03 00 00 0d 00 00   d -f ...s.......

     


  2. Make data type structure "sMessage" in NX with NJ Offset Type like this :

    sMessage    STRUCT                NJ
    Version    UINT                
    TransactionID    UINT                
    Command    UINT                
    Flags    ARRAY[0..15] OF BOOL                
    Param1    ARRAY[1..4] OF DINT                
    Param2    ARRAY[1..4] OF REAL                
    Texte    STRING[128]    

    Produce a similar structure in C++ code or C# code :

    struct sMessageT
    {
        uint16_t version = 1;
        uint16_t tid = 0;
        uint16_t cmd = 0;
        uint16_t flags = 0;  
        float    param2[4] = { 0.0f };
        uint8_t  txt_utf8[128];
    };

    Use socket UDP or TCP to exchange data between PC and NX.

    Works with all NX. Works with port #1. No FINS nodes problems. Very simple.

    1 person likes this

  3. Here an example to copy file received on NA5 FTP from external client to NA5 program:

    Sub FTPCopyFile(filename As String)
    	If System.IO.File.Exists(filename) Then
    		System.IO.File.Copy(System.IO.Path.Combine("\User\SysmacHMI\FTP\", filename), System.IO.Path.Combine("\User\SysmacHMI\", filename), True)
    		System.IO.File.Delete(System.IO.Path.Combine("\User\SysmacHMI\FTP\", filename))
    	End If
    End Sub

    To specify a device with an absolute path, place "\" before the name. (eg. \UsbDisk\Sample.csv)

    Name Supported version Description
    UsbDisk V1.00 Signifies the USB Memory inserted in USB Host Port 1.
    UsbDisk2 V1.00 Signifies the USB Memory inserted in USB Host Port 2.
    SDCard V1.00

    Signifies an SD Memory Card.

    FTP

    V1.03 Signifies the folder that can be accessed externally via FTP.

    • You can transfer the CSV on the FTP Server of NA5. Client can get from there;
    • You can use OPC Server/OPC Client and get tags from controller (some OPC Server can dump to database);
    • You can push data from controller to client with socket;
    • Client can get data from controller with FINS protocol or EtherNet/IP;
    • You can publish data from controller with modbus;
    • You can publish data from controller with MQTT;
    • You can make a web server (and REST API) on the controller and the client use a browser to see data, example chartjs (It's my approach for HMI);
    • If your a developper, you can make a service (Windows) to listen socket and dump data to database of your choice (It's my approach for database);
    • You can use Scada software and viewer;

  4. Sysmac Studio 1.31.0.10 crash sometimes, often when copying things like color palettes, string in the Output Window, etc. It's always with NA not NX.
    I have a corrupted project because Sysmac Studio crash and save the project. NEVER use this file, restarts with the old file is better.
    The text fields does not appear on all objects on the HMI and it's never the same object each time your download to HMI!

    Check images below. Font is "No Value". Do you know how to resolve this problem?

    SysmacStudioBugNoFontNormalScreen.png

    SysmacStudioBugNoFontBugsScreen.png

    SysmacStudioBugNoFont.png


  5. It seem working when the object have property "Expression" not property "Variable".

    DataDisplay have a property "Expression" and working fine, but DataEdit have property "Variable" and not working.

    Example working for DataDisplay with DataType Text : NX_JXC_AXIS(HMI_AXIS_INDEX).Cfg.Name

    Example working for DataEdit with DataType Numeric : NX_JXC_AXIS(0).Cmd.Pos

    Example not working for DataEdit with DataType Numeric :NX_JXC_AXIS(HMI_AXIS_INDEX).Cmd.Pos