codesys3 data logger

  • pguerra

    pguerra - 2018-10-27

    I am trying to create a codesys3 data logger, any recommendations?
    The library AC_DataLog may be useful but can't find how to use it examples.
    still struggling importing OSCAT Network library I have it in the library manager but the compiler doesn't allow me to use it yet. I can see the data type ex "DLOG_DATA" in the library but shows, as not defined when I try to, used it.

  • dFx

    dFx - 2018-10-31

    Actually, to datalog, I use a simple FIFO in a huge array of whatever. (usually one or more value and a timestamp in a structure).

    If the datalog has to be huge, you may save CPU time using rotating start/end index instead of moving data.

  • h-hermsen

    h-hermsen - 2018-10-31

    I am also very interested in a generic datalogging solution!
    A store and forward combined with an RTC generated timestamp (of that old event) in combination with OPC UA is prefered.

  • eschwellinger

    eschwellinger - 2018-11-04

    this should point you in the right direction I guess: ... n=
    For using the AC-data logger no extra license is needed.
    You could choose to log into an csv file or sqlite db.


  • - 2019-07-09

    hi i am interested by the datalog functions too,
    but i do not understand how to add my logging variables

  • paradox

    paradox - 2019-07-10

    I marked variable by {ac_datalog[:=DataLogChannel]}, but this didn't work. Has anyone have example how to use AC_DataLog?

  • eschwellinger

    eschwellinger - 2019-07-10


    attached an example project:

        timer : Standard.TON;
        {attribute 'ac_datalog_hysteresis' := '1.745'}
        {attribute 'ac_datalog' := 'DataLogChannel'}
        iLogVar : INT;
        {attribute 'ac_datalog' := 'DataLogChannel'}
        rLogVar : REAL;
        {attribute 'ac_datalog' := 'DataLogChannel'}
        {attribute 'ac_datalog_hysteresis' := '0.745'}
        sLogVar : STRING := 'Hallo';
        //{attribute 'ac_datalog' := 'DataLogChannel'}
        arLogArray : ARRAY[0..4] OF REAL;
        {attribute 'ac_datalog_set_default_group' := 'DataLogChannel'}
        instStruct : LogStruct;
        {attribute 'ac_datalog_union_set_representant' := 'uiLog'}
        {attribute 'ac_datalog' := 'DataLogChannel_1'}
        instUnion : LogUnion;
        {attribute 'ac_datalog' := 'DataLogChannel_1'}
        {attribute 'ac_persist' := 'PersistenceChannel'}
        instFB : POU_Log;    
        {attribute 'ac_datalog' := 'DataLogChannel_1'}
        iLogVar2 : INT;
    timer(IN := TRUE, PT:=T#5S);
    IF timer.Q THEN
        iLogVar := iLogVar + 1;
        iLogVar2 := iLogVar;
        timer(IN := FALSE);
        rLogVar := arLogArray[2];
        instStruct.bLog := instStruct.bNoLog;
        instFB.Prop_Log := instFB.Prop_Log + 1;

    Keep in mind that extensive cyclic data writings will kill your storage device ( so handle with care what and where to save these data)


    IMG: DataLogger.png

    LogGenTestSP14.project [261.21 KiB]


    Related 2

  • h-hermsen

    h-hermsen - 2019-07-10


    The attached project works like a charm. Thanks!!

    This brings ups some questions;
    Can the PLC itself now visualise the stored Sqlite db / CSV information? So showing the contents of the db/csv in a trend or trace by design with a local history
    Ideally the PLC pushes the stored information after some trigger to a "consumer". Is there a way to facilitate this?
    If not, any other ideas on achieving such a scenario are very welcome!

    I would like to hear any thoughts on this, as the example shows how to save the data in a neat way but it does not show how to retrieve or send it.

  • - 2019-07-11

    is this datalogger can be used for 100ms data log ?

  • RoryLDM

    RoryLDM - 2020-02-05

    Thanks for the info on the Data logger. I've got it working great.

    I do have 1 question, is it possible to have the data logger log someplace else? Like have it save it to a usb drive instead of PlcPrg?

  • pruwetbe

    pruwetbe - 2020-10-03

    Hello All,
    Thanks to the project example LogGenTestSP14.project given by Edwin here before, i could modify my project to make AC_datalog beginning to work.
    But i still have problem so i try to compile and make running the example application on my computer without success
    i cannot even compile it without error .
    I am running under V3.5 SP16 patch1. I got some AC_persistence message error.
    I think i got similar trouble when i tried to compile HVAC example program showing HVAC library and developped using AC.
    Thanks for any feedback

  • blitz

    blitz - 2021-03-02

    @eschwellinger Thanks for the great example. I think we are all interested in whether it is possible to log data using the "DataLogManager" module on an external memory such as USB / SD? It would be great if you could answer if there is such a possibility, and if so, please tell us how to set "DataLogManager" to write to external memory


Log in to post a comment.