Post Job Free
Sign in

Software Development

Location:
Berkley, MI, 48072
Posted:
March 09, 2010

Contact this candidate

Resume:

*** ****** **. ***** 248-***-****

E-mail

Berkley, MI murrellr@ameritech.n

***** **

Robert A. Murrell

Objective To continue a career in software development that will take

advantage of my experience in the programming of embedded systems

and allow the opportunity to move into new software development

environments.

Summary of I have much experience in design and development of software for

qualificati microprocessor systems and PCs used for industrial control. I

ons program primarily in C and PERL for UNIX/Linux, and Microsoft

C++/Visual Basic 6 for Windows. I also have experience in

programming other languages including JavaScript/CGI/PHP/HTML,

PASCAL, assembly languages, and other proprietary and scripting

languages.

My career can be summed up as making disparate systems communicate

and cooperate with each other, be they software, hardware, or human.

Work Jul 1985 - Feb 2009 FANUC Robotics America, Inc. Rochester Hills, MI

experience

Senior Product Development Engineer

I worked independently or as part of a team in the development of

robot controller core and peripheral software. The controller is

essentially a large embedded system comprising of almost 30,000

source modules. My responsibilities also included preserving my

code in IBM Clearcase, and testing and documenting my work in an

ISO-9000 environment.

Software build administration - I have basic administration skills

for UNIX and Linux, including LAMP server maintenance. I programmed

in C, PERL, and BASH scripts to run the software build environment.

I also created web interfaces to the software build tools using

DHTML, JavaScript, CGI, PHP, and Server Side Includes.

Off-line robot programming tools - I wrote customer programs for

Windows in C++ and C using Microsoft Development Studio and Visual

Basic 6. The C++ projects were primarily MFC but included some STL

for ported code. These products ranged from reusable ActiveX and

GUI-less COM/DCOM components to full applications.

Robot core software development - I developed code in C and assembly

language for the robot controller operating system. Most code was

targeted for Motorola 68000, Freescale PowerPC, and Intel x86

architectures, with some other miscellaneous processors. The

functions I developed ranged from low level drivers to user

interface components.

Debugging and diagnostic tools. - I have experience operating

software and hardware tools used for developing embedded systems

such as In-Circuit Emulators, protocol analyzers, logic analyzers,

oscilloscopes, spectrum analyzers, VOMs, etc., and can solder. I

have a good grasp of how the hardware works. I create software and

hardware modules used to link disparate development tools for ease

of program development.

Industrial communications - I Implemented both on and off-line

drivers and tasks to implement serial and Ethernet based proprietary

and standard protocols to allow the robot controller to communicate

with external devices. The Ethernet protocols included standard

Internet protocols like BOOTP, DHCP, TFTP, and HTTP.

Oct 1980 - Jul 1985 Westinghouse Electric Co. Numa-Logic Department

Madison Hts., MI

Junior Engineer

Design, prototype, and program Programmable Logic Controller (PLCs).

- I worked in all phases of product development, from design to

prototyping and release, including in-house test fixtures to

maintain the product.

Military Oct 1973 - Oct 1980 U. S. Air Force

Staff Sergeant, Ground Navigation Aids Repairman

USAF Commendation Medal

Education 1982 Macomb County Community College Macomb, MI

Associate Electronics Engineering Technology

Summa Cum Laude

Patents and U. S. Patent No. 4414632, Automatic Monitoring System for Radio

licenses Signal

FCC General Radiotelephone License

Technician class Amateur Radio Operators license

960 Oxford Rd. Phone 248-***-****

E-mail

Berkley, MI murrellr@ameritech.n

48072 et

Robert A. Murrell

Resume Embedded Software Development Experience

Supplement

My first job at Westinghouse was working either independently or as

part of a team developing Programmable Logic Controllers (PLCs),

both hardware and software design. These devices were designed

around 8-bit microprocessors, specifically the Intel 8080 and 8085,

and the Zilog Z80. One advanced unit used a 56-bit processor built

with the AMD Am2901 bit-slice ALU. It also used an Intel 8088

16-bit processor for communications and control. We also designed

peripheral devices using microprocessors from Motorola, Rockwell,

and RCA. Software was written assembly language due to the

time-critical nature of the PLC execution.

I also worked on off-line software to run on IBM-compatible PCs

under MS-DOS. This included program loaders and monitors, and

drivers for various industrial communications protocols to interface

the PLCs to third-party Human-Machine Interface (HMI) products.

At FANUC Robotics, I worked either independently or as part of a

team to develop software for what was essentially a very large

embedded system. Almost all the software was developed in-house,

from the real-time operating system to the user interface. All the

software was written in ANSI C except for certain time-critical code

in the OS, which was written in assembly language. This device was

originally designed around the Motorola 68000 processor, but evolved

through the PowerPC PPC603e/MPC860 and then the Freescale

MPC7440/MPC8270 processors.

To support this unit I also worked on off-line products that ran on

a PC, first under MS-DOS and then under Microsoft Windows. These

products were written in C++ and Visual Basic, and often

incorporated ported code from the unit. This development ranged

from low level communications drivers to the user interface. The

communications involved moving information in and out of the primary

system to external computers using proprietary or industry standard

protocols. The transmission medium was primarily RS-232/422 or

TCP/IP Ethernet, but had included the international standard

Manufacturing Automation Protocol (MAP) early on.

I also worked on a few smaller single board computer peripheral

devices. The most recent of these was a tethered control pendant

for the primary controller. This was essentially a dedicated

terminal. It used a Hitachi SH3 card PC with proprietary peripheral

hardware, running Windows CE 2.1 as the OS. Its purpose was to

provide a graphical user interface for the controller. All the

software was written under Microsoft C++ using Visual Studio. My

primary responsibility was to create COM object wrappers to the

display, keyboard, and communications devices.

Debugging and testing was accomplished through software and hardware

tools. Software tools consisted of built-in monitor tasks or the

native debugger in Visual Studio. Hardware tools consisted of

In-Circuit Emulators (ICE), logic analyzers, protocol analyzers,

spectrum analyzers, oscilloscopes, and other test equipment. Many

of these tools required custom firmware to make the development

tools work together in a seamless environment. This ranged from

specialized fixtures for interfacing disparate devices to software

for converting compiler symbolic output to a loadable format for the

emulators.

For all these systems, software was developed off-line on UNIX using

standard editing tools and cross compilers, or on Microsoft Windows

using Visual Studio in a simulated environment. Source code was

controlled with IBM Rational Clearcase running under both UNIX and

Windows.

In addition to the above, I worked within a well-defined ISO-9000

compliant development process and provided clear documentation for

each phase of a project development, from specification to

post-release support.

960 Oxford Rd. Phone 248-***-****

E-mail

Berkley, MI murrellr@ameritech.n

48072 et

Robert A. Murrell

Resume PC products Development Experience

Supplement

At Westinghouse Electric Numa-Logic department, I worked as part of

a team to develop the Advanced Program Loader. This program was

used to load ladder programs and monitor all Numa-Logic Programmable

Logic Controllers (PLCs). It was to be run on an IBM or Compaq

portable PC under MS-DOS. This program was written in PASCAL and

assembly language. I was responsible for the communications and

program status screens. The communications required writing a fully

interrupt-driven handler in assembly language that accessed the PC

hardware directly, bypassing its Basic Input/Output System (BIOS).

I also wrote a stand-alone communications driver to allow any PC to

communicate with the PLCs. This driver gave third-party

Human-Machine Interface (HMI) programs the ability to monitor the

PLC status. The driver was written in assembly language and C. It

was an MS-DOS Terminate-and-Stay-Resident (TSR) driver that had a

BIOS-like interface. It could communicate with a PLC directly

(point-to-point), over several proprietary networks, or the industry

standard Modbus protocol.

At FANUC Robotics, I wrote a more advanced communications driver to

communicate with all FANUC robots. It was written in assembly

language and C, and was also a TSR driver under MS-DOS. However, it

executed during the system timer tick, borrowing small blocks of CPU

time each tick. This allowed it to run in the background

simultaneously with the application using it. I wrote an API

library to access its functions allowing it to be used by most any

program development language. Several FANUC software products were

created using this driver.

To aid in the loading and deployment of FANUC robots, I created a

program for the PC that emulated an external floppy disk drive.

This was a very expensive device that was needed to load a robot

controller in the field. The emulator program allowed any PC,

specifically a laptop, to be used instead. This program was widely

used by customers and internal service technicians until the

development of the newer Internet-enabled robot controllers.

Throughout my career at FANUC Robotics I worked on the off-line

program development tools for the robots. These tools consisted of

native robot controller code written in ANSI C and ported to the PC.

They allow the operator to develop robot programs on a PC and to

transfer them to the robot for execution. Initially, I was the sole

developer of these tools. The early versions ran under MS-DOS. The

controller code was given an MS-DOS command line interface to create

a set of utility programs. I wrote a character-based menu shell to

run the utilities to make them easier to use.

The next version of the off-line program ran under Windows. I was

responsible for the individual development tools. The menu shell

was written in Visual Basic. I converted the ported code into

Dynamic Link Libraries (DLLs) so they could be called by Visual

basic as APIs instead of shelling the executables. This gave the

menu shell greater control over calling each function and handling

returned errors. This Windows version of the off-line program

supported over fifteen different versions of robot controllers.

Each robot version required its own version of off-line tools. I

developed a mechanism to dynamically load the correct DLLs for the

targeted version. I also maintained the command-line version of

each tool for compatibility with earlier products.

The final version of the off-line development tools was to

incorporate them into FANUC's ROBOGUIDE robot simulation product.

This was a very large Visual Basic project consisting hundreds of

forms and class modules. The version-dependent DLLs were given a

GUI-less COM object wrapper that set up the environment and loaded

the correct DLLs based on the selected version and robot

configuration. These COM objects were written in Microsoft Visual

C++. I also created a context-sensitive editor for the robot

languages that was incorporated into this product.

One component of ROBOGUIDE is the virtual robot, which is the entire

robot controller software ported over to Windows as an

out-of-process COM server object. This server accurately simulates

the execution of a real robot. I developed the mechanism to

programmatically configure the virtual robot and to debug it using

Microsoft Visual Studio. Also, to help inventory and monitor all

virtual robots on a PC (more than one can be running at a time), I

created a Windows Explorer Namespace Extension to visually list them

and their properties.

At FANUC, the preferred program development standard was to develop

functional entities in C or C++ as ActiveX controls or GUI-less COM

objects, and to develop the user interface in Visual Basic. This

allowed the quick development of new products with the reusability

of functions.

I also worked on a tethered control pendant for the primary

controller. This was essentially a dedicated terminal. It used a

Hitachi SH3 card PC with proprietary peripheral hardware, running

Windows CE 2.1 as the OS. Its purpose was to provide a graphical

user interface for the controller. All the software was written

under Microsoft C++ using Visual Studio. My primary responsibility

was to create COM object wrappers to the display, keyboard, and

communications devices. The display object was a VT-220 terminal

emulator with FANUC extensions. This object required calling

low-level Windows API functions to properly render the text, as the

standard window objects available with Microsoft Visual Studio were

inadequate.

As part of this control pendant project, the entire functionality of

the robot controller was objectized as a GUI-less COM object using

standard Internet protocols to extract information from the robot

controller. I created many of the internal objects and the

mechanism to return asynchronous events from the controller to be

thrown by the object. This robot controller object was ported back

to Windows and has become the standard communications mechanism for

all FANUC off-line products.

Another project I worked on was FANUC's stand-alone vision

processor. This device was PC based and used cameras to locate

objects to be manipulated by one or more robots. To integrate this

device to the robot, a mechanism was needed to allow the displaying

of images on the teach pendant. The pendant was essentially a web

browser. I created an HTTP web server ActiveX control based on a

simple HTTP server example. The code was significantly modified to

implement CGI and SSI capability, and to give it an ActiveX

interface. The vision processor, written in Visual Basic, would

serve web pages as its user interface and provide dynamic content

including images.

960 Oxford Rd. Phone 248-***-****

E-mail

Berkley, MI murrellr@ameritech.n

48072 et

Robert A. Murrell

Resume Build Administrator Experience

Supplement

Since 2001, I had been the build administrator for all software

products at my previous employer. The system software was built on

a Sun SPARC server running Solaris OS-5. Source code was managed by

IBM Rational Clearcase and was built using its Make utility.

However, the overall order of the build and the staging and

assembling of the final product was accomplished through PERL and

BASH scripts. At the time I took over this responsibility, the

process was poorly documented and the tools consisted of many small

scripts that had to be executed in the proper order with specific

arguments. We were maintaining 11 active versions of the software,

and the process took much manual intervention and was very error

prone. Initially, it took 100% of my time to build the products and

the release of a product took as long as two weeks.

After thoroughly documenting the process I analyzed the process to

determine where the errors were being made. I established common

naming conventions for all aspects of the build (file and directory

names, Clearcase label, branch, and view names, etc), and wrote

several supervisory PERL scripts to run the lower level scripts in

the proper order with the correct arguments. This has allowed the

building and releasing of several versions simultaneously and yet

reduced the amount of my time dedicated to building software to less

than 50%.

The basic build scripts were written in the mid-1990s after a mass

conversion from DEC VAX based build. Although the actual build was

performed using standard UNIX software development tools, PERL

scripts were used to preprocess the file lists to create the

makefiles used to build the modules. A single large PERL script was

created to control the order of the build, which took 12 hours to

run. The process of applying post-build changes involved many

specialized PERL scripts that were very sensitive to the content of

the arguments and had to be executed in the proper order. This led

to a lot of errors by the developers running the tools.

All the PERL tools were procedural (not OOP). None of the

third-party build tools, include Clearcase, had PERL CPAN modules

created for them, so the only interface to them was through shelling

the process and capturing the output to determine pass or fail. To

run the low-level scripts, the supervisory scripts had to be

intelligent, "mining" the information needed to build the correct

command line arguments from various non-database sources (directory

names, file contents, documents, logs, program status, etc.) These

scripts did a lot of string manipulations using regular expressions

to glean the data from the sources.

To build the supporting off-line Microsoft Windows products, I wrote

PC PERL scripts controlled by the UNIX scripts to simultaneously

build these products with the system software. Microsoft

Development Studio, Visual Basic, and other third-party tools were

run from a command line, shelled from the PERL scripts like the UNIX

scripts. Since the steps for building the PC products were well

defined and common to all, the scripts parsed a text data file

listing the modules to build and then performed the proper steps in

the correct order. This made it easy for developers to add new

products with minimal interaction with the build process.

To ease the use of these scripts by the developers, I had an Apache

web server installed on the build computer. I created graphical

interfaces to these tools using Javascript, CGI (Common Gateway

Interface), and SSI (Server-Side Includes) to deliver dynamic

content to the web forms. SSI was the predecessor to PHP and ASP.

These scripts were used to retrieve dynamic content to the web

forms, like dropdown lists. The Javascript was used to manipulate

and validate the operator input. The CGI scripts were used to

process the forms and perform the requested task. The CGI and SSI

scripts were executed using the Apache interfaces.

Our ISO-9000 process generated hundreds of files for each release.

These files were put into Clearcase, but an indexing and

cross-referencing mechanism was ever put into place. I was often

called upon to write specialize PERL scripts to mine specific

information from these many files and assemble it into Microsoft

Excel spreadsheets to be used by management.



Contact this candidate