發表于:2003/9/14 15:43:00
#0樓
我使用施奈德的TWDLMDA20DRT PLC,采用串口232通訊, 在VC中開發PC與PLC的通訊程序,但是發送數據幀后,沒有回應幀,不知道為什么?
下面是它的文檔的部分說明,請高手指點:
ASCII幀
在ASCII模式中,以(:)號(ASCII3AH)表示信息開始,以回撤一換行鍵(CRLF) (ASCII OD和OAH)表示信息結束。
對其它的區,允許發送的字符為16進制字符0-9,A-F。網絡中設備連續檢測并接收一個冒號(:)時,每臺設備對地址區解碼,找出要尋址的設備。
字符之間的最大間隔為1S,若大于1S,則接收設備認為出現了一個錯誤。 典型的信息幀見下表
開始 地址 功能 數據 縱向冗余檢查 結束
1字符
: 2字符 2字符 n字符 2字符 2字符
圖3 ASCII信息幀
例外:對于584和984A/B/X控制器,一個ASCII信息可在LRC區后正常終止,而不需發送CRLF字符,此時出現>IS的時間間隔,控制器也將認為是正常中斷。
在VC中使用網上的CSerial類進行串口通訊,部分代碼如下:
void CSerialTestDlg::OnCom1Send()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
char buf[100];
m_str_Com1Send="";
char temp=13;
m_str_Com1Send=":00040001";
m_str_Com1Send+=temp;
temp=10;
m_str_Com1Send+=temp;
memset(&buf, 0, sizeof(buf));
memcpy(buf,m_str_Com1Send,100);
m_ComPort.WriteToPort(buf);
Sleep(1000);
m_ComPort.ReadData(&read_BUFFER,1);
}
下面是它的文檔的部分說明,請高手指點:
ASCII幀
在ASCII模式中,以(:)號(ASCII3AH)表示信息開始,以回撤一換行鍵(CRLF) (ASCII OD和OAH)表示信息結束。
對其它的區,允許發送的字符為16進制字符0-9,A-F。網絡中設備連續檢測并接收一個冒號(:)時,每臺設備對地址區解碼,找出要尋址的設備。
字符之間的最大間隔為1S,若大于1S,則接收設備認為出現了一個錯誤。 典型的信息幀見下表
開始 地址 功能 數據 縱向冗余檢查 結束
1字符
: 2字符 2字符 n字符 2字符 2字符
圖3 ASCII信息幀
例外:對于584和984A/B/X控制器,一個ASCII信息可在LRC區后正常終止,而不需發送CRLF字符,此時出現>IS的時間間隔,控制器也將認為是正常中斷。
在VC中使用網上的CSerial類進行串口通訊,部分代碼如下:
void CSerialTestDlg::OnCom1Send()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
char buf[100];
m_str_Com1Send="";
char temp=13;
m_str_Com1Send=":00040001";
m_str_Com1Send+=temp;
temp=10;
m_str_Com1Send+=temp;
memset(&buf, 0, sizeof(buf));
memcpy(buf,m_str_Com1Send,100);
m_ComPort.WriteToPort(buf);
Sleep(1000);
m_ComPort.ReadData(&read_BUFFER,1);
}