Wednesday, January 1, 2020
Saturday, January 26, 2019
Seting up Hirschmann swtiches for the first time without Serial cable ?!
Do you also have to set up Hirschmann swtiches for the first time ?!? Well yes, they dont come with default IP address and if you, like me, dont have a serial cable to configure them, yes you are also F*** !!!
Well good news, you could use Hirschmann Discovery tool, HiDiscovery to set up the IP and configure the settings. It's very well explained in this video ...
OBS: you have to set a static IP on your ethernet adapter, if not the HiDiscovery will go NUTS !!!
https://youtu.be/YgvzeXgi43Y
You're welcome, it took me half day to find something good enough that helps actually ...
Well good news, you could use Hirschmann Discovery tool, HiDiscovery to set up the IP and configure the settings. It's very well explained in this video ...
OBS: you have to set a static IP on your ethernet adapter, if not the HiDiscovery will go NUTS !!!
https://youtu.be/YgvzeXgi43Y
You're welcome, it took me half day to find something good enough that helps actually ...
Labels:
Configuration,
Hirschmann,
Industrial Switches,
networking,
Switch
Thursday, September 7, 2017
IEC6113-3 Standard - supported programming languages
IEC6113-3 Standard - supported programming languages :
- Instruction List (IL)
- Ladder Diagram (LD)
- Structured Text (ST)
- Sequential Function Chart (SFC)
- Function Block Diagram (FBD)
ABB Control Builder for various ABB products supports all these programming languages.
Labels:
ABB,
ABB Control Builder,
Automation,
Programming,
Standards
Saturday, September 1, 2012
Auto formatting the code in Visual Studio
- CTRL-A to select the whole text.
- Ctrl+K- Ctrl + F
Before Auto Format
Ctrl - A selects the whole text
Ctrl K + Ctrl F, auto formats the whole text
Thursday, May 31, 2012
LCD Keypad Shield for Arduino Duemilanove, DealExtreme
If you have ordered "LCD Keypad Shield for Arduino Duemilanove & LCD 1602" from DealExtreme and are wondering about how to get this thing working without datasheet, you are in the right place :-)
This product seems to be very similar(!) a product called "DFRobot LCD Keypad Shield for Arduino" and the Datasheet and even a library (LCD4bit_mod) for easy programming of it is available at following link, http://www.robotshop.com/dfrobot-lcd-keypad-shield-arduino.html, under useful links.
The only issue with the library is that this is built for old versions of Arduino and if one to make it work with newest version (Arduino 1.0), then some parts of the code should change. First you need to install the additional library in your Arduino on your computer ( tutorial on how to install). Afterwards one should change the content of LCD4bit_mod.cpp
The only issue with the library is that this is built for old versions of Arduino and if one to make it work with newest version (Arduino 1.0), then some parts of the code should change. First you need to install the additional library in your Arduino on your computer ( tutorial on how to install). Afterwards one should change the content of LCD4bit_mod.cpp
#include "LCD4Bit_mod.h"
#if (ARDUINO < 100)
extern "C" {
#include //not needed yet
#include //needed for strlen()
#include
#include "WProgram.h"
}
#else
#include
#endif
#if (ARDUINO < 100)
extern "C" {
#include
#include
#include
#include "WProgram.h"
}
#else
#include
#endif
String to Double issues in C# .NET
If you are simply using
double test = Double.Parse("12.45");
and it doesn't work due to formating issues, here is the right post for you. Almost certainly you're using the wrong CultureInfo. Try specifying CultureInfo.InvariantCulture to parse in. I suspect it's currently assuming that "." is a thousands separator rather than a decimal point.
CultureInfo Invc = new CultureInfo("");
Invc = CultureInfo.InvariantCulture;
x1 = Double.Parse("12.45", Invc);
alternative:
x1 = Double.Parse("12.45", CultureInfo.InvariantCulture);
Wednesday, May 30, 2012
Tab Order in C# Windows Form - Visual Studio 2010
Setting Tab order in C# (Visual Studio 2010):
3 - When you are done, click View - Tab Order to deactivate the indexing.
Source: http://msdn.microsoft.com/en-us/library/bd16a8cw.aspx
1 - Select View - Tab Order. This activates the tab-order selection mode on the form. A number (representing the TabIndex property) appears in the upper-left corner of each control.
2- Click the controls sequentially to establish the tab order you want.3 - When you are done, click View - Tab Order to deactivate the indexing.
Source: http://msdn.microsoft.com/en-us/library/bd16a8cw.aspx
Sunday, May 20, 2012
Flame Detector Sensor, Arduino Tutorial
This is a sample code to show how this cheap component from DealExtreme works with Ardunio (2.5$ with free shipping). These are very useful sensors for building [b]firefighting robots[/b] :D Look at the sample code for more info.
Sensor detecting match flame
purchase link:
http://www.dealextreme.com/p/arduino-flame-sensor-for-temperature-detection-blue-dc-3-3-5v-118075
OBS1: I assume this component uses Infrared and should be in direct sight to detect flame. This would work easily on big flames but for a match flame (very small), it could miss it.
OBS2: I read the values with analogRead but I guess they are readable with Digital Read as well as differences are quite high.
-------------------------
/*
FLAME detector connected to Arduino
http://www.dealextreme.com/p/arduino-flame-sensor-for-temperature-detection-blue-dc-3-3-5v-118075
Developer:
Akbar (Shahab) F. Moghaddam
20.05.12
Comment : I assume this component uses Infrared and should be in direct sight to detect flame. This would work easily on big flames but for a match flame (very small), it could miss it.
*/
//CONSTANTS
const int pinD0 = 0;
const int pinA0 = 1;
//VARIABLE
int A = -999;
int D = -999;
int readVal = 0;
boolean logging = false;
boolean fire = false;
boolean changed = true;
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
pinMode(0, INPUT);
pinMode(1, INPUT);
Serial.begin(19200);
}
void loop() {
initialAll();
readValues();
loggingProcess();
if (changed)
printState();
delay(1000);// wait for a second
}
void initialAll(){
readVal = 0;
}
void readValues(){
A = analogRead(pinA0);
D = analogRead(pinD0);
fireCheck();
if (Serial.available()>0){
readVal = Serial.read();
}
}
void loggingProcess(){
if (readVal == 'l'){
if (logging)
logging = false;
else
logging = true;
}
if (logging){
Serial.println("------------");
Serial.println("SYUMMARY");
Serial.print("A0:");
Serial.println(A);
Serial.print("D0:");
Serial.println(D);
Serial.println("------------");
}
}
void printState(){
if (fire){
Serial.println("------------");
Serial.println("FLAME Detected");
Serial.println("------------");
}
else{
Serial.println("------------");
Serial.println("NO FLAME");
Serial.println("------------");
}
changed = !changed;
}
void fireCheck(){
if (A < 350 && D < 350){
fire = true;
changed = !changed;
}
else{
fire = false;
changed = !changed;
}
}
Labels:
Arduino Technology,
Hardware,
Programming,
Sensors,
Tutorial
Quality Joystick from DealExtreme (very cheap)
Here I am about to write a tutorial about a cheap joystick I came across lately which can be bought for only 3.5$ with free shipping to Norway. It is a PS2 repair kit which can easily be used with Arduino concept as well (the input voltage is 5+). It can detect all 8 directions in 2D dimension and also Clicked feature.
Joystick tutorial
Purchase link:
http://www.dealextreme.com/p/repair-parts-replacement-analog-stick-module-for-ps2-controller-black-121340
Here the outputs from the joystick are only VRx, VRy, SW, GND and +5V.
VRx = x value (see program)
VRy = y value (see program)
SW = if Clicked or Not -> Clicked = 0, NOT clicked = 1
-----------------------
/*
JOYSTICK Program connected to Arduino
http://www.dealextreme.com/p/repair-parts-replacement-analog-stick-module-for-ps2-controller-black-121340
Developer:
Akbar (Shahab) F. Moghaddam
20.05.12
Comment : Front, Back, left, right
*/
//CONSTANTS
const int pinX = 2;
const int pinY = 1;
const int pinSW = 0;
//VARIABLE
int VRx = -999;
int VRy = -999;
int SW = -999;
int readVal = 0;
boolean logging = false;
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
Serial.begin(19200);
}
void loop() {
initialAll();
readValues();
loggingProcess();
printState();
delay(1000);// wait for a second
}
void initialAll(){
readVal = 0;
}
void readValues(){
VRx = analogRead(pinX);
VRy = analogRead(pinY);
SW = analogRead(pinSW);
if (Serial.available()>0){
readVal = Serial.read();
}
}
void loggingProcess(){
if (readVal == 'l'){
if (logging)
logging = false;
else
logging = true;
}
if (logging){
Serial.println("------------");
Serial.println("SYUMMARY");
Serial.print("X:");
Serial.println(VRx);
Serial.print("Y:");
Serial.println(VRy);
Serial.print("SW is:");
Serial.println(SW);
Serial.println("------------");
}
}
void printState(){
if (SW == 0){
Serial.println("------------");
Serial.println("CLICKED");
Serial.println("------------");
}
else if (VRx > 330 && VRx < 350 && VRy > 325 && VRy < 350){
Serial.println("------------");
Serial.println("NORMAL");
Serial.println("------------");
}//NORMAL
else if (VRx > 660 && VRx < 700 && VRy > 325 && VRy < 350){
Serial.println("------------");
Serial.println("FRONT");
Serial.println("------------");
}//FRONT
else if (VRx < 5/*==0*/ && VRy > 325 && VRy < 350){
Serial.println("------------");
Serial.println("BACK");
Serial.println("------------");
}//BACK
else if (VRx > 330 && VRx < 350 && VRy < 5 /*==0*/){
Serial.println("------------");
Serial.println("LEFT");
Serial.println("------------");
}//LEFT
else if (VRx > 330 && VRx < 350 && VRy > 665 && VRy < 700){
Serial.println("------------");
Serial.println("RIGHT");
Serial.println("------------");
}//RIGHT
else if (VRx > 350 && VRx < 680 && VRy > 350 && VRy < 670){
Serial.println("------------");
Serial.println("FRONT-RIGHT");
Serial.println("------------");
}//FRONT-RIGHT
else if (VRx >= 0 && VRx < 350 && VRy > 350 && VRy < 680){
Serial.println("------------");
Serial.println("BACK-RIGHT");
Serial.println("------------");
}//BACK-RIGHT
else if (VRx >= 0 && VRx < 330 && VRy >= 0 && VRy < 325){
Serial.println("------------");
Serial.println("BACK-LEFT");
Serial.println("------------");
}//BACK-LEFT
else if (VRx > 350 && VRx < 680 && VRy >= 0 && VRy < 325){
Serial.println("------------");
Serial.println("FRONT-LEFT");
Serial.println("------------");
}//FRONT-LEFT
else{
Serial.println("------------");
Serial.println("UNKNOWN");
Serial.println("------------");
}//UNKNOWN
}
Labels:
Arduino Technology,
Hardware,
Programming,
Sensors,
Tutorial
Friday, May 4, 2012
ABB Robotstudio Tutorial, part 1 - Basic Station
I have started a series of tutorials for teaching how to work with Robotstudio for students at Robotica Osloensis
Reading a value from FlexPendant in ABB Robots, TPRead
On ABB robots, one have access to a syntax in RAPID programming language called TPRead. TPRead allows the programmer to read live values from the user (operator) while your code is being run.
TPReadNum reg1,"Text";
PROC readJNumFromPendant()
TPErase;
TPReadNum reg1,"Enter Input Number?";
readValue := reg1;
TPWrite "Read Value is: " + ValToStr(testRead);
ENDPROC
RAPID_refer4.0
TPReadNum reg1,"Text";
PROC readJNumFromPendant()
TPErase;
TPReadNum reg1,"Enter Input Number?";
readValue := reg1;
TPWrite "Read Value is: " + ValToStr(testRead);
ENDPROC
RAPID_refer4.0
Tuesday, May 1, 2012
Arduino Mega 2560 driver could not be found on Windows 7
Issue: Arduino Mega 2560 driver could not be found on Windows 7
Solution: Simply go to Start - right click on Computer - Properties - Device Manager - Under Other Devices, Find Arduino Mega 256 - right click and choose update driver - Choose Browse computer for driver software - Click Browse and Navigate to your Arduino home folder(where you installed Arduino) and choose drivers folder and click Next. The windows 7 would find the right driver inside the folder.
Happy coding with Arduino :-)
Solution: Simply go to Start - right click on Computer - Properties - Device Manager - Under Other Devices, Find Arduino Mega 256 - right click and choose update driver - Choose Browse computer for driver software - Click Browse and Navigate to your Arduino home folder(where you installed Arduino) and choose drivers folder and click Next. The windows 7 would find the right driver inside the folder.
Happy coding with Arduino :-)
Thursday, April 19, 2012
Breaking a loop in Rapid ABB
To break an infinite loop in Rapid ABB try the following code:
WHILE (TRUE)
Counter = Counter + 1;
IF (Counter = 5) THEN
Return;
ENDIF
ENDWHILE
WHILE (TRUE)
Counter = Counter + 1;
IF (Counter = 5) THEN
Return;
ENDIF
ENDWHILE
Labels:
ABB,
Industrial Manipulators,
Rapid,
Robot Programming
Wednesday, April 11, 2012
Visual Studio shortcut for commenting program lines
Ctrl-K, Ctrl-C – Comments selected text
Ctrl-K, Ctrl-U – De-Comment selected text
Ctrl-K, Ctrl-U – De-Comment selected text
Tuesday, March 27, 2012
Reseting program pointer, ABB PC SDK
ResetProgramPointer method
Using ResetProgramPointer you can set the program pointer to the main entry
point of the task.
VB:
aTask.ResetProgramPointer()
C#:
aTask.ResetProgramPointer();
Stop [ \NoRegain ], ABB RAPID
MoveL point_1, v1000, z10, tool1;
TPWrite “Jog the robot to the position for pallet corner 1”;
Stop \NoRegain;
p1_read := CRobT();
MoveL point_2, v500, z50, tool1;
Program execution stops with the robot at point_1. The operator jogs the robot to p1_read. For the next program start, the robot does not regain to point_1, so the position p1_read can be stored in the program
Wednesday, February 22, 2012
3pi robot LCD from Arduino
What is a 3pi robot ?
What is an Arduino board ?
What is an AVR Atmel Micro-controller ?
----------------
#include
OrangutanLCD lcd;
void setup() // run once, when the sketch starts
{
}
void loop() // run over and over again
{
// avoid clearing the LCD to reduce flicker
lcd.gotoXY(0, 0);
lcd.print("Line 1");
lcd.print(" "); // overwrite any left over digits
lcd.gotoXY(0, 1);
lcd.print("Line 2");
lcd.print(" "); // overwrite any left over digits
}
Labels:
3pi robots,
Arduino Technology,
Arduino tricks,
LCD
3pi motor control from Arduino
What is a 3pi robot ?
What is an Arduino board ?
What is an AVR Atmel Micro-controller ?
----------------
#include
OrangutanMotors motors;
void setup() // run once, when the sketch starts
{
}
void loop() // run over and over again
{
// note that the following line could also be accomplished with:
// int pot = analog.read(7);
//int pot = analog.readTrimpot(); // determine the trimpot position
int motorSpeed1 = 25; // turn pot reading into number between -256 and 255
int motorSpeed2 = 0; // turn pot reading into number between -256 and 255
// Minus - Zero -> back to right (turn around one point)
// Zero - Minus -> Back to leftt (turn around one point)
// Positive - Zero -> front to right (turn around one point)
// Zero - Positive -> front to left (turn around one point)
// Speed1 < Speed2 -> back to right
// Speed1 > Speed2 -> Back to leftt
// Speed1 > Speed2 -> front to right
// Speed1 < Speed2 -> front to left
// looking at robot from back -> left number goes to left motor & right goes to right motor
motors.setSpeeds(motorSpeed1,motorSpeed2);
}
---------------
What is an Arduino board ?
What is an AVR Atmel Micro-controller ?
----------------
#include
OrangutanMotors motors;
void setup() // run once, when the sketch starts
{
}
void loop() // run over and over again
{
// note that the following line could also be accomplished with:
// int pot = analog.read(7);
//int pot = analog.readTrimpot(); // determine the trimpot position
int motorSpeed1 = 25; // turn pot reading into number between -256 and 255
int motorSpeed2 = 0; // turn pot reading into number between -256 and 255
// Minus - Zero -> back to right (turn around one point)
// Zero - Minus -> Back to leftt (turn around one point)
// Positive - Zero -> front to right (turn around one point)
// Zero - Positive -> front to left (turn around one point)
// Speed1 < Speed2 -> back to right
// Speed1 > Speed2 -> Back to leftt
// Speed1 > Speed2 -> front to right
// Speed1 < Speed2 -> front to left
// looking at robot from back -> left number goes to left motor & right goes to right motor
motors.setSpeeds(motorSpeed1,motorSpeed2);
}
---------------
Labels:
3pi robots,
Arduino Technology,
Arduino tricks,
Motor
Friday, January 20, 2012
Making mesh plot out of discrete points in Matlab
If you are wondering how to make a mesh plot out of discrete points, check out following link :
Tuesday, January 10, 2012
Printing out with ABB Rapid, TPWrite
TPWrite "The value is now "+ValToStr(pTemp.extax.eax_c);
This command would print out the data on FlexPendant. In robotStduio this would not be written in the output window(!), but you can follow this in Virtual FlexPendant.
This command would print out the data on FlexPendant. In robotStduio this would not be written in the output window(!), but you can follow this in Virtual FlexPendant.
Subscribe to:
Posts (Atom)



