Has anyone bought any robots from this company? https://www.jcctauto.com
I'm wondering, if is legit company, but I don't have any experience with direct import from China to the UK industrial equipment.
Has anyone bought any robots from this company? https://www.jcctauto.com
I'm wondering, if is legit company, but I don't have any experience with direct import from China to the UK industrial equipment.
Why don't you read whole byte from in8 and use that number as a CASE number in SELECT CASE command?
[Function]
Returns the value of the input signal.
M_In: Returns a bit.
M_Inb or M_In8: Returns a byte (8 bits).
M_Inw or M_In16: Returns a word (16 bits).
[Format]
Example) <Numeric Variable>=M_In(<Equation>)
Example) <Numeric Variable>=M_Inb(<Equation>) or M_In8(<Equation>)
Example) <Numeric Variable>=M_Inw(<Equation>) or M_In16(<Equation>)
[Terminology]
<Numeric Variable> Specifies the numerical variable to assign.
<Equation> Enter the input signal number.
(1)CR800-R/Q series
10000 to 18191: Multi-CPU share device
716 to 731: Multi-hand input.
900 to 907: Hand input.
(2)CR800-D series
0 to 255: Standard remote inputs.
716 to 731: Multi-hand input.
900 to 907: Hand input.
2000 to 5071: Input signal of PROFIBUS.
6000 to 8047: Remote input for CC-Link.
[Reference Program]
1 M1%=M_In(0) ' M1 will contain the value of the input signal 0 (1 or 0).
2 M2%=M_Inb(0) ' M2 will contain the 8-bit information starting from input signal 0.
3 M3%=M_Inb(3) And &H7 ' M3 will contain the 3-bit information starting from input signal 3.
4 M4%=M_Inw(5) ' M4 will contain the 16-bit information starting from input signal 5.
[Explanation]
(1) Returns the status of the input signal.
(2) M_Inb/M_In8 and M_Inw/M_In16 will return 8- or 16-bit information starting from the specified number.
(3) Although the signal number can be as large as 32767, only the signal numbers with corresponding hardware will return a valid value. Value for a signal number without corresponding hardware is set as undefined.
(4) This variable only reads the data.(4) This variable only reads the data.
[Function]
Executes one of multiple statement blocks according to the condition expression value.
[Format]
Select[] <Condition>
Case[] <Expression>
[ <Process> ]
Break
Case[] <Expression>
[ <Process> ]
Break
:
Default
[ <Process> ]
Break
End[] Select
[Terminology]
<Condition> Describe a numeric operation expression.
<Expression> Describe an expression using the following format. The type must be the same as the condition expression.
*IS <Comparison operator> <Constant>
*<Constant>
*<Constant>TO<Constant>
<Process> Writes any instruction (other than the GoToGoTo instruction) provided by MELFA-BASIC VI.
[Reference Program]
1 Select MCNT
2 M1=10 ' This line is not executed
3 Case Is <= 10 ' MCNT <=10
4 Mov P1
5 Break
6 Case 11 'MCNT=11 OR MCNT = 12
6 Case 12
7 Mov P2
8 Break
9 Case 13 To 18 '13 <= MCNT <=18
10 Mov P4
11 Break
12 Default ' Other than the above.
13 M_Out(10)=1
14 Break
15 End Select
[Explanation]
1. If the condition matches one of the Case items, the process will be executed until the next Case, Default or End Select. If the case does not match with any of the Case items but Default is described, that block will be executed.
2. If there is no Default, the program will jump to the step after End Select without processing.
3. The Select Case and End Select statements must always correspond. If a GoToGoTo instruction forces the program to jump out from a Case block of the Select Case statement, the free memory available for control structure (stack memory) decreases. Thus, if a program is executed continuously, an error will eventually occur.
4. If an End Select statement that does not correspond to Select Case is executed, an execution error will occur.
5. It is possible to write While - WEndWhile-WEnd and For-Next within a Case block.
6. Use "Case IS", when using the comparison operators (<, =, >, etc.) for the "<Expression>".
csabizalan I was going to suggest very similar solution.
Woebot You can create a job exactly as csabizalan suggested and use it as a storage of positions which you can call from your main job with a parameter pointing to the step# with position you are interested.
Let me use csabizalan's example:
//name:PointJob
0000 NOP
0001 Jump *LABEL
0002
0003 0001 MOVJ VJ=100.00 PL=0
0004
0005 *LABEL
0006 GETARG LI000 IARG#(1) //Store first argument to first local integer variable
0007 GETPOS LPX000 STEP#(LI000)
0008 CNVRT PX000 LPX000 UF#(1) TL#(1) //You can use local variable instead of (1) and control with call parameters: 2 and 3
0009 END
From the top bar turn on display step number for better visibility. You can have up to 999 steps.
Create at least one local Integer variable to make GETARG# instruction available in the Instruction List and to store the call parameter.
Store your positions between Jump*LABEL and *LABEL, (I suggest to turn on line comment for each point).
Create main job where you will call PointsJob.jbl from:
Switch I000 (or Alias)
CASE 1
SET LI000 1
CASE 2
SET LI000 2 //Step# were the point is stored
SET LI001 1 //UF# for converting to
...
DEFAULT
MSG: Something went wrong, mate!
PAUSE
ENDSWITCH
CALL JOB: PointJob (LI000) or CALL JOB: PointJob (LI000,LI001) //You can use up to 8 arguments.
Unfortunately, the number of steps and they order must be under strict control and can not be removed without messing steps with higher numbers. To make life easier I suggest to use as step 1 HOME position and use 1 as call argument set in CASE which point you want to delete.
In other words, when you open CIO.PRG and search for the input you want to use check if it is linked with command STR or GSTR:
STR #20010
OUT #30010
or
GSTR #20010
GOUT #30010
The first example links one bit of EXT input #20010 to EXT output #30010
The second one links one byte () of EXT inputs #20010 to #20017 to EXT output #30010 to #30017
Bits #xxxx8 and xxxx9 doesn't exist in Yaskawa robots, so the next group (byte) starts from #xxx20
There is BMOV instruction on a top of that, to link bigger number of I/O in one go.
STR #70017
BMOV #20010,297,#30010
Auxiliary relay #70017 is used by system as a marker of "CONTROL POWER ON COMPLETED (NORMALITY ON)". System powered up without problems.
BMOV instruction is an output and something must be used as an input. #70017 in the example it is used for that purpose.
So the example means:
"If Control Power On is completed without problems then link (map) 297 consecutive bytes of external inputs from #20010 to consecutive external outputs starting from #30010"
Fantastic!!! It works.
Hi all,
I used to edit names of inputs and outputs to custom in this file. This time I follow the same way as usual, open the file and to my surprise instead of indent or semi indent file I had one line with 33289 characters.
I compared the file with another one I created few months ago. The same hardware Staubli D24403000 and D24403100 v0.18. The old one was in readable, indent format. Meanwhile between last time and now I updated SRS2019 to 2019.11.1 version.
Did Staubli change a format of j206_SyCon_ENI.xml file from indent to one line?
Does anyone have similar experience and found out work around?
Will Staubli ever figure it out that change signal names to something meaningful (as per Profinet setting up process) is common practice for some users?
BR
mil3k
Good morning everyone, I have a Scara TS2-40 and I need to raise a signal when I pass over an inspection camera so that it can take a photo of the object being taken. How could I implement this function? My idea was to create a frame above the camera and then with the here() function calculate the position of the tool with respect to this frame. Do you have other ideas for realizing this function? Is there any function you can pass me on for example that creates a cube? Is there anything ready-made in the robot's functionality?
A greeting.
samu1995 Search Staubli technical database for below example:
"Monitoring the robot position in regards to an area"
Robot's BF frame is not the same as cameras BF frame.
If the camera is mounted on robot's flange than robots TF is cameras BF but you still need to calibrate camera to your tool. The controller can not convert offsets from camera if it doesn't know where it is in space in relation to robot's BF.
Check iCube documentation how set camera to robot.
You don't have the new functionalities Consumer and Feeder on SRS2019.
The solution is to create, on SRS, a second (and invisible :)) robot to move the part.
To peek (and place) the part, you can use the gripper's functionalities standard.
Have a nice day...
Invisible robot is exactly the solution I use at the moment to simulate answers from PLC.
The question is "What do you want realise ?", What type of Visual Component ?
Visual Components was an example only. I would love to use VC for my own benefits, but financial controllers are thick like a wood that I gave up on trying to convince them.
My main goal is to build a proof of concept for virtual commissioning of stand alone robot cell. Off course without a budget.
I have access to few OEM offline software packages and want to use combo of ROS and Gazebo or Unity with them to visualize the cell.
Hello mil3K,
There is different connection ti communicate with a robot (Soket, Opc server or Ua, Fieldbus...)
At the moment it doesn't matter that much to me the method of communication as long as it works.
I know there is OPC/UA server licence as plugin for SRS, but following this route I would prefer to use client on SRS and connect to external OPC/UA server run on another device.
Socket I never use it and don't understand how to use it, but one of my colleagues is very willing to write some "coupling gate" using APIs. I'm assuming that he would be willing to use it.
Fieldbus, especially ProfiNet would be my choice as this is the protocol we use in most of our machines.
Can you give us the link to your video ?
Have a nice day...
Here is one of examples: Offline Programming Staubli CS8 with VC4.1
I watched this tutorials many times, mostly after swear a lot on Staubli.
The video you suggested is not exactly what I was asking about, but it gave me an idea. On the video signals from the gripper are used to tell if the gripper is open or closed (at least that what I get from it).
I'm wondering what would happen if I add another behaviour and connect it status to virtual signal?
Hi All,
I have picking a part routine with vacuum cups and part of it is searching for part. Robot moves to last known position and lower with 0.5 mm steps until vacuum generator return iPartPicked (all cups are sealed) signal. It works fine on real robots but I want to try this routine offline without bypassing.
Is it possible and how to do it, if the answer is TRUE?
Then why post this comment if you can not add to the conversation anything of value?
I suppose it's a bot.
Just for future record, quick "How to do":
1. Open a cell with a controller.
2. On the Cell Explorer/Data/Geometry tab right click on a controller.
3. From dropped down menu choose Controller Configuration
4. In the new window choose Add Ons tab and tick a box expansion.
From now, a bunch of new commands starting with $ should be available for this controller.
Originally, I din't have an Add Ons tab in my Controller Configuration at SRS2019.10.1. In that case contact your local Staubli technical support and ask for zip file with extension installer for your emulator. I didn't try yet, if I won't need to repeat the same installation in cells with different emulator version ( in my case different than s8.13.4-Cs9_BS2855)
Does any one have the same "welcoming page" to the new portal.staubli.com as I or I'm the lucky one to have that pleasure?
No you can't preview other programs during remote run.
The only way that I know is edit during play, but it's not very user friendly and very easy to do more damage then it is worthen. There is no option to leave Edit (play) without writing changes.
Save all files on an USB stick during production and read them offline is safest way... and more comfortable than read them on tinny screen.
Yes its called concurrent jobs.
Or System Task if you want something like KUKA's submit.
the CIO file collected from robot has .PRM extension. according to KDiff3, this file is binary the same as one from the previous robot
My bad, the file I was talking about is CIOPRG.LST, not CIO.PRG (I corrected original post). It is text file with robots "PLC logic" and I/O mapping. Some time ago I prepared templates of that file and pasting it, along with IONAME.DAT, to the new robot and I/O mapping is done.