Allen Bradley / Rockwellimport os from reportlab.lib.pagesizes import letter from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib import colors # Create directories os.makedirs('generated', exist_ok=True) pdf_path = "generated/alan_henning_remote_controls_engineer.pdf" # Initialize Document doc = SimpleDocTemplate( pdf_path, pagesize=letter, rightMargin=40, leftMargin=40, topMargin=40, bottomMargin=40, title="Alan Henning - Remote Controls Engineer Resume" ) styles = getSampleStyleSheet() # Custom Styles title_style = ParagraphStyle( 'Name', parent=styles['Heading1'], fontName='Helvetica-Bold', fontSize=24, textColor=colors.HexColor("#1A365D"), alignment=1, spaceAfter=4 ) subtitle_style = ParagraphStyle( 'Subtitle', parent=styles['Normal'], fontName='Helvetica-Bold', fontSize=12, textColor=colors.HexColor("#4A5568"), alignment=1, spaceAfter=15 ) section_heading = ParagraphStyle( 'SectionHeading', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=14, textColor=colors.HexColor("#1A365D"), spaceBefore=10, spaceAfter=4 ) body_style = ParagraphStyle( 'Body', parent=styles['Normal'], fontName='Helvetica', fontSize=10, textColor=colors.HexColor("#2D3748"), leading=14, spaceAfter=6 ) bullet_style = ParagraphStyle( 'Bullet', parent=styles['Normal'], fontName='Helvetica', fontSize=10, textColor=colors.HexColor("#2D3748"), leading=14, leftIndent=15, bulletIndent=5, spaceAfter=4 ) story = [] # Header Section story.append(Paragraph("ALAN HENNING", title_style)) story.append(Paragraph("Senior Remote Controls & SCADA Engineer • 1099 Contractor<br/>Lyons, KS • •://linkedin.com", subtitle_style)) def add_divider(): t = Table([[""]], colWidths=[532]) t.setStyle(TableStyle([ ('LINEBELOW', (0,0), (-1,-1), 1.5, colors.HexColor("#1A365D")), ('BOTTOMPADDING', (0,0), (-1,-1), 0), ('TOPPADDING', (0,0), (-1,-1), 0), ])) story.append(t) story.append(Spacer(1, 8)) # Profile story.append(Paragraph("PROFESSIONAL SUMMARY", section_heading)) add_divider() summary_text = ( "Results-driven Senior Controls and SCADA Engineer with 10+ years of industrial automation expertise, " "specializing in 100% remote 1099 contract execution. Expert in full-stack architecture design, PLC programming, " "and plant-wide SCADA implementation. Proven track record of developing highly modular, clean, and thoroughly " "simulated control logic over secure corporate VPN networks, minimizing physical on-site commissioning timelines." ) story.append(Paragraph(summary_text, body_style)) story.append(Spacer(1, 5)) # Remote Capabilities story.append(Paragraph("REMOTE WORKSPACE CAPABILITIES", section_heading)) add_divider() story.append(Paragraph("• <b>Infrastructure:</b> High-speed gigabit fiber connection with fully redundant power and networking backups.", bullet_style)) story.append(Paragraph("• <b>Engineering Station:</b> High-performance dedicated multi-screen developer workstation optimized for simultaneous multi-platform virtual machines (VMs).", bullet_style)) story.append(Paragraph("• <b>Deployment Model:</b> Expert in utilizing client-provided RDP, secure corporate VPN links, and virtual environments to build, map, and test code cleanly without local software footprint.", bullet_style)) story.append(Spacer(1, 5)) # Technical Skills story.append(Paragraph("TECHNICAL EXPERTISE", section_heading)) add_divider() skills_data = [ [Paragraph("<b>PLC Platforms:</b>", body_style), Paragraph("Rockwell Automation (Studio 5000, Logix Designer, RSLogix 500/5000), B&R Automation (Automation Studio, ANSI C, Structured Text), Siemens TIA Portal.", body_style)], [Paragraph("<b>SCADA / HMI:</b>", body_style), Paragraph("Inductive Automation Ignition (Perspective, Vision, Jython Scripting, Transaction Groups), FactoryTalk View ME/SE, PanelView interfaces.", body_style)], [Paragraph("<b>Networks & Data:</b>", body_style), Paragraph("EtherNet/IP, OPC UA, Modbus TCP, SQL Database Integration, MQTT, Industry 4.0 IoT gateways.", body_style)] ] skills_table = Table(skills_data, colWidths=[110, 422]) skills_table.setStyle(TableStyle([ ('VALIGN', (0,0), (-1,-1), 'TOP'), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ('TOPPADDING', (0,0), (-1,-1), 0), ])) story.append(skills_table) story.append(Spacer(1, 5)) # Experience story.append(Paragraph("SELECTED CONTRACT & PROFESSIONAL EXPERIENCE", section_heading)) add_divider() # Role 1 story.append(Paragraph("<b>Senior Automation & SCADA Consultant (Remote 1099 Contractor)</b>", body_style)) story.append(Paragraph("<i>Self-Employed / Automation Integration Services | 2024 – Present</i>", body_style)) story.append(Paragraph("• <b>Rockwell Architecture Design:</b> Engineered complex, modular PLC logic structures within Studio 5000 utilizing reusable Add-On Instructions (AOIs) and User-Defined Data Types (UDTs) for multi-site processing facilities.", bullet_style)) story.append(Paragraph("• <b>Ignition SCADA Deployment:</b> Developed high-performance Perspective responsive dashboards, integrating plant floor data directly with SQL databases using transaction groups and customized Jython scripting.", bullet_style)) story.append(Paragraph("• <b>B&R Cross-Platform Bridging:</b> Programmed high-speed motion profile sequences in B&R Automation Studio using Structured Text, mapping communication variables flawlessly to master Rockwell processors over EtherNet/IP.", bullet_style)) story.append(Paragraph("• <b>Virtual Simulation:</b> Reduced downstream physical commissioning times by up to 40% through strict offline verification, logic emulation, and thorough tag testing via client-secure virtual networks.", bullet_style)) story.append(Spacer(1, 6)) # Role 2 story.append(Paragraph("<b>Controls Engineer</b>", body_style)) story.append(Paragraph("<i>Industrial Manufacturing Facility | 2016 – 2024</i>", body_style)) story.append(Paragraph("• Maintained, troubleshot, and optimized continuous-process manufacturing lines utilizing Rockwell ControlLogix and CompactLogix PLCs.", bullet_style)) story.append(Paragraph("• Designed plant-wide HMI updates, modernizing outdated legacy interfaces to improve real-time diagnostic visibility for operators.", bullet_style)) story.append(Paragraph("• Led internal electrical and panel design revisions, verifying compliance with National Electrical Code (NEC) standards and safety regulations.", bullet_style)) story.append(Spacer(1, 5)) # Education story.append(Paragraph("EDUCATION & CREDENTIALS", section_heading)) add_divider() story.append(Paragraph("<b>Associate of Applied Science (AAS) in Automation Engineering Technology</b>", body_style)) story.append(Paragraph("Graduated 2016 • Intensive coursework in Advanced PLC Logix, Fluid Power Systems, and Electrical Schematic Design", body_style)) # Build PDF doc.build(story)Good-to-Have