<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kim Hieu Work</title>
    <description>The latest articles on Forem by Kim Hieu Work (@kimhieuwork).</description>
    <link>https://forem.com/kimhieuwork</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3539343%2F6faf2695-da3d-42f8-b258-1b148b00864d.jpeg</url>
      <title>Forem: Kim Hieu Work</title>
      <link>https://forem.com/kimhieuwork</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kimhieuwork"/>
    <language>en</language>
    <item>
      <title>Những điều trường đại học không dạy bạn – Phần 1</title>
      <dc:creator>Kim Hieu Work</dc:creator>
      <pubDate>Mon, 10 Nov 2025 03:24:16 +0000</pubDate>
      <link>https://forem.com/kimhieuwork/nhung-dieu-truong-dai-hoc-khong-day-ban-phan-1-180i</link>
      <guid>https://forem.com/kimhieuwork/nhung-dieu-truong-dai-hoc-khong-day-ban-phan-1-180i</guid>
      <description>&lt;h1&gt;
  
  
  🧩 Những điều trường đại học không dạy bạn – Phần 1
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Tác giả:&lt;/strong&gt; Phạm Huy Hoàng (2015)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Chủ đề:&lt;/strong&gt; Chuyện nghề nghiệp, developer, kỹ năng thực tế  &lt;/p&gt;

&lt;h2&gt;
  
  
  Bài viết này được tóm tắt từ blog của Tôi đi code dạo
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🎯 Chủ đề chính
&lt;/h2&gt;

&lt;p&gt;Bài viết nói về &lt;strong&gt;những kỹ năng lập trình thực tế mà sinh viên ngành CNTT thường không được học ở trường&lt;/strong&gt;, nhưng lại &lt;strong&gt;rất cần trong công việc&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Loạt bài gồm 3 phần:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Kỹ thuật lập trình (phần 1 – bài này)
&lt;/li&gt;
&lt;li&gt;Cách nâng cao giá trị bản thân
&lt;/li&gt;
&lt;li&gt;Thành công &amp;amp; thăng tiến trong môi trường làm việc
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💻 Những điều trường đại học không dạy bạn (về kỹ thuật lập trình)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 🧠 Cách đọc và viết code
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ở trường: chỉ cần code chạy đúng là đạt.
&lt;/li&gt;
&lt;li&gt;Thực tế: code phải &lt;strong&gt;dễ đọc, dễ bảo trì, dễ hiểu&lt;/strong&gt; vì nhiều người cùng làm.
&lt;/li&gt;
&lt;li&gt;Trường &lt;strong&gt;không dạy&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Cách đặt tên biến, hàm, viết API dễ dùng.
&lt;/li&gt;
&lt;li&gt;Nguyên tắc &lt;strong&gt;SOLID&lt;/strong&gt;, &lt;strong&gt;Design Pattern&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;📚 Gợi ý đọc:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Clean Code&lt;/em&gt; – Robert C. Martin
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Code Complete&lt;/em&gt; – Steve McConnell
&amp;gt; Hiểu &amp;amp; áp dụng 30–50% nội dung đã đủ vượt hơn 50% developer khác.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. 🧰 Sử dụng IDE &amp;amp; Debug
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Nhiều sinh viên vẫn code trên Notepad, thi bằng giấy.
&lt;/li&gt;
&lt;li&gt;Khi đi làm, &lt;strong&gt;không biết dùng IDE&lt;/strong&gt; như Visual Studio, Eclipse, NetBeans.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Không biết debug, không biết NuGet, Maven&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;👉 Học dùng IDE sớm giúp tiết kiệm thời gian và làm việc chuyên nghiệp hơn.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. 🧪 Testing &amp;amp; Unit Test
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Nhiều người không hiểu:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;test case&lt;/code&gt;, &lt;code&gt;black-box&lt;/code&gt;, &lt;code&gt;white-box testing&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;JUnit&lt;/code&gt;, &lt;code&gt;NUnit&lt;/code&gt;, &lt;code&gt;Jasmine&lt;/code&gt;, &lt;code&gt;mock&lt;/code&gt;, &lt;code&gt;stub&lt;/code&gt;, &lt;code&gt;IoC&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Sai lầm: nghĩ chỉ tester mới cần test.
&lt;/li&gt;

&lt;li&gt;Thực tế: &lt;strong&gt;dev giỏi phải biết test code của mình&lt;/strong&gt; để giảm bug và tăng chất lượng.
&lt;/li&gt;

&lt;li&gt;👉 Nghĩ như tester để code vững hơn.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. ⚙️ Agile Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ở trường: học lý thuyết về waterfall, agile, scrum.
&lt;/li&gt;
&lt;li&gt;Thực tế: vào công ty thì “ngáo ngơ” trong daily meeting, planning…
&lt;/li&gt;
&lt;li&gt;Không hiểu &lt;strong&gt;Scrum, XP, sprint, backlog&lt;/strong&gt; là gì.
&lt;/li&gt;
&lt;li&gt;👉 Học agile thực hành để hòa nhập môi trường làm việc hiện đại.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. 🌲 Source Code Control System
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Trường &lt;strong&gt;hiếm khi dạy&lt;/strong&gt; dùng &lt;code&gt;Git&lt;/code&gt;, &lt;code&gt;SVN&lt;/code&gt;, &lt;code&gt;TFS&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Sinh viên làm nhóm: khổ sở merge code, mất file.
&lt;/li&gt;
&lt;li&gt;Khi đi làm phải học lại từ đầu.
&lt;/li&gt;
&lt;li&gt;👉 Biết dùng Git từ sớm = teamwork dễ hơn, quản lý code chuyên nghiệp.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  6. 🧩 Cách dùng thư viện &amp;amp; framework
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Trường thiên về lý thuyết: C++, Java, giải thuật, hệ điều hành...
&lt;/li&gt;
&lt;li&gt;Không dạy &lt;strong&gt;cách áp dụng framework thực tế&lt;/strong&gt; như:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ASP.NET MVC&lt;/code&gt;, &lt;code&gt;Ruby on Rails&lt;/code&gt;, &lt;code&gt;jQuery&lt;/code&gt;, &lt;code&gt;Struts 2&lt;/code&gt;, ...&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Kết quả: sinh viên ra trường không biết dựng website hay app hoàn chỉnh.
&lt;/li&gt;

&lt;li&gt;👉 Chỉ ai &lt;strong&gt;tự học thêm ngoài trường&lt;/strong&gt; mới rành framework thực tế.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Thông điệp chính
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Trường đại học dạy nền tảng khoa học,&lt;br&gt;&lt;br&gt;
nhưng &lt;strong&gt;không dạy bạn cách làm việc thực tế&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Muốn trở thành developer giỏi, hãy &lt;strong&gt;tự học thêm&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Viết code sạch,
&lt;/li&gt;
&lt;li&gt;Dùng công cụ hiện đại,
&lt;/li&gt;
&lt;li&gt;Hiểu quy trình làm việc,
&lt;/li&gt;
&lt;li&gt;Và có tư duy kiểm thử, phát triển thực tế.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




</description>
      <category>career</category>
      <category>newbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Chức năng &amp; ví dụ chuyển động của DMC 3000 / 5000 Series (LeadShine)</title>
      <dc:creator>Kim Hieu Work</dc:creator>
      <pubDate>Fri, 10 Oct 2025 07:24:57 +0000</pubDate>
      <link>https://forem.com/kimhieuwork/chuc-nang-vi-du-chuyen-dong-cua-dmc-3000-5000-series-leadshine-256p</link>
      <guid>https://forem.com/kimhieuwork/chuc-nang-vi-du-chuyen-dong-cua-dmc-3000-5000-series-leadshine-256p</guid>
      <description>&lt;h1&gt;
  
  
  🚀 Chức năng &amp;amp; ví dụ chuyển động của DMC 3000 / 5000 Series (LeadShine)
&lt;/h1&gt;

&lt;p&gt;Các ví dụ này mô tả những &lt;strong&gt;chế độ điều khiển chuyển động&lt;/strong&gt; tiêu chuẩn mà card DMC hỗ trợ — áp dụng cho dòng DMC-3000, 5000 và tương tự như DMC-E3032.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Danh sách ví dụ &amp;amp; giải thích
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Ví dụ&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Tên tiếng Trung&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Dịch tiếng Việt&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Chức năng / Giải thích chi tiết&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;例1_定长运动&lt;/td&gt;
&lt;td&gt;定长运动&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chuyển động định chiều dài (Fixed-Length Motion)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Trục di chuyển một &lt;strong&gt;khoảng cách cố định&lt;/strong&gt; (ví dụ 100 mm, 5000 xung). Đây là kiểu &lt;strong&gt;“đi đến vị trí tuyệt đối hoặc tương đối”&lt;/strong&gt;, dùng lệnh kiểu &lt;code&gt;MoveAbs&lt;/code&gt; hoặc &lt;code&gt;MoveRel&lt;/code&gt;. Thường dùng cho cắt theo chiều dài, định vị sản phẩm, hoặc gắp đặt chính xác.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例2_连续运动&lt;/td&gt;
&lt;td&gt;连续运动&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chuyển động liên tục (Continuous Motion)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Trục quay hoặc di chuyển &lt;strong&gt;liên tục không giới hạn&lt;/strong&gt;, cho đến khi dừng bằng lệnh hoặc tín hiệu ngoài. Dùng trong &lt;strong&gt;băng tải&lt;/strong&gt;, &lt;strong&gt;cuộn dây&lt;/strong&gt;, &lt;strong&gt;động cơ quay tròn liên tục&lt;/strong&gt;. Có thể thay đổi tốc độ trong khi đang chạy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例3_插补运动&lt;/td&gt;
&lt;td&gt;插补运动&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chuyển động nội suy (Interpolation Motion)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hai hay nhiều trục &lt;strong&gt;chạy phối hợp&lt;/strong&gt; theo một đường cong hoặc đường thẳng — ví dụ vẽ vòng tròn, đường chéo, hoặc quỹ đạo tùy ý. Có &lt;strong&gt;nội suy tuyến tính (Linear)&lt;/strong&gt; và &lt;strong&gt;nội suy tròn (Circular)&lt;/strong&gt;. Rất quan trọng trong &lt;strong&gt;CNC / robot / cắt laser&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例4_PVT运动&lt;/td&gt;
&lt;td&gt;PVT运动&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chuyển động PVT (Position-Velocity-Time)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dạng điều khiển “điểm-đến-điểm” nâng cao, trong đó người dùng cung cấp &lt;strong&gt;vị trí, vận tốc và thời gian&lt;/strong&gt; cho từng điểm. Hệ thống &lt;strong&gt;nội suy mượt&lt;/strong&gt; giữa các điểm → cho phép quỹ đạo trơn tru, không giật. Dùng nhiều trong &lt;strong&gt;cánh tay robot, cắt CNC 3D, pick-and-place&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例5_手轮运动&lt;/td&gt;
&lt;td&gt;手轮运动&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chế độ tay quay / Handwheel Mode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cho phép &lt;strong&gt;điều khiển trục thủ công&lt;/strong&gt; bằng &lt;strong&gt;tay quay xung (pulse handwheel)&lt;/strong&gt; hoặc &lt;strong&gt;encoder ngoài&lt;/strong&gt;. Khi quay tay, trục di chuyển tương ứng. Dùng trong &lt;strong&gt;thiết lập ban đầu (jog)&lt;/strong&gt; hoặc &lt;strong&gt;chỉnh cơ khí chính xác&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例6_回原点运动&lt;/td&gt;
&lt;td&gt;回原点运动&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Chuyển động về gốc (Homing Motion)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Trục &lt;strong&gt;tự động trở về điểm gốc (home position)&lt;/strong&gt; thông qua cảm biến hoặc công tắc gốc. Cần thiết sau khi khởi động hệ thống để thiết lập &lt;strong&gt;tọa độ tuyệt đối&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例7_IO&lt;/td&gt;
&lt;td&gt;IO输入输出&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;I/O vào ra&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ví dụ minh họa cách đọc và ghi &lt;strong&gt;I/O số&lt;/strong&gt; (digital input/output) — ví dụ bật relay, đọc công tắc giới hạn, điều khiển đèn báo, cảm biến, van, v.v.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例8_AD-DA&lt;/td&gt;
&lt;td&gt;模拟量输入输出&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Ngõ tương tự (Analog In/Out – A/D &amp;amp; D/A)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Đọc &lt;strong&gt;tín hiệu analog&lt;/strong&gt; (ví dụ cảm biến dòng, lực, áp suất) qua A/D và xuất &lt;strong&gt;tín hiệu điều khiển analog&lt;/strong&gt; (tốc độ, mô-men…) qua D/A. Thường dùng khi kết hợp &lt;strong&gt;servo analog / biến tần / cảm biến áp suất&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例9_低速一维位置比较&lt;/td&gt;
&lt;td&gt;低速一维位置比较&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;So sánh vị trí 1D tốc độ thấp (Low-Speed 1D Position Compare)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Khi trục di chuyển và đạt đến &lt;strong&gt;một vị trí nhất định&lt;/strong&gt;, hệ thống xuất &lt;strong&gt;tín hiệu OUT&lt;/strong&gt; (ví dụ trigger camera, bắn laser). Dạng “position compare trigger”.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例10_低速二维位置比较&lt;/td&gt;
&lt;td&gt;低速二维位置比较&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;So sánh vị trí 2D tốc độ thấp (Low-Speed 2D Position Compare)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;So sánh vị trí của &lt;strong&gt;hai trục cùng lúc&lt;/strong&gt;, chỉ khi cả hai đạt điều kiện → xuất tín hiệu OUT. Dùng cho &lt;strong&gt;đánh dấu, in, hoặc bắn chính xác tại giao điểm&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例11_高速二维位置比较&lt;/td&gt;
&lt;td&gt;高速二维位置比较&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;So sánh vị trí 2D tốc độ cao (High-Speed 2D Compare)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Giống ví dụ trên nhưng ở &lt;strong&gt;tốc độ cao&lt;/strong&gt;, dùng phần cứng chuyên dụng (hardware compare) để không bị delay do phần mềm. Dùng trong &lt;strong&gt;ứng dụng tốc độ cao: in-line marking, laser cutting, camera trigger&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例12_高速一维位置比较+高速锁存&lt;/td&gt;
&lt;td&gt;高速一维位置比较+高速锁存&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;So sánh vị trí 1D tốc độ cao + chốt tốc độ cao (Latch)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Khi trục đạt vị trí hoặc tín hiệu ngoài kích hoạt, &lt;strong&gt;lập tức ghi lại vị trí hiện tại (latch)&lt;/strong&gt; với độ chính xác μs. Dùng cho &lt;strong&gt;đo vị trí nhanh, bắt cạnh encoder, camera sync&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;例13_螺距补偿&lt;/td&gt;
&lt;td&gt;螺距补偿&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Bù sai số bước vít me (Pitch Compensation)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bù sai số cơ khí trong &lt;strong&gt;vít me hoặc hệ truyền động tuyến tính&lt;/strong&gt;. Controller sẽ hiệu chỉnh vị trí theo &lt;strong&gt;bảng bù&lt;/strong&gt; để tăng độ chính xác tuyệt đối. Dùng trong &lt;strong&gt;CNC, đo lường chính xác, cơ cấu vít me-bi&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧭 Nhóm chức năng chính
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Nhóm chức năng&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Bao gồm các ví dụ&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ý nghĩa tổng quát&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cơ bản&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;例1, 例2, 例6&lt;/td&gt;
&lt;td&gt;Di chuyển định vị, liên tục, về gốc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nội suy &amp;amp; quỹ đạo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;例3, 例4&lt;/td&gt;
&lt;td&gt;Nhiều trục, chuyển động trơn tru&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Điều khiển bằng tay / thiết lập&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;例5&lt;/td&gt;
&lt;td&gt;Jog / handwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;I/O và Analog&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;例7, 例8&lt;/td&gt;
&lt;td&gt;Giao tiếp ngoại vi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;So sánh vị trí / Trigger&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;例9 → 例12&lt;/td&gt;
&lt;td&gt;Tạo tín hiệu khi đạt vị trí hoặc sự kiện&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bù sai số / hiệu chỉnh chính xác&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;例13&lt;/td&gt;
&lt;td&gt;Tăng độ chính xác cơ khí&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ⚙️ Gợi ý sử dụng
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Các ví dụ này thường có sẵn trong &lt;strong&gt;phần mềm điều khiển / SDK / Demo của LeadShine&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Có thể gọi qua API hoặc script để thực hiện tương tự.
&lt;/li&gt;
&lt;li&gt;Khi test: nên bật &lt;strong&gt;simulator&lt;/strong&gt; hoặc giới hạn hành trình để tránh va chạm cơ khí.
&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;💬 &lt;em&gt;Mẹo nhỏ:&lt;/em&gt; Nếu bạn đang lập trình bằng C# hoặc C++ với thư viện &lt;code&gt;LTDMC.dll&lt;/code&gt;, mỗi ví dụ trên tương ứng với &lt;strong&gt;một nhóm hàm&lt;/strong&gt; trong API (ví dụ: &lt;code&gt;dmc_pmove&lt;/code&gt;, &lt;code&gt;dmc_line_move&lt;/code&gt;, &lt;code&gt;dmc_arc_move&lt;/code&gt;, &lt;code&gt;dmc_PvtTableMove&lt;/code&gt;, &lt;code&gt;dmc_compare_config&lt;/code&gt;...).&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>C# Developer làm gì khi làm việc với PLC đã lập trình sẵn?</title>
      <dc:creator>Kim Hieu Work</dc:creator>
      <pubDate>Fri, 03 Oct 2025 01:25:26 +0000</pubDate>
      <link>https://forem.com/kimhieuwork/c-developer-lam-gi-khi-lam-viec-voi-plc-da-lap-trinh-san-42m8</link>
      <guid>https://forem.com/kimhieuwork/c-developer-lam-gi-khi-lam-viec-voi-plc-da-lap-trinh-san-42m8</guid>
      <description>&lt;h1&gt;
  
  
  C# Developer làm gì khi làm việc với PLC đã lập trình sẵn?
&lt;/h1&gt;

&lt;p&gt;Khi PLC đã được kỹ sư tự động hóa lập trình sẵn, thì phần của C# developer chủ yếu là &lt;strong&gt;kết nối – giao tiếp – hiển thị – xử lý dữ liệu&lt;/strong&gt;.  &lt;/p&gt;




&lt;h2&gt;
  
  
  1. Những việc C# developer có thể làm với PLC
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔹 Kết nối &amp;amp; giao tiếp
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kết nối với PLC qua:

&lt;ul&gt;
&lt;li&gt;Ethernet (TCP/IP, UDP)
&lt;/li&gt;
&lt;li&gt;Serial (RS232/RS485, COM port)
&lt;/li&gt;
&lt;li&gt;USB (nếu PLC hỗ trợ)
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Sử dụng &lt;strong&gt;giao thức truyền thông&lt;/strong&gt; mà PLC hỗ trợ: FINS, CIP, Modbus TCP/RTU, MC Protocol, OPC UA, S7, …&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Đọc dữ liệu từ PLC
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Đọc giá trị &lt;strong&gt;bit/coil&lt;/strong&gt; (on/off – ví dụ trạng thái sensor, nút nhấn).
&lt;/li&gt;
&lt;li&gt;Đọc giá trị &lt;strong&gt;word/double word&lt;/strong&gt; (INT, DINT, REAL – ví dụ tốc độ, nhiệt độ, áp suất).
&lt;/li&gt;
&lt;li&gt;Đọc &lt;strong&gt;string&lt;/strong&gt; (ví dụ barcode, tên sản phẩm).
&lt;/li&gt;
&lt;li&gt;Đọc &lt;strong&gt;array&lt;/strong&gt; (mảng số liệu từ nhiều kênh).
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Ghi dữ liệu xuống PLC
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ghi tín hiệu &lt;strong&gt;bit&lt;/strong&gt; (điều khiển bật/tắt motor, van).
&lt;/li&gt;
&lt;li&gt;Ghi &lt;strong&gt;giá trị số&lt;/strong&gt; (setpoint, tham số điều khiển).
&lt;/li&gt;
&lt;li&gt;Ghi &lt;strong&gt;string&lt;/strong&gt; (ví dụ gửi mã sản phẩm).
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Hiển thị &amp;amp; điều khiển
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Viết &lt;strong&gt;WinForms/WPF/MAUI app&lt;/strong&gt; để hiển thị dữ liệu (HMI tự viết).
&lt;/li&gt;
&lt;li&gt;Vẽ &lt;strong&gt;biểu đồ, báo cáo&lt;/strong&gt; từ dữ liệu PLC.
&lt;/li&gt;
&lt;li&gt;Làm &lt;strong&gt;giám sát trạng thái (monitor)&lt;/strong&gt; real-time.
&lt;/li&gt;
&lt;li&gt;Gửi lệnh điều khiển từ app → PLC.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Logging &amp;amp; báo cáo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ghi log dữ liệu PLC ra file (CSV, TXT, Excel, DB).
&lt;/li&gt;
&lt;li&gt;Báo cáo sản lượng, cảnh báo lỗi, OEE.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Tích hợp với hệ thống khác
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Gửi dữ liệu lên &lt;strong&gt;SQL Server / MySQL / PostgreSQL&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Tích hợp với &lt;strong&gt;MES/ERP/SCADA&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Đưa dữ liệu lên &lt;strong&gt;MQTT, OPC UA, REST API, Cloud (IoT Hub, Azure, AWS IoT)&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Bảo trì &amp;amp; chẩn đoán
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check trạng thái kết nối PLC.
&lt;/li&gt;
&lt;li&gt;Đọc &lt;strong&gt;error code / alarm&lt;/strong&gt; từ PLC.
&lt;/li&gt;
&lt;li&gt;Tạo công cụ test/troubleshoot cho kỹ sư.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Tùy loại PLC có gì khác nhau?
&lt;/h2&gt;

&lt;p&gt;Điểm khác nhau chủ yếu nằm ở &lt;strong&gt;giao thức kết nối, địa chỉ, và cách truy cập biến&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hãng PLC&lt;/th&gt;
&lt;th&gt;Giao thức phổ biến&lt;/th&gt;
&lt;th&gt;Địa chỉ/biến số&lt;/th&gt;
&lt;th&gt;Ghi chú&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Siemens (S7-1200, 1500, 300)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;S7 Protocol, OPC UA&lt;/td&gt;
&lt;td&gt;DB1.DBW0, DB1.DBD4…&lt;/td&gt;
&lt;td&gt;Có thư viện Snap7, S7.Net&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Omron (CJ, CS, NX, NJ, CP1)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;FINS, CIP (EtherNet/IP), Modbus&lt;/td&gt;
&lt;td&gt;DM100, CIO10, W0…&lt;/td&gt;
&lt;td&gt;FINS (UDP/TCP), mới thì EtherNet/IP (CIP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mitsubishi (FX, Q, iQ-R, …)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MC Protocol, Modbus&lt;/td&gt;
&lt;td&gt;D100, M10, X0…&lt;/td&gt;
&lt;td&gt;Có driver MC Protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inovance (H3U, H5U, …)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Modbus RTU/TCP, OPC&lt;/td&gt;
&lt;td&gt;D100, M10, C100…&lt;/td&gt;
&lt;td&gt;Chủ yếu dùng Modbus, giống Mitsubishi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allen-Bradley (Rockwell)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;EtherNet/IP (CIP)&lt;/td&gt;
&lt;td&gt;Tag-based (Motor_Speed, Valve1)&lt;/td&gt;
&lt;td&gt;Dùng tag theo tên, không theo vùng nhớ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Delta&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Modbus, DVP Protocol&lt;/td&gt;
&lt;td&gt;D100, M10, C0…&lt;/td&gt;
&lt;td&gt;Phổ biến, rẻ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Keyence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;KV Protocol, EtherNet/IP&lt;/td&gt;
&lt;td&gt;DM, MR…&lt;/td&gt;
&lt;td&gt;Có phần mềm riêng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Schneider&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Modbus, OPC UA&lt;/td&gt;
&lt;td&gt;%MW100, %M10…&lt;/td&gt;
&lt;td&gt;Chuẩn Modbus&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  3. Điểm khác biệt chính giữa PLC các hãng
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Giao thức truyền thông&lt;/strong&gt; (Modbus, FINS, MC, CIP, S7, OPC UA…).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cách đánh địa chỉ biến&lt;/strong&gt; (Siemens dùng DB, Omron dùng DM/CIO, Mitsubishi dùng D/M/X/Y…).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cấu trúc dữ liệu&lt;/strong&gt; (Rockwell dùng tag theo tên, Siemens dùng DB, hãng khác thường theo vùng nhớ).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thư viện hỗ trợ cho C#&lt;/strong&gt; (S7.Net, EasyModbus, OmronFins.Net, CIPSharp…).
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Kết luận
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Là &lt;strong&gt;C# developer&lt;/strong&gt;, bạn không cần quan tâm đến logic bên trong PLC (kỹ sư tự động hóa lo phần đó).
&lt;/li&gt;
&lt;li&gt;Việc chính của bạn:

&lt;ul&gt;
&lt;li&gt;Hiểu &lt;strong&gt;PLC giao tiếp bằng giao thức gì&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Biết &lt;strong&gt;dữ liệu nằm ở đâu (địa chỉ/Tag/DB)&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Viết app để &lt;strong&gt;đọc/ghi – hiển thị – xử lý – lưu trữ – tích hợp&lt;/strong&gt; dữ liệu.
# Workflow: PLC ↔ C# App ↔ Database/Cloud&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
mermaid
flowchart LR
    A[PLC\n(đã lập trình sẵn)] &amp;lt;--&amp;gt;|Giao thức: Modbus / FINS / CIP / S7 / OPC UA| B[C# App\n(WinForms/WPF/MAUI)]

    B --&amp;gt;|Hiển thị HMI, Dashboard| C[Người dùng\n(Operator/Engineer)]
    B --&amp;gt;|Logging / Báo cáo| D[(Database\nSQL Server, MySQL, PostgreSQL)]
    B --&amp;gt;|API, MQTT, OPC UA| E[Cloud / MES / ERP / SCADA]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>programming</category>
      <category>csharp</category>
      <category>career</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
