andyf Posted May 23, 2013 Share Posted May 23, 2013 I have a subprogram in the library that contains several subprograms within it. Is there a way to call one of these from the IDE terminal with online commands? The help seems to indicate that "call" and "callsub" are valid online commands, but they do not work. Example: call mylib.mylibsub() Link to comment Share on other sites More sharing options...
sjlee5 Posted May 24, 2013 Share Posted May 24, 2013 Hi, .. I think you can use "cx" or "cpx" on-line command. You cannot use "call" or "callsub" command directly in terminal. As I know, it's a buffer program command ( can only be used in prog or subprog or plc script ) So, you have to use "cx" or "cpx" command to execute "call". "cx" is a command that can execute plc command in terminal. "cpx" is a command that can execute prog command in terminal. And one thing to keep in your mind is that, compiler is not working in the on-line command. for example there are subprog below. open subprog AddData(data1, data2, &result) result = data1+data2 close and you can call subprogram in motion prog or plc like below. open plc 1 local data1, data2, result; data1 = 3 data2 = 4 call AddData(data1, data2, &result) P1 = result disable plc 1 close you can use "call AddData(data1, data2, &result)" in the buffer program. but can not use in the terminal because there's no compile action. So you must use L & R variables to use subprogram with arguments. in terminal. cx R0=3;R1=4;call AddData;P1=R2 then, you can read the result in P1 variable. P1 = 7 I hope this helps. Link to comment Share on other sites More sharing options...
andyf Posted May 24, 2013 Author Share Posted May 24, 2013 Thank you. Yes this does help, and I was able to run an example like your using cpx and a subprogram. However, it seems I am not able to call a sub program within a sub program, which is something I can normally do in a motion program. For example, if the subprogram in my library is like that shown below, I cannot do: cpx R0=3; call testsub.testsubinside; P1=R1; Example: open subprog testsub return; sub: testsubinside(input, &output) output = input + 2; return; close Link to comment Share on other sites More sharing options...
sjlee5 Posted May 25, 2013 Share Posted May 25, 2013 Hi, andyf. As I said before... there's no compile action in terminal. And you can check your subprogram in terminal. if you list your subprog in terminal, there's response like below. list subprog testsub return; n10000: L1=L0+2 return As you see, "testsubinside" tag is changed to "n10000". so you can use like this. cx R0=3; call testsub.01; P1=R1; This is all I know about subprogram call in terminal. Anyone who know more about this subject, please tell us in more detail. Thanks. Link to comment Share on other sites More sharing options...
Recommended Posts