every day is a new page, you never know what you may run into. often you get to use things you are familiar with, sometimes you get product you've never seen. either way, you still have to wire it and program it and make sure it works in next couple of days. many programs are quite large but not all.
for example month ago i was called to program one machine that competitor was struggling with and the time was running out. In 4 weeks I wrote some code while drinking lots of coffee:
PLC code (about 600 rungs of ladder logic, they wrote the main code with sequence of operation, interlocks etc. I created support functions, alarms, mode selection, handshaking and data mapping with HMI and robot etc).
On the robot created UserTech library as they wanted (never used UserTech before, this was two day job to learn and implement), then configured handshaking with PLC, wrote couple more functions to deal with I/O etc. and 256 programs for models (many of them are just copy of ones I created as template, so those will need to be changed when actual model is setup).
Next part was PC application acting as HMI and talking to PLC and Robot (this was a bigger part). Loaded all components, registered. PC app has menu, I/O monitoring and forcing, different modes of operation, recipe selection, recipe editor, alarms screen, database access, settings and options screen, three security levels with user editor, graphs, main screen with all the animated flows, gauges, valves, counters, bypass modes, calibration screen, utilities, process logger, report builder (with printing, selection or printer, page formatting etc.), own wallpaper selection and other gizmos.
And this is good example where reusing parts of previous code came in handy. Without bits and pieces from previous jobs this would be total b***ch. As you work, you try to make your own libraries or collections of code for whatever you are working on. then when the time comes you do your best to tie it all together on a next job. if you are going to write everything from scratch every time, you will never make any money. programming is maybe half of the job.
Not all time was spent on programming, couple of days were spent on some modifications of tanks and valves, setting up flowmeters (they mde their own because media is rather unique and highly abrasive so nothing on the market seem to stand up to it). few days was spent in testing, field I/Os (both robot and PLC have DeviceNet nodes for examples). Programming was maybe 80% on this job, but on average it is maybe 50%.
in general one project is something like this:
review project requirements, talk to customer, maybe visit plant and check the process, parts or whatever is involved, read plant specs and requirements, any drawings or whatever documentation there may be, select hardware for the job, release purchase orders, while waiting for parts do electrical diagrams and have customer review and approve, pass diagrams to electricians to build panels, check if all ordered material arrived and fix any issues, check if electricians have any questions or problems, maybe order couple of things, write programs, check if panels and machine are wired, is everything labelled correctly etc, do power-up check, download programs, configure networks, then do I/O check and calibration of every sensor etc., check safety circuit and interlocks, test manual controls, test alarms, test anything else like servos, VFDs, robots, etc., arrange safety inspection, arrange electrical inspection, carefully try stage by stage in auto cycle using step mode, continue debugging until everything works, do safety and electrical inspection (get safety stickers and safety reports), do auto cycle test in full auto (no step mode), call customer for demonstration, arrange for signoff, demo all the tests for customer and signoff, write operating manual while equipment is being disassembled and shipped to customer, arrange for several printed copies along with drawings and BOM, get to customer site and try local coffee, supervise assembly, arrange for hookup of services like power and air, wait for second electrical inspection (power hookup), do quick I/O check to verify that nothing was missed or connected wrong way, tie into customers systems (network, assembly line, whatever), test handshaking, verify and if needed repeat any calibration (due shipment), runs few cycles, verify that data logging and passing to server is working, train operators and maintenance, hand over files (drawings, spare parts list, BOM, manuals, programs etc), stay for production run and maybe do final touch here or there if needed. if everything is cool, make backup of everything, collect final signature, get to the mall to buy present for wife and kids then go home to work the next one.
not sure what you mean by mm and switches. there are many and different form and style.
panel mount - buttons, selector switches, estop buttons, capacitive or optotouch buttons, door switches, disconnects, motor isolation switches, motor reversal switches etc.
equipment mount - limit switches, inductive and capacitive proximity sensors, photo eyes and lasers (many types), reed switches (on actuators), flow and pressure switches, color sensors...
safety - gate switches, enabling devices like dead man switches, trapped key system (fortress etc), transpoder/coded switches, muting sensors,
pcb - tactile, selector, slide, etc.