湖南嶸晟時(shí)代自動(dòng)化科技有限公司:長(zhǎng)期銷售西門子全系列

西門子CPU模塊6ES7314-6BG03-0AB0
置預(yù)置值(HSC0為SMD42),,計(jì)數(shù)器計(jì)到這個(gè)值可以產(chǎn)生一個(gè)中斷,,一般利用這個(gè)中斷調(diào)用相應(yīng)的中斷程序把當(dāng)前值(SMD38)復(fù)零,否則計(jì)數(shù)器到頭就不再計(jì)數(shù)了,,當(dāng)然你也可以置一個(gè)大點(diǎn)的值,,在其他程序中清除當(dāng)前值(SMD38),確保永遠(yuǎn)到不了頭就可以了,。
2.5 中斷程序(ATCH),,中斷事件是12,程序號(hào)看你程序了
2.6 打開中斷(ENI),,這條指令沒有的話,,2.5是不起作用的
2.7 啟動(dòng)高速計(jì)數(shù)器(HSC),按前面的初始化,,你就要啟動(dòng)HSC0,,即N為0
3、程序中讀取高速計(jì)數(shù)器的值,,對(duì)于HSC0,,HC0單元中的內(nèi)容就是當(dāng)前的計(jì)數(shù)值,這個(gè)單元只讀不能寫,,你可以通過修改SMD38的內(nèi)容改變當(dāng)前的計(jì)數(shù)值,。
西門子S7-200的自由口通信需要通過編程設(shè)置串口的工作模式,安排發(fā)送和接受指令的觸發(fā)順序,,還要設(shè)定接收的起始和結(jié)束條件。對(duì)于剛剛開始使用s7-200的電氣工程師來說,,的確有很多細(xì)微處易犯錯(cuò)誤,。一般碰到客戶抱怨通信不上的問題,就要逐一幫客戶確認(rèn)編程配置是否正確,。雖然麻煩,,不過逐條查下去,總能查到錯(cuò)誤所在并解決問題,。但是有一次客戶遇到的問題頗出人意料,,還真耗費(fèi)了一些時(shí)間。
客戶反應(yīng)在編寫了自由口通信程序之后,,PLC可以發(fā)送數(shù)據(jù)給通信伙伴,,但是卻收不到任何伙伴方發(fā)出的數(shù)據(jù)。能發(fā)送數(shù)據(jù)給對(duì)方,說明通信端口設(shè)置沒有問題,。極有可能是端口被其他通信指令占用導(dǎo)致無法進(jìn)入接收狀態(tài),。比如說用常開點(diǎn)調(diào)用XMT,或者沒有對(duì)接收的故障狀態(tài)進(jìn)行判斷并終止接收,,從而導(dǎo)致后續(xù)的XMT和 RCV都無法被正確執(zhí)行,。客戶表示他的程序并不存在這種情況,。但是為了測(cè)試問題所在,,客戶下載了一個(gè)僅包含條件觸發(fā)RCV的程序下去,還是接收不到數(shù)據(jù),。監(jiān)控程序RCV指令已被正常執(zhí)行,。
那么是不是接收的起始條件設(shè)置不當(dāng)?客戶使用的是起始字符,,這并無不妥,。并且改成空閑線檢測(cè)之后,問題依然存在,。難道是對(duì)方發(fā)送的信號(hào)有問題,?用串口調(diào)試軟件來測(cè)試,是可以接收到的,。眼見這幾個(gè)常見錯(cuò)誤都沒能cover住這個(gè)問題,,我只好從頭一步步地跟客戶確認(rèn)。但是還是沒能發(fā)現(xiàn)任何破綻,。郁悶之下,,只好讓客戶把程序發(fā)過來看看。
一次檢查程序的時(shí)候還真沒注意到問題出在哪里,。等到看出來了才覺得啼笑皆非:
不知道大家看出來沒有,?客戶在設(shè)定完空閑線時(shí)間SMW90和消息定時(shí)器溢出值SMW92后,慣性地將接受地大字符數(shù)SMB94也寫成了傳送字 SMW94,。而西門子PLC的高低字節(jié)是逆序的,,也就是說SMB94為高有效字節(jié),SMB95為低有效字節(jié),。見手冊(cè)中的如下說明:
西門子CPU模塊6ES7314-6BG03-0AB0