Hướng dẫn cấu hình âm thanh cảnh báo (Alarm Sound) trong WinCC
WinCC15 tháng 7, 2026· 6 phút đọc · 2 lượt xem

Hướng dẫn cấu hình âm thanh cảnh báo (Alarm Sound) trong WinCC

Hướng dẫn cấu hình âm thanh cảnh báo trong WinCC bằng C-Script và PlaySoundA, tự động phát file WAV khi xuất hiện Alarm chưa được xác nhận.

1. Tổng quan

WinCC cung cấp hệ thống quản lý Alarm rất mạnh, tuy nhiên không tự động phát âm thanh khi có cảnh báo.

Nếu muốn hệ thống phát file .wav mỗi khi xuất hiện Alarm chưa được xác nhận (Unacknowledged Alarm), bạn cần cấu hình thêm bằng C-Script.

Bài viết này sẽ hướng dẫn cách:

  • Theo dõi Alarm chưa xác nhận.

  • Tự động phát âm thanh khi Alarm xuất hiện.

  • Kiểm tra và xử lý các lỗi thường gặp.


Điều kiện trước khi thực hiện

Chuẩn bị:

  • WinCC v7.0 trở lên.

  • Truy cập được WinCC Explorer.

  • Đã tạo các Internal Tag:

    • alarmsum

    • alarmunack

  • Có sẵn file âm thanh định dạng .wav trên máy Runtime.

2. Nguyên lý hoạt động

Chức năng phát âm thanh dựa trên bốn thành phần chính.

GMsgFunction

Đây là Global Message Function.

Hàm này sẽ được WinCC gọi mỗi khi trạng thái Alarm thay đổi.

Internal Tag

Hai Tag nội bộ được sử dụng để theo dõi Alarm.

  • alarmsum

Tổng số Alarm đang hoạt động.

  • alarmunack

Số Alarm chưa được xác nhận (Unacknowledged).

Windows PlaySoundA API

WinCC sử dụng API của Windows:

PlaySoundA()

để phát file âm thanh.

API này nằm trong thư viện:

winmm.dll

File WAV

Âm thanh phải là file:

*.wav

Ví dụ:

C:\WinCC\Sounds\alarm.wav

3. Tạo Internal Tag

Trong Tag Management, tạo hai Tag nội bộ.

Tên Tag

Kiểu dữ liệu

Ý nghĩa

alarmsum

Unsigned 16-bit

Tổng số Alarm đang hoạt động

alarmunack

Unsigned 16-bit

Số Alarm chưa xác nhận

Hai Tag này sẽ được Alarm Logging cập nhật tự động.


Bước 1 – Cấu hình Alarm Logging

Mở:

Alarm Logging

Trong WinCC Explorer.

Sau đó:

Alarm Logging
    ↓
Properties
    ↓
Messages

Cấu hình để Alarm Logging ghi dữ liệu vào:

  • alarmsum

  • alarmunack

Kiểm tra khi Alarm xuất hiện, hai Tag này thay đổi đúng giá trị.


Bước 2 – Tạo GMsgFunction

Trong:

Global Scripts
    ↓
C-Script
    ↓
GMsgFunction

tạo một Function mới.

Ví dụ:

#include "apdefap.h"
#include "msvcrt.h"

void OnAlarmsTriggered MSG_LOCKED
(
    void* pEvent,
    void* pCycle
)
{
    #pragma code ("winmm.dll")
    void WINAPI PlaySoundA(char* pszSound, void* hmode, DWORD dwflag);
    #pragma code()

    extern unsigned short alarmsum;
    extern unsigned short alarmunack;

    if (alarmunack > 0)
    {
        PlaySoundA(
            "C:\\WinCC\\Sounds\\alarm.wav",
            NULL,
            1
        );
    }
}

Giải thích chương trình

Đầu tiên khai báo:

#pragma code ("winmm.dll")

để sử dụng hàm:

PlaySoundA()

Sau đó khai báo hai biến:

extern unsigned short alarmsum;
extern unsigned short alarmunack;

để đọc giá trị từ Internal Tag.

Nếu:

alarmunack > 0

chương trình sẽ phát file:

alarm.wav

Bước 3 – Đăng ký GMsgFunction

Sau khi tạo Script:

  • Mở Function.

  • Chuyển sang tab:

Register

Kích hoạt:

OnAlarm

Đặt điều kiện:

alarmunack > 0

Sau đó Apply để hoàn tất đăng ký.

Kể từ thời điểm này, mỗi khi xuất hiện Alarm chưa được xác nhận, WinCC sẽ tự động gọi Script.


4. Phát âm thanh bằng nút nhấn

Nếu muốn thử nghiệm nhanh hoặc phát âm thanh thủ công, có thể gán C-Script cho một Button.

Ví dụ:

#include "apdefap.h"

void OnClick(
    char* lpszPictureName,
    char* lpszObjectName,
    char* lpszPropertyName,
    UINT nFlags,
    int x,
    int y
)
{
    #pragma code ("winmm.dll")
    void WINAPI PlaySoundA(char* pszSound,
                           void* hmode,
                           DWORD dwflag);
    #pragma code()

    PlaySoundA(
        "C:\\WinCC\\Sounds\\alarm.wav",
        NULL,
        1
    );
}

Khi nhấn nút trên giao diện HMI, file âm thanh sẽ được phát.


Giải thích hàm PlaySoundA

Cú pháp:

PlaySoundA(
    pszSound,
    hmode,
    dwflag
);

Trong đó:

Tham số

Kiểu

Ý nghĩa

pszSound

char*

Đường dẫn đầy đủ tới file WAV

hmode

Pointer

Luôn đặt bằng NULL

dwflag

DWORD

Chế độ phát âm thanh


Giá trị của dwflag

Giá trị

Hằng số

Ý nghĩa

1

SND_SYNC

Phát đồng bộ, chờ phát xong mới tiếp tục

2

SND_ASYNC

Phát không đồng bộ

0

SND_NODEFAULT

Không phát âm thanh mặc định nếu thiếu file

8

SND_LOOP

Phát lặp liên tục


Phát lặp liên tục

Có thể kết hợp các cờ bằng toán tử OR.

Ví dụ:

PlaySoundA(
    "...",
    NULL,
    2 | 8
);

Ý nghĩa:

  • Phát không đồng bộ.

  • Lặp liên tục cho đến khi dừng.

Đây là lựa chọn thường dùng cho các Alarm quan trọng.


Kiểm tra sau khi cấu hình

Sau khi hoàn thành, thực hiện các bước sau.

1. Compile Script

File
    ↓
Compile

Đảm bảo không có lỗi biên dịch.


2. Chạy WinCC Runtime

Khởi động Runtime.


3. Kích hoạt Alarm

Tạo một Alarm thử nghiệm.

Kiểm tra:

alarmunack

đã tăng hay chưa.


4. Kiểm tra âm thanh

Nếu mọi thứ đúng, file:

alarm.wav

sẽ tự động phát.


5. Kiểm tra Button

Nếu tạo Button thử nghiệm:

  • Nhấn Button.

  • Kiểm tra loa.

Nếu âm thanh phát bình thường nhưng Alarm không phát, vấn đề thường nằm ở Trigger hoặc Internal Tag.


4. Xử lý lỗi thường gặp

Không phát âm thanh

Kiểm tra:

  • File .wav có tồn tại đúng đường dẫn không.

  • Loa hoặc tai nghe có hoạt động không.

  • Windows có đang ở chế độ Mute không.

  • WinCC Runtime có quyền truy cập thiết bị âm thanh không.

  • Giá trị alarmunack có tăng đúng khi Alarm xuất hiện không.


Script Compile lỗi

Kiểm tra:

  • Dòng:

#pragma code ("winmm.dll")

có đúng cú pháp không.

  • Tên Internal Tag có đúng chính tả không.

Ví dụ:

extern unsigned short alarmunack;

phải trùng hoàn toàn với tên Tag trong WinCC.


Không tìm thấy winmm.dll

Kiểm tra thư viện:

C:\Windows\System32\winmm.dll

Nếu thư viện bị thiếu hoặc lỗi, Windows sẽ không thể phát âm thanh.


5. Tài liệu tham khảo

Để tìm hiểu sâu hơn, bạn có thể tham khảo:

  • Siemens WinCC Alarm Logging Manual

  • Publication Number: A5E00711714-01

Tài liệu này trình bày chi tiết về:

  • GMsgFunction.

  • Alarm Logging.

  • Cấu hình Message Block.

  • C-Script trong WinCC.

Chưa biết chọn UPS công suất bao nhiêu?
Nhập danh sách thiết bị, công cụ sẽ tính tự động và gợi ý model phù hợp.
Tính công suất miễn phí

Cần tư vấn giải pháp UPS?

UPSsmart hỗ trợ tư vấn miễn phí, không ràng buộc.