亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        過程自動(dòng)化MES系統(tǒng)中報(bào)文的處理方法

        2019-09-09 08:14:53王崢牛盂杰張瑩李曉東
        數(shù)碼世界 2019年5期
        關(guān)鍵詞:報(bào)文

        王崢 牛盂杰 張瑩 李曉東

        摘要:論述了一種MES中報(bào)文的處理方法,包括報(bào)文封裝類設(shè)計(jì),通訊接口設(shè)計(jì),數(shù)據(jù)庫設(shè)計(jì)等內(nèi)容。描述了.net框架下端口監(jiān)聽及stream流傳輸?shù)某绦蛟O(shè)計(jì)方法。

        關(guān)鍵詞:mes 報(bào)文 socket 端口監(jiān)聽 stream流

        本文闡述了一種基于socket協(xié)議的MES二級系統(tǒng)報(bào)文的處理方法。報(bào)文是MES系統(tǒng)普遍采用的信息傳輸方式,具有組成靈活,傳輸可控,解讀方便的特點(diǎn)。設(shè)計(jì)報(bào)文的處理方式,是MES系統(tǒng)重要的組成部分。本項(xiàng)目是一個(gè)鍍錫線電控系統(tǒng)的MES二級子系統(tǒng)運(yùn)行穩(wěn)定,傳輸可靠。在此簡單闡述—下報(bào)文的處理方法。

        報(bào)文處理方法包含以下幾個(gè)主要環(huán)節(jié)

        1,定義鋼卷鋼種數(shù)據(jù)信息PDI,此類主要用于生成報(bào)文的各種參數(shù)。報(bào)文處理需要的元素,都封裝成類,再進(jìn)行實(shí)例化調(diào)用,這樣程序的代碼重用及組裝都很方便。

        public class PDI

        {

        public int flag{ get; set;}∥鋼種標(biāo)志

        public int ID{ get; set;}∥鋼種ID

        public string Schedule_Code{ get; set;}∥計(jì)劃代碼

        private string _coil_no一…I;∥私有變量卷號

        pulolic string Coil_NO∥對私有變量的getter和setter操作

        {

        get

        {

        if (!string.IsNullOrEmpty(_coil_no》

        return _coil_no.ToUpper();

        else

        return””:

        l

        set{ _coil_no - value;}

        }

        public string Schedule_Type{ get; set;}//,//各種鋼卷屬性的操作方法

        public string RepairFlag{ get; set;)

        public string Repair_Type{ get; set;}

        public int IsDummy{ get; set;}

        }

        2,報(bào)文定義類,此處定義報(bào)文封裝類,包括各種操作屬性,比如ID,生產(chǎn)線代碼,請求時(shí)間,回應(yīng)時(shí)間,狀態(tài),發(fā)送目標(biāo),回答目標(biāo),報(bào)文主體內(nèi)容等。此報(bào)文將進(jìn)入報(bào)文池,以隊(duì)列方式,先進(jìn)入池的報(bào)文,被先處理發(fā)送。

        public class DBMAILBOX

        {

        public int ID{ get; set;}∥///報(bào)文隊(duì)列代碼

        public int Plant_ID{ get; set;}

        public int RequestNo{ get; set;}

        public DateTime RequestDate{ get; set;}

        public DateTime ReplyDate{ get; set;}

        public int Status{ get; set;}

        public string SendTo{ get; set;}

        public string ReplyTo{ get; set;}

        public int IDM{ get; set;}廠/∥報(bào)文標(biāo)志代碼

        public byte[l Msg{ get; set;}////報(bào)文內(nèi)容

        publicbyte[l MsgReply{ get; set;}

        }

        3,組合報(bào)文體框架,此處生成報(bào)文體對象,根據(jù)報(bào)文種類(即IDM報(bào)文標(biāo)志),調(diào)用對應(yīng)的報(bào)文生成方法,返回報(bào)文內(nèi)容,與其他屬性構(gòu)成報(bào)文主體,進(jìn)入數(shù)組,形成報(bào)文隊(duì)列。

        DBMAILBOX m—new DBMAILBOX();/////報(bào)文對象

        m.Plant_ID -0;

        m.IDM -2965;∥/∥//新生成的報(bào)文為2965

        m.Msg—msg.MSG2965(p,setup);/‘∥//報(bào)文生成方法,返回報(bào)文內(nèi)容

        m.SendTo -”L1C”;/////////報(bào)文發(fā)送屬性

        m.RequestDate - DateTime.Now;

        m.Reply_Date - DateTime.Now;

        m.ReplyTo -llL2Serverll;

        m。Status -0:

        mail.Add(m);////////把報(bào)文內(nèi)容加入數(shù)組mail,形成報(bào)文隊(duì)列。

        4,組合報(bào)文體,此處形成報(bào)文內(nèi)容,不含其它屬性,只是整個(gè)報(bào)文.dlomailbox的msg部分,也就是向一級系統(tǒng)實(shí)際發(fā)送的報(bào)文內(nèi)容。

        public Byte[]MSG2965(int intMSGPORl, intintMSGPOR2)///////

        {

        this.MSG_ID - 2965;////報(bào)文ID

        this.MSG_I。EN—l6;///////報(bào)文長度,第一次賦值,作用是電文體開始賦值的位置,2965電文的卷號的開始位置為16,下面的循環(huán)中,根據(jù)this.MSG_I。EN的初始值,開始給電文體賦值,MSGLEN也不斷增加

        this.SetString(p.Coil_NO,20,l l,0);///////向電文體寫入string

        str - DoString.toLongString(str, len,f,itype);////DoString是靜態(tài)類,將str補(bǔ)充到len長度(不

        足時(shí)),此時(shí)str是Coil_NO卷號,保證卷號長度固定

        //////以下是報(bào)文各段屬性賦值,簡略

        this.SetSwapValue《Int16)intMSGPORl);/////向電文體寫入開卷機(jī)請求數(shù)據(jù)l

        this. SetSwapValue《Int16)intMSGPOR2);/////向電文體寫入開卷機(jī)請求數(shù)據(jù)2

        return this.GetBytes();/////加上報(bào)上報(bào)頭head(最終調(diào)用sethead0方法),形成最終報(bào)文體

        }

        5,socket端口監(jiān)聽類。本項(xiàng)目采用socket方式接收和發(fā)送電文,通過不同端口進(jìn)行收發(fā),提高了報(bào)文處理速度。利用.NET框架的socket封裝類,簡化了程序代碼。采用多線程方式,對收發(fā)動(dòng)作進(jìn)行新建線程方式,實(shí)現(xiàn)并發(fā)處理。.NET框架用IPEndPoint對象來表示一個(gè)特定的IP地址和端口的組合,應(yīng)用該對象的場景多是在將socket綁定到本地地址。

        ∥接收來自L1-級系統(tǒng)的報(bào)文

        public class MsgFromLI:ThreadService////建立線程

        {

        public ThreadStatus status—null;

        TcpListener server=null;///////定義監(jiān)聽類的對象

        IPEndPoint ipLocalEndPoint=null;

        pulolic MsgFromLl()///構(gòu)造函數(shù),進(jìn)行初始化,建立監(jiān)聽通道

        {

        ipLocaIEndPoint - newIPEndPoint(IPAddress.Parse("10.36.1.225"), 3001);

        //∥監(jiān)聽一級系統(tǒng)PLC的ip和端口

        status—new ThreadStatus();////建立線程狀態(tài)對象

        public void Start0

        {

        status.run_flag - true;

        server - new TcpListener(ipLocalEndPoint);//,//監(jiān)聽類實(shí)例化

        server. Start();//∥啟動(dòng)監(jiān)聽

        status.starttime - DoDateTime.getNovrString();

        TcpClient client—null;

        while (status.run_flag)

        {

        if (client一一null』!client.Connected)

        {

        client - server.AcceptTcpClient();////開始接收請求

        client.ReceiveBufferSize -2016;/∥//接收緩沖區(qū)長度

        }

        client.ReceiveBufferSize - 2016;

        ByteLl bytes - new Byte[client.ReceiveBufferSizel;//接收報(bào)文的字符串初始化

        NetworkStream stream — client.GetStream();/∥//建立stream流,進(jìn)行傳輸

        stream.Read(bytes,O,bytes.Length);////讀入stream流數(shù)據(jù)進(jìn)入字符串

        client. Close();

        client—null;

        }

        }

        }

        6,發(fā)送報(bào)文

        public void Start0

        {

        status.run_flag - true;

        status.start_time - DoDate-Fime.getNo.nrString();

        string rernoteIP~"10.36.1.135";////socket客戶端連接遠(yuǎn)程服務(wù)器地址

        int remotePort - 3003;

        string localIP一"10.36.1.225";

        int localPort - 2003;

        MSGTcpClient client - nevr MSGTcpClient(localIP. localPort, remoteIP, remotePort);

        DBMAILBOX msg—new DBMAILBOX();

        while (status.run_flag)

        {

        if(! client. Connect(》/////client初始化要建立連接

        {

        Thread.Sleep(2000);

        continue:

        }

        msg -Scan();//∥//msg存人掃描的信息結(jié)果,形成電文

        msg.Status一1;∥∥/msg不為空

        client.SendOnce(msg.Msg.0,2016);//,//發(fā)送電文,

        ∥∥/上面msg -Scan();//∥//IIlsg存入掃描的信息結(jié)果,形成電文

        }

        }

        發(fā)送動(dòng)作語句

        public Boolean SendOnceCoyte[l buffer .int offset,int size)

        {

        stream一client.GetStream();//

        ∥返回用于發(fā)送和接收數(shù)據(jù)的System.Net.Sockets.NetworkStream。

        stream.Write(buffer, offset.slze);//∥向stream的對端發(fā)出數(shù)據(jù)

        return true;

        }

        猜你喜歡
        報(bào)文
        一種應(yīng)用層可靠組播傳輸控制方法
        航天控制(2023年3期)2023-07-05 13:57:04
        基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
        汽車電器(2022年9期)2022-11-07 02:16:24
        低軌星座短報(bào)文通信中的擴(kuò)頻信號二維快捕優(yōu)化與實(shí)現(xiàn)
        CTCS-2級報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
        淺析反駁類報(bào)文要點(diǎn)
        中國外匯(2019年11期)2019-08-27 02:06:30
        歐標(biāo)應(yīng)答器報(bào)文傳輸中透傳與選包方式的比較
        大號碼道岔報(bào)文發(fā)送條件分析
        智能變電站并行冗余協(xié)議系統(tǒng)測試方案探討
        電力與能源(2018年5期)2018-11-13 08:58:08
        高鐵“C2”區(qū)段備用應(yīng)答器報(bào)文提前寫入的探討
        面向MANET報(bào)文丟棄攻擊的模糊入侵檢測系統(tǒng)
        青青草在线这里只有精品| 国产av专区一区二区三区| 亚洲高清美女久久av| 亚洲国产成人精品激情| 日韩亚洲在线一区二区| 成a人片亚洲日本久久| 日韩精品中文一区二区三区在线 | 国产国产精品人在线视| 先锋五月婷婷丁香草草| 久久欧美与黑人双交男男| 无码中文字幕av免费放| 蜜桃久久综合一区二区| 日本精品视频免费观看| 日本一卡2卡3卡4卡无卡免费网站| 中文字幕有码无码av| av一区二区三区亚洲| 国产特黄a三级三级三中国| 日本人妻免费一区二区三区| 日本久久久久亚洲中字幕| 欧美另类高清zo欧美| 国产成人精品三级麻豆| 白白视频在线免费观看| 午夜国产精品视频在线观看| 一本加勒比hezyo无码专区| 亚洲熟妇丰满大屁股熟妇| 亚洲熟妇av日韩熟妇av| 全亚洲高清视频在线观看| 久久人妻av一区二区软件 | 日日碰狠狠躁久久躁96avv| 91极品尤物国产在线播放| 亚洲av在线观看播放| 中文字幕乱码一区av久久不卡| 国产激情电影综合在线看| 国产麻豆一区二区三区在线播放| 国产欧美精品aaaaaa片| 亚洲日韩一区精品射精| 国产夫妻av| 国产亚洲av一线观看| 朋友的丰满人妻中文字幕| 人妻丰满熟妇AV无码区HD| 亚洲国产欧美久久香综合|