Создайте пользовательский список ключевых слов на основе целевого объекта

Во время генерации кода Simulink® PLC Coder™ использует файл hook, чтобы изменить целевой список ключевых слов по умолчанию IDE и использовать ключевые слова из измененного списка ключевых слов, чтобы проверить и изменить имена компонентов модели, которые совпадают с любыми ключевыми словами. Использование MATLAB® чтобы создать файл трубки коллбэка, который содержит пользовательский список ключевых слов целевой среды IDE.

Пользовательский шаблон файла ключевых слов

Имя пользовательского файла ключевых слов должно быть plc_custom_keyword.m. Чтобы создать пользовательский файл ключевых слов для одной целевой IDE, используйте следующий шаблон:

function keyword_list = plc_custom_keyword(keyword_list)
%

%   Copyright 2020 The MathWorks, Inc.

    add_list = { 'state', ...
                 'test',...
                 'control',...
               };

    delete_list = { 'jmp', ...
                    'method', ...
                    'transition', ...
                    };


    keyword_list = union(keyword_list, add_list);
    keyword_list = setdiff(keyword_list, delete_list);
end

Чтобы создать пользовательский файл ключевых слов для нескольких целевых IDE, используйте следующий шаблон:

function keyword_list = plc_custom_keyword(keyword_list)
%

%   Copyright 2020 The MathWorks, Inc.

target = get_param(gcs,'PLC_TargetIDE'); 

    switch target
        case 'codesys23'
            add_list = {'state'};
            delete_list = {'jmp'};
        case 'pcworx60'
            add_list = {'control'};
            delete_list = {'method'};
        case 'codesys35'
            add_list = {'mykeyword3'};
            delete_list = {'time'};
        case 'omron'
            add_list = {'mykeyword'};
            delete_list = {'reset'};
        case 'rslogix5000'
            add_list = {'mykeyword1'};
            delete_list = {'retain'};
        case 'tiaportal'
        	dd_list = {'mykeyword2'};
              delete_list = {'sint'};
        otherwise
            add_list = {'test'};
            delete_list = {'transition'};
    end
    keyword_list = union(keyword_list, add_list);
    keyword_list = setdiff(keyword_list, delete_list);
end

Входной параметр keyword_list - список ключевых слов по умолчанию для выбранного целевого объекта. Измените целевой список ключевых слов IDE, используя шаблон для создания add_list и delete_list списки для изменения keyword_list по умолчанию . Ключевые слова из выхода keyword_list используются для соответствия и переименования компонентов модели во время генерации кода. Чтобы решить, какие ключевые слова добавить или удалить в пользовательский список ключевых слов, обратитесь к этим спискам ключевых слов по умолчанию.

Эти списки являются специфичными для целевого IDE по умолчанию keyword_list списки.

Список ключевых слов Generic и PLCOpen ST

    keyword_list = { ...
    'abs', ...
    'acos', ...
    'action', ...
    'add', ...
    'adr', ...
    'adrinst', ...
    'and', ...
    'andn', ...
    'any', ...
    'array', ...
    'asin', ...
    'at', ...
    'atan', ...
    'begin', ...
    'bitadr', ...
    'bool', ...
    'by', ...
    'byte', ...
    'cal', ... 
    'calc', ...
    'calcn', ...
    'case', ...
    'configuration', ...
    'const', ...
    'constant', ...
    'continue', ...
    'cos', ... 
    'counter', ...
    'date', ...
    'data_and_time', ...
    'dint', ...
    'div', ...
    'd', ...
    'do', ...
    'ds', ...
    'dt', ...
    'dword', ...
    'else', ...
    'elsif', ...
    'en', ...
    'end', ...
    'end_action', ...
    'end_case', ...
    'end_const', ...
    'end_for', ...
    'end_function', ...
    'end_function_block', ...
    'end_if', ...
    'end_program', ...
    'enf_configuration', ...
    'end_repeat', ...
    'end_step', ...
    'end_struct', ...
    'end_type', ...
    'end_var', ...
    'end_while', ...
    'eno', ...
    'eq', ...
    'exit', ...
    'exp', ...
    'expt', ...
    'f_edge', ...
    'false', ...
    'for', ...
    'function', ...
    'function_block', ...
    'from', ...
    'ge', ...
    'gt', ...
    'if', ...
    'indexof', ...
    'ini', ...
    'initial_step', ...
    'int', ...
    'jmp', ...
    'jmpc', ...
    'jmpcn', ...
    'l', ...
    'ld', ...
    'ldn', ...
    'le', ...
    'lint', ...
    'limit', ...
    'ln', ...
    'log', ...
    'lreal', ...
    'lt', ...
    'lword', ...
    'max', ...
    'method', ...
    'min', ...
    'mod', ...
    'move', ...
    'mul', ...
    'mux', ...
    'n', ...
    'ne', ...
    'non_retain', ...
    'not', ...
    'of', ...
    'on', ...
    'or', ...
    'orn', ...
    'p', ...
    'persistent', ...
    'pointer', ...
    'program', ...
    'r', ...
    'r_edge', ...
    'read_only', ...
    'read_write', ...
    'real', ...
    'repeat', ...
    'reset', ...
    'resource', ...
    'ret', ...
    'retain', ...
    'retc', ...
    'retcn', ...
    'return', ...
    'rol', ...
    'ror', ...
    's', ...
    'sd', ...
    'sel', ...
    'shl', ...
    'shr', ...
    'sin', ...
    'sint', ...
    'sizeof', ...
    'sl', ...
    'sqrt', ...
    'st', ...
    'step', ...
    'stn', ...
    'string', ...
    'struct', ...
    'sub', ...
    'tan', ...
    'task', ...
    'then', ...
    'time', ...
    'timer', ...
    'time_of_day', ...
    'to', ...
    'tod', ...
    'transition', ...
    'true', ...
    'trunc', ...
    'type', ...
    'udint', ...
    'uint', ...
    'ulint', ...
    'until', ...
    'usint', ...
    'var', ...
    'var_access', ...
    'var_config', ...
    'var_constant', ...
    'var_external', ...
    'var_global', ...
    'var_in_out', ...
    'var_input', ...
    'var_output', ...
    'var_temp', ...
    'while', ...
    'with', ...
    'word', ...
    'wstring', ...
    'xor', ...
    'xorn', ...
      };            

Список ключевых слов Omron

    omron_list = { ...
    'np', ...
    'up',...
    };    

Список ключевых слов Rockwell

    rockwell_list = { ...
    'control',...
    };    

Список ключевых слов Selectron

    selectron_list = { ...
    '&' ...
    '(' ...
    ')' ...
    '*' ...
    '**' ...
    '+' ...
    '-' ...
    '/' ...
    '<' ...
    '<=' ...
    '<>' ...
    '=' ...
    '>' ...
    '>=' ...
    'ACTION' ...
    'ADD' ...
    'AND' ...
    'ANDN' ...
    'ANY' ...
    'ANY_BIT' ...
    'ANY_DATE' ...
    'ANY_DUT' ...
    'ANY_FB' ...
    'ANY_INT' ...
    'ANY_NUM' ...
    'ANY_REAL' ...
    'ARRAY' ...
    'AT' ...
    'BODY' ...
    'BOOL' ...
    'BY' ...
    'BYTE' ...
    'CAL' ...
    'CALC' ...
    'CALCN' ...
    'CASE' ...
    'CONFIGURATION' ...
    'CONSTANT' ...
    'DATE' ...
    'DATE_AND_TIME' ...
    'DINT' ...
    'DIV' ...
    'DO' ...
    'DT' ...
    'DWORD' ...
    'ELSE' ...
    'ELSIF' ...
    'EN' ...
    'END_ACTION' ...
    'END_BODY' ...
    'END_CASE' ...
    'END_CONFIGURATION' ...
    'END_FOR' ...
    'END_FUNCTION' ...
    'END_FUNCTION_BLOCK' ...
    'END_IF' ...
    'END_PLC_CONFIG' ...
    'END_PROGRAM' ...
    'END_REPEAT' ...
    'END_RESOURCE' ...
    'END_STEP' ...
    'END_STRUCT' ...
    'END_TRANSITION' ...
    'END_TYPE' ...
    'END_VAR' ...
    'END_WHILE' ...
    'ENO' ...
    'EQ' ...
    'EXIT' ...
    'FALSE' ...
    'FOR' ...
    'FROM' ...
    'FUNCTION' ...
    'FUNCTION_BLOCK' ...
    'F_EDGE' ...
    'GE' ...
    'GT' ...
    'IF' ...
    'INITIAL_STEP' ...
    'INT' ...
    'INTERVAL' ...
    'JMP' ...
    'JMPC' ...
    'JMPCN' ...
    'LD' ...
    'LDN' ...
    'LE' ...
    'LINT' ...
    'LREAL' ...
    'LT' ...
    'LWORD' ...
    'MOD' ...
    'MUL' ...
    'NE' ...
    'NOT' ...
    'OF' ...
    'OFFSETOF' ...
    'ON' ...
    'OR' ...
    'ORN' ...
    'PLC_CONFIG' ...
    'PRIORITY' ...
    'PROGRAM' ...
    'R' ...
    'R1' ...
    'READ_ONLY' ...
    'READ_WRITE' ...
    'REAL' ...
    'REPEAT' ...
    'RESOURCE' ...
    'RET' ...
    'RETAIN' ...
    'RETC' ...
    'RETCN' ...
    'RETURN' ...
    'R_EDGE' ...
    'S' ...
    'S1' ...
    'SINGLE' ...
    'SINT' ...
    'SIZEOF' ...
    'ST' ...
    'STEP' ...
    'STN' ...
    'STRING' ...
    'STRUCT' ...
    'SUB' ...
    'TASK' ...
    'THEN' ...
    'TIME' ...
    'TIME_OF_DAY' ...
    'TO' ...
    'TOD' ...
    'TRANSITION' ...
    'TRUE' ...
    'TYPE' ...
    'UDINT' ...
    'UINT' ...
    'ULINT' ...
    'UNTIL' ...
    'USINT' ...
    'VAR' ...
    'VAR_ACCESS' ...
    'VAR_CONSTANT' ...
    'VAR_CONSTANT_RETAIN' ...
    'VAR_EXTERNAL' ...
    'VAR_EXTERNAL_CONSTANT' ...
    'VAR_EXTERNAL_CONSTANT_RETAIN' ...
    'VAR_EXTERNAL_RETAIN' ...
    'VAR_GLOBAL' ...
    'VAR_GLOBAL_CONSTANT' ...
    'VAR_GLOBAL_CONSTANT_RETAIN' ...
    'VAR_GLOBAL_RETAIN' ...
    'VAR_INPUT' ...
    'VAR_INPUT_RETAIN' ...
    'VAR_IN_EXT' ...
    'VAR_IN_OUT' ...
    'VAR_IN_OUT_CONSTANT' ...
    'VAR_OUTPUT' ...
    'VAR_OUTPUT_RETAIN' ...
    'VAR_RETAIN' ...
    'VAR_TEMP' ...
    'WHILE' ...
    'WITH' ...
    'WORD' ...
    'XOR' ...
    'XORN' ...
    '_ACTION' ...
    '_SFC_DEBUG' ...
    '_STEP' ...
    'auto' ...
    'break' ...
    'char' ...
    'const' ...
    'continue' ...
    'default' ...
    'double' ...
    'enum' ...
    'extern' ...
    'float' ...
    'goto' ...
    'if' ...
    'inline' ...
    'long' ...
    'register' ...
    'restrict' ...
    'short' ...
    'signed' ...
    'static' ...
    'switch' ...
    'typedef' ...
    'union' ...
    'unsigned' ...
    'void' ...
    'volatile' ...
    };    

Список ключевых слов STEP7 Siemens

    step7_keyword_list = { ...
        'fb', ...
        'db', ...
        'ob', ...
        'fc', ...
        'ib', ...
        'mb', ...
        'udt', ...
        'di', ...
        'scale', ...
        'B', ...
        'ref', ...
        'switch', ...
        'norm', ...
        'set', ...
        'ss'
  };

Список ключевых слов портала Siemens TIA

    tia_portal_keyword_list = { ...
    'a_dead_b', ...
    'abs_ctrl', ...
    'abs_diag', ...
    'abs_init', ...
    'act_tint', ...
    'ag_cntex', ...
    'ag_cntrl', ...
    'ag_lock', ...
    'ag_recv', ...
    'ag_send', ...
    'ag_unlock', ...
    'alarm_d', ...
    'alarm_dq', ...
    'alarm_s', ...
    'alarm_sc', ...
    'alarm_sq', ...
    'analog', ...
    'as_dial', ...
    'asi_3422', ...
    'asi_ctrl', ...
    'asin', ...
    'atan', ...
    'ath', ...
    'att', ...
    'attach', ...
    'attr_db', ...
    'bcdcpl', ...
    'bitsum', ...
    'blkmov', ...
    'brcv', ...
    'bsend', ...
    'bt_lt', ...
    'by', ...
    'c_cntrl', ...
    'cam_ctrl', ...
    'cam_diag', ...
    'cam_init', ...
    'can_dint', ...
    'can_tint', ...
    'cdt', ...
    'ceil', ...
    'ch_diag', ...
    'chars_to_strg', ...
    'cir', ...
    'cj_t_par', ...
    'cnt2_ctr', ...
    'cnt2rdpn', ...
    'cnt2wrpn', ...
    'cnt_ctl1', ...
    'cnt_ctl2', ...
    'cnt_ctrl', ...
    'compress', ...
    'concat', ...
    'concat_date_ltod', ...
    'concat_date_tod', ...
    'cont_c', ...
    'cont_s', ...
    'convert', ...
    'count', ...
    'countofelements', ...
    'crea_dbl', ...
    'creat_db', ...
    'create_db', ...
    'crp_in', ...
    'crp_out', ...
    'ctd', ...
    'ctrl_rtm', ...
    'ctu', ...
    'ctud', ...
    'd_act_dp', ...
    'datalogclear', ...
    'datalogclose', ...
    'datalogcreate', ...
    'datalogdelete', ...
    'datalognewfile', ...
    'datalogopen', ...
    'datalogwrite', ...
    'db', ...
    'db_any_to_variant', ...
    'dcat', ...
    'dead_t', ...
    'deadband', ...
    'deco', ...
    'del_db', ...
    'del_si', ...
    'delete', ...
    'delete_db', ...
    'demux', ...
    'deserialize', ...
    'detach', ...
    'dev', ...
    'devicestates', ...
    'diag_inf', ...
    'diag_rd', ...
    'dif', ...
    'digital', ...
    'dis_airt', ...
    'dis_irt', ...
    'div', ...
    'dmsk_flt', ...
    'do', ...
    'dp_ctrl', ...
    'dp_diag', ...
    'dp_recv', ...
    'dp_send', ...
    'dp_topol', ...
    'dpnrm_dg', ...
    'dprd_dat', ...
    'dpsyc_fr', ...
    'dpwr_dat', ...
    'drum', ...
    'drum_x', ...
    'eb', ...
    'en', ...
    'en_airt', ...
    'en_irt', ...
    'enco', ...
    'encoderabssensordp', ...
    'encoderet200s1count', ...
    'encoderet200s1ssi', ...
    'encoderfm350', ...
    'encoderim174', ...
    'encoderim178', ...
    'encodersinamics', ...
    'encodersm338', ...
    'encoderuniversal', ...
    'endis_pw', ...
    'eno', ...
    'err_mon', ...
    'exit', ...
    'fb', ...
    'f_trig', ...
    'failsafe_protect', ...
    'fifo', ...
    'fill', ...
    'fill_blk', ...
    'find', ...
    'floor', ...
    'fmt_cj_t', ...
    'fmt_ds1', ...
    'fmt_par', ...
    'fmt_pid', ...
    'fmt_pv', ...
    'fmt_tun', ...
    'force_355', ...
    'frac', ...
    'frequenc', ...
      'ftp_cmd', ...
    'fuz_355', ...
    'gb', ...
    'gadr_lgc', ...
    'gen_diag', ...
    'gen_usrmsg', ...
    'geo2log', ...
    'geo_log', ...
    'get', ...
    'get_alarmstate', ...
    'get_diag', ...
    'get_err_id', ...
    'get_error', ...
    'get_features', ...
    'get_im_data', ...
    'get_name', ...
    'get_s', ...
    'getblockname', ...
    'getinstancename', ...
    'getinstancepath', ...
    'getio', ...
    'getio_part', ...
    'getstationinfo', ...
    'getsymbolname', ...
    'getsymbolpath', ...
    'high_speed_counter', ...
    'hta', ...
    'i_abort', ...
    'i_get', ...
    'i_put', ...
    'imc', ...
    'init_rd', ...
    'insert', ...
    'integ', ...
    'inventory', ...
    'io2mod', ...
    'ip_config', ...
    'is_array', ...
    'join', ...
    'lag1st', ...
    'lag2nd', ...
    'lead_lag', ...
    'led', ...
    'left', ...
    'len', ...
    'lgc_gadr', ...
    'lifo', ...
    'limalarm', ...
    'limit', ...
    'limiter', ...
    'ln', ...
    'loc_time', ...
    'log2geo', ...
    'log2mod', ...
    'log_geo', ...
    'logical_trigger', ...
    'lp_sched', ...
    'lp_sched_m', ...
    'lt_bt', ...
    'max', ...
    'max_len', ...
    'mb_client', ...
    'mb_server', ...
    'mc_control', ...
    'mc_gearin', ...
    'mc_halt', ...
    'mc_home', ...
    'mc_init', ...
    'mc_moveabsolute', ...
    'mc_movejog', ...
    'mc_moverelaive', ...
    'mc_moverelative', ...
    'mc_movevelocity', ...
    'mc_power', ...
    'mc_reset', ...
    'mc_simulation', ...
    'mc_stopmotion', ...
    'mcat', ...
    'md', ...
    'mid', ...
    'mn', ...
    'mod', ...
    'modb_341', ...
    'modbus_comm_load', ...
    'modbus_master', ...
    'modbus_slave', ...
    'modulestates', ...
    'move_blk', ...
    'move_blk_variant', ...
    'msk_flt', ...
    'mux', ...
    'none', ...
    'nonlin', ...
    'norm', ...
    'norm_x', ...
    'not', ...
    'notify', ...
    'null', ...
    'ob', ...
    'of', ...
    'or', ...
    'outputet200s2ao', ...
    'outputim174', ...
    'outputim178', ...
    'outputmm4_dp', ...
    'outputsinamics', ...
    'outputsm332', ...
    'outputuniversal', ...
    'override', ...
    'pb', ...
    'p3964_config', ...
    'p_print', ...
    'p_prt341', ...
    'p_rcv', ...
    'p_rcv_rk', ...
    'p_reset', ...
    'p_send', ...
    'p_snd_rk', ...
    'pack', ...
    'para_ctl', ...
    'parm_mod', ...
    'pe_cmd', ...
    'pe_cmd_cp', ...
    'pe_ds3_write_et200s', ...
    'pe_ds3_write_et200s_cp', ...
    'pe_end_rsp', ...
    'pe_error_rsp', ...
    'pe_get_mode_rsp', ...
    'pe_i_dev', ...
    'pe_i_dev_cp', ...
    'pe_identify_rsp', ...
    'pe_list_modes_rsp', ...
    'pe_measurement_list_rsp', ...
    'pe_measurement_value_rsp', ...
    'pe_pem_status_rsp', ...
    'pe_start_end', ...
    'pe_start_end_cp', ...
    'pe_start_rsp', ...
    'pe_wol', ...
    'peek', ...
    'peek_bool', ...
    'pg_dial', ...
    'pid', ...
    'pid_3step', ...
    'pid_compact', ...
    'pid_cp', ...
    'pid_es', ...
    'pid_fm', ...
    'pid_par', ...
    'pid_temp', ...
    'pip', ...
    'pnio_alarm', ...
    'pnio_recv', ...
    'pnio_rw_rec', ...
    'pnio_send', ...
    'poke', ...
    'poke_blk', ...
    'poke_bool', ...
    'port', ...
    'port_config', ...
    'preset_timer', ...
    'program_alarm', ...
    'protect', ...
    'prvrec', ...
    'pulse', ...
    'pulsegen', ...
    'pulsegen_m', ...
    'put', ...
    'qry_cint', ...
    'qry_dint', ...
    'qry_tint', ...
    'r_trig', ...
    'ralrm', ...
    'rcvrec', ...
    'rd_addr', ...
    'rd_dpar', ...
    'rd_dpara', ...
    'rd_dparm', ...
    'rd_lgadr', ...
    'rd_loc_t', ...
    'rd_rec', ...
    'rd_sinfo', ...
    'rd_sys_t', ...
    'rdrec', ...
    'rdsysst', ...
    're_trigr', ...
    'read', ...
    'read_355', ...
    'read_big', ...
    'read_dbl', ...
    'read_err', ...
    'read_little', ...
    'read_rtm', ...
    'read_si', ...
    'readfromarraydb', ...
    'readfromarraydbl', ...
    'receive_config', ...
    'receive_p2p', ...
    'receive_reset', ...
    'recipeexport', ...
    'recipeimport', ...
    'reconfigiosystem', ...
    'repl_val', ...
    'replace', ...
    'reset', ...
    'reset_timer', ...
    'reseti', ...
    'return', ...
    'right', ...
    'rmp_soak', ...
    'roc_lim', ...
    'rol', ...
    'ror', ...
    'round', ...
    'rt_info', ...
    'rtm', ...
    'runtime', ...
    's_cd', ...
    's_conv', ...
    's_cu', ...
    's_cud', ...
    's_ltint', ...
    's_modb', ...
    's_odt', ...
    's_odts', ...
    's_offdt', ...
    's_pext', ...
    's_pulse', ...
    's_rcv', ...
    's_rts', ...
    's_send', ...
    's_ussi', ...
    's_ussr', ...
    's_usst', ...
    's_v24', ...
    's_vset', ...
    's_vstat', ...
    's_xon', ...
    'scale', ...
    'scale_m', ...
    'scale_x', ...
    'seg', ...
    'sel', ...
    'send_config', ...
    'send_p2p', ...
    'serialize', ...
    'set', ...
    'set_addr', ...
    'set_cint', ...
    'set_clks', ...
    'set_features', ...
    'set_param', ...
    'set_rtm', ...
    'set_sw', ...
    'set_sw_s', ...
    'set_timezone', ...
    'set_tint', ...
    'set_tintl', ...
    'seti', ...
    'setio', ...
    'setio_part', ...
    'shl', ...
    'shr', ...
    'shrb', ...
    'signal_get', ...
    'signal_set', ...
    'sin', ...
    'smc', ...
    'sms_send', ...
    'snc_rtcb', ...
    'sp_gen', ...
    'split', ...
    'splt_ran', ...
    'sqr', ...
    'sqrt', ...
    'srt_dint', ...
    'stp', ...
    'strg_to_chars', ...
    'swap', ...
    'switch', ...
    'sync_pi', ...
    'sync_po', ...
    't_add', ...
    't_combine', ...
    't_comp', ...
    't_config', ...
    't_conv', ...
    't_diag', ...
    't_diff', ...
    't_reset', ...
    't_sub', ...
    'tbl', ...
    'tbl_find', ...
    'tbl_tbl', ...
    'tbl_wrd', ...
    'tcon', ...
    'tcont_cp', ...
    'tcont_s', ...
    'tdiscon', ...
    'test_db', ...
    'this', ...
    'time_tck', ...
    'timestmp', ...
    'tmail_c', ...
    'to', ...
    'tof', ...
    'ton', ...
    'tonr', ...
    'tonr_x', ...
    'tp', ...
    'trcv', ...
    'trcv_c', ...
    'true', ...
    'trunc', ...
    'tsend', ...
    'tsend_c', ...
    'tun_ec', ...
    'tun_es', ...
    'turcv', ...
    'tusend', ...
    'typeof', ...
    'typeofelements', ...
    'ublkmov', ...
    'ufill_blk', ...
    'umove_blk', ...
    'unscale', ...
    'until', ...
    'updat_pi', ...
    'updat_po', ...
    'urcv', ...
    'urcv_s', ...
    'usend', ...
    'usend_s', ...
    'uss_drive_control', ...
    'uss_port_scan', ...
    'uss_read_param', ...
    'uss_write_param', ...
    'v24_set', ...
    'v24_set_340', ...
    'v24_stat', ...
    'v24_stat_340', ...
    'variant_to_db_any', ...
    'variantget', ...
    'variantput', ...
    'wait', ...
    'wr_dparm', ...
    'wr_loc_t', ...
    'wr_parm', ...
    'wr_rec', ...
    'wr_sys_t', ...
    'wr_usmsg', ...
    'wrd_tbl', ...
    'writ_dbl', ...
    'write', ...
    'write_big', ...
    'write_little', ...
    'writetoarraydb', ...
    'writetoarraydbl', ...
    'wrrec', ...
    'wsr', ...
    'www', ...
    'x_abort', ...
    'x_get', ...
    'x_put', ...
    'x_rcv', ...
    'x_send', ...
    'B', ...
    'ref', ...
    'ss', ...
    };            

Рабочий процесс использования пользовательских файлов с ключевыми словами

Эта блок-схема отображает процесс использования пользовательского файла ключевых слов:

Flowchart displaying steps to create and use the custom keyword file

Вы должны добавить plc_custom_keyword.m файл в путь MATLAB для проверки пользовательских ключевых слов.

Проверьте изменения имени пользовательского ключевого слова в сгенерированном коде

В этом примере показано, как создать пользовательский файл ключевых слов и проверить, что сгенерированный код содержит переменные с измененными именами, поскольку они совпадают с именами в списке ключевых слов.

  1. Откройте plcdemo_simple_subsystem пример.

  2. Откройте SimpleSubsystem блок. Измените имя переменного входа на U на Controller.

  3. Создайте plc_custom_keyword.m файл при помощи этого кода:

    function keyword_list = plc_custom_keyword(keyword_list)
    %
    
    %   Copyright 2020 The MathWorks, Inc.
    
        add_list = { 'state', ...
                     'test',...
                     'controller',...
                   };
    
        delete_list = { 'jmp', ...
                        'method', ...
                        'transition', ...
                      };
        keyword_list = union(keyword_list, add_list);
        keyword_list = setdiff(keyword_list, delete_list);
    end

  4. Добавьте custom_plc_keyword.m файл в путь MATLAB. Откройте приложение PLC Coder. На вкладке PLC Code нажмите Generate PLC Code.

  5. Откройте сгенерированный файл кода. Проверьте, что Controller изменяется на b_Controller.