SNMP_PP_CHS Charpter 19 - 21

1.         运行模式

SNMP++的设计(决定了它)支持多种运行模式。这些运行模式允许(用户)创建图形用户接口(GUI)以及控制台模式的应用。GUI运行模式与现有的GUI事件(驱动)系统协同工作;而控制台运行模式允许使用自定义的事件(驱动)系统,甚至不需要事件(驱动)系统。

1.1.        Microsoft Windows事件(驱动)系统的运作

为了在MS-Windows上使用,SNMP++MS-Windows消息系统协同工作。调用阻塞模式(可以)允许处理其他消息。

1.2.        Open Systems Foundation (OSF) X11 Motif的运作

X11接口与MS-Windows接口一样。在MS-WindowsX11各种版本上的SNMP++都支持阻塞和异步方式的使用。为了用SNMP++X11应用注册X11的上下文(context)需要一个额外的函数(该操作是为了在X11的事件系统上使用SNMP++)。这就要用到XtAppMainLoop()或类似的函数来显式地认可并分发所有异步的SNMP++事件。

·           The context parameter passed in is returned from a call to XtAppInitialize().

·           The return value is zero if the function is successful in registering with X11.

·           (需要)传入的上下文参数会由XtAppInitialize()的调用返回

·           如果对X11注册成功,则该函数返回零

//----------------[ initialize SNMP++ X11 Context ]--------------------------

int SNMPX11Initialize( XtAppContext context);

1.3.        不以GUI为基础的应用的运作

SNMP++的第三种运作模式是用文本形式构造的控制台应用。这些类型的应用上的操作也可以调用阻塞或异步的模式。SNMP++提供了一组函数调用来读取当前用到的文件描述符(socket handles)。调用者在它们各自的“select”调用中用到这些文件描述符。如果SNMP++文件描述符有一个挂起的事件,调用者将激活例行程序来处理所有挂起的事件。

SNMPGetFdSets

用以决定需要潜在地激活的文件描述符。该函数会填充读、写、异常模块,以便传递到“select”

//-------[ get file descriptor set from SNMP++ ]------------------------------------

void SNMPGetFdSets( int &maxfds,                          // max # of fds represented

                   fd_set &read_fds,                   // mask representing read actions

                   fd_set &write_fds,                   // mask representing write actions

                   fd_set &exceptfds);                   // mask representing exception actions

SNMPGetNextTimeout

用以决定下次出现超时事件的时间。该值可在阻塞操作中被用作最大间隔值。比如select在控制权返回之前必须等待(该间隔时间)。超时的计算的基础是:所有用户注册超时(user-registered time-outs)以及SNMP重发的时间间隔中最近的一次。

//---------[ Get the next time-out value ]----------------------------------------------------

unsigned long int SNMPGetNextTimeout( );         // returns value in 1/100 of seconds

SNMPProcessPendingEvents

用以处理目前所有的突出的(outstanding)事件。该函数会调用所有与已完成的超时、文件描述符或突出的(outstandingSNMP消息相关的回调。该函数是非阻塞的,在同一时候它只处理突出的(outstanding)事件。

//------[ process pending events ]----------------------------------------------------------

int SNMPProcessPendingEvents();


2.         状态&错误编号

当使用Snmp class操作的时候SNMP++提供了两种级别的错误(信息)。所有的Snmp class成员函数都返回一个状态值。“SNMP_CLASS_ERR_STATUS_SET”这个特别的错误值表明了Pdu发生了一个内部错误,必须用成员函数Pdu::get_error_status()来检索该错误(信息)。所有的SNMP++错误值都可传进成员函数Snmp::err_msg()以打印出该错误的文本描述。

SNMP++ General Errors

Value

Description

    SNMP_CLASS_SUCCESS

0

成功状态

    SNMP_CLASS_ERROR             

-1

普通错误

    SNMP_CLASS_RESOURCE_UNAVAIL   

-2

内存分配失败(Newmalloc

    SNMP_CLASS_INTERNAL_ERROR

-3

未知的内部错误

    SNMP_CLASS_UNSUPPORTED

-4

不支持的函数

Callback Reasons

 

 

    SNMP_CLASS_TIMEOUT

-5

明显的请求超时

    SNMP_CLASS_ASYNC_RESPONSE     

-6

收到应答

    SNMP_CLASS_NOTIFICATION  

-7

收到notification (trap/inform)

    SNMP_CLASS_SESSION_DESTROYED

-8

销毁Snmp对象

Snmp Class Errors

 

 

    SNMP_CLASS_INVALID      

-10

在无效的实例上调用了Snmp成员函数

    SNMP_CLASS_INVALID_PDU         

-11

向映像函数传递了无效的PDU

    SNMP_CLASS_INVALID_TARGET

-12

向映像函数传递了无效的target

    SNMP_CLASS_INVALID_CALLBACK

-13

向映像函数传递了无效的回调函数

    SNMP_CLASS_INVALID_REQID

-14

要取消的请求ID无效

    SNMP_CLASS_INVALID_NOTIFYID

-15

trap/inform Oid丢失

    SNMP_CLASS_INVALID_OPERATION

-16

指定的target不允许进行Snmp操作

    SNMP_CLASS_INVALID_OID       

-17

向映像函数传递了无效的Oid

    SNMP_CLASS_INVALID_ADDRESS

-18

向映像函数传递了无效的address

    SNMP_CLASS_ERR_STATUS_SET

-19

代理端返回带有错误信息的应答PDU

    SNMP_CLASS_TL_UNSUPPORTED

-20

不支持的传输

    SNMP_CLASS_TL_IN_USE

-21

传输被占用

    SNMP_CLASS_TL_FAILED

-22

传输失败


3.         错误状态值

SNMP++的成员函数返回值是“SNMP_CLASS_ERR_STATUS_SET”时,可以由成员函数Pdu::get_error_status()获取一个额外的错误状态。该值表示的是RFC 1905中实际的SMI PDU错误状态值。这些值可以传进成员函数Snmp::err_msg()以友好(的方式)描述。

Pdu Error Status Macro

Value

Description

SNMP_ERROR_TOO_BIG             

1

Pdu太大,查看错误索引

SNMP_ERROR_NO_SUCH_NAME        

2

没有对应的帮定变量名称,查看返回的错误索引

SNMP_ERROR_BAD_VALUE        

3

错误的帮定变量,查看返回的错误索引

SNMP_ERROR_READ_ONLY       

4

帮定变量是只读的,查看返回的错误索引

SNMP_ERROR_GENERAL_VB_ERR   

5

普通帮定变量错误,查看返回的错误索引

SNMP_ERROR_NO_ACCESS        

6

操作失败,拒绝访问

SNMP_ERROR_WRONG_TYPE      

7

操作失败,类型错误

SNMP_ERROR_WRONG_LENGTH    

8

操作失败,长度错误

SNMP_ERROR_WRONG_ENCODING   

9

操作失败,译码错误

SNMP_ERROR_WRONG_VALUE     

10

操作失败,值错误

SNMP_ERROR_NO_CREATION     

11

操作失败,拒绝创建

SNMP_ERROR_INCONSIST_VAL   

12

操作失败,值不相容

SNMP_ERROR_RESOURCE_UNAVAIL

13

操作失败,无法使用资源

SNMP_ERROR_COMITFAIL       

14

操作失败,提交失败

SNMP_ERROR_UNDO_FAIL       

15

操作失败,撤销失败

SNMP_ERROR_AUTH_ERR        

16

操作失败,权限错误

SNMP_ERROR_NOT_WRITEABLE   

17

操作失败,拒绝更改

SNMP_ERROR_INCONSIS_NAME   

18

操作失败,名字不相容

### 回答1: s71200_system_manual_zh-chs.pdf 是一本 S7-1200 系列控制器的系统手册。S7-1200 系列控制器是一种微型控制器,用于控制工业自动化过程中的机器和设备。 这本手册通过详细介绍 S7-1200 控制器的基本特点和功能来帮助用户了解控制器的详细信息。手册中包含多个章节,每个章节解释了控制器的不同方面,如硬件和软件设置、数据存储、通信、网络连接和安全等。 手册中的信息旨在帮助用户熟悉控制器,并了解如何在实际应用中使用它。这种控制器常常用于控制制造过程,例如在机器人或物流控制中使用。它还可以用于监控能源和工艺变量,例如在温度控制或能源管理中使用。 通过学习 s71200_system_manual_zh-chs.pdf,用户可以获得有关 S7-1200 控制器的全面了解,并在使用控制器时获得更好的控制和管理体验。手册提供的信息有助于用户实现更高效的自动化控制,提高生产效率和质量,从而促进企业的发展。 ### 回答2: s71200_system_manual_zh-chs.pdf是一本西门子S7-1200 PLC系统的使用手册,该系统是工业自动化中广泛应用的一种控制器。该手册在指导用户使用S7-1200 PLC系统方面提供了全面的指导和支持。 该手册包括有关S7-1200系统的详细信息,例如系统架构,硬件组件,安装方法和PLC编程等方面。在使用S7-1200 PLC系统之前,用户必须先了解系统的硬件和软件组件以及它们之间的相互作用。此外,该手册还详细介绍了如何使用STEP 7 Basic软件进行编程,该软件是S7-1200 PLC系统的编程工具。 在手册中,用户还可以找到包含大量示例程序的章节,这些程序旨在帮助用户更好地理解编程概念,并以实际的例子帮助用户解决实际问题。 总的来说,s71200_system_manual_zh-chs.pdf是一本非常详细和系统的手册,旨在帮助S7-1200 PLC系统的用户全面了解系统并能够熟练地使用其功能和功能。该手册是一个不可或缺的资源,可以在解决用户的PLC控制问题方面提供重要的支持和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值