# S7 模块文档 (Python 版本) ## S7 #### S7 读取 Int * 方法说明 S7 读取 Int。 ```python def read_s7_int(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,读取的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * 输出参数 * `None`,读取失败。 * `int`,读取成功的返回值。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 读取 DInt * 方法说明 S7 读取 DInt。 ```python def read_s7_dint(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,读取的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * 输出参数 * `None`,读取失败。 * `int`,读取成功的返回值。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 读取 Word * 方法说明 S7 读取 Word。 ```python def read_s7_word(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,读取的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * 输出参数 * `None`,读取失败。 * `int`,读取成功的返回值。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 读取 DWord * 方法说明 S7 读取 DWord。 ```python def read_s7_dword(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,读取的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * 输出参数 * `None`,读取失败。 * `int`,读取成功的返回值。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 读取 String * 方法说明 S7 读取 String。 ```python def read_s7_string(plc_type: str, ip: str, block_and_offset: str) -> Optional[str]: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,读取的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * 输出参数 * `None`,读取失败。 * `str`,读取成功的返回值。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 读取 Bool * 方法说明 S7 读取 Bool。 ```python def read_s7_boolean(plc_type: str, ip: str, block_and_offset: str) -> Optional[bool]: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,读取的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * 输出参数 * `None`,读取失败。 * `bool`,读取成功的返回值。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 写入 Int * 方法说明 S7 写入 Int。 ```python def write_s7_int(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,写入的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * `value`,int 类型,写入的值。 * 输出参数 * 成功返回 `True`,失败返回 `False`。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 写入 DInt * 方法说明 S7 写入 DInt。 ```python def write_s7_dint(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,写入的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * `value`,int 类型,写入的值。 * 输出参数 * 成功返回 `True`,失败返回 `False`。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 写入 Word * 方法说明 S7 写入 Word。 ```python def write_s7_word(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,写入的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * `value`,int 类型,写入的值。 * 输出参数 * 成功返回 `True`,失败返回 `False`。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 写入 DWord * 方法说明 S7 写入 DWord。 ```python def write_s7_dword(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,写入的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * `value`,int 类型,写入的值。 * 输出参数 * 成功返回 `True`,失败返回 `False`。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 写入 String * 方法说明 S7 写入 String。 ```python def write_s7_string(plc_type: str, ip: str, block_and_offset: str, value: str) -> bool: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,写入的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * `value`,str 类型,写入的值。 * 输出参数 * 成功返回 `True`,失败返回 `False`。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 写入 Bool * 方法说明 S7 写入 Bool。 ```python def write_s7_boolean(plc_type: str, ip: str, block_and_offset: str, value: bool) -> bool: ``` * 输入参数 * `plc_type`,str 类型,PLC 类型,可选值(区分大小写):S1200/S300/S400/S1500/S200Smart/S200。 * `ip`,str 类型,PLC IP。 * `block_and_offset`,str 类型,写入的地址,支持的区域取值示例如下(区分大小写): | 地址名称 | 地址代号 | 示例 | | --- | --- | --- | | 中间寄存器 | M | M100,M200 | | 输入寄存器 | I | I100,I200 | | 输出寄存器 | Q | Q100,Q200 | | DB块寄存器 | DB | DB1.100,DB1.200.7 | | V寄存器 | V | V100,V200 | | 定时器的值 | T | T100,T200 | | 计数器的值 | C | C100,C200 | | 智能输入寄存器 | AI | AI100,AI200 | | 智能输出寄存器 | AQ | AQ100,AQ200 | * `value`,bool 类型,写入的值。 * 输出参数 * 成功返回 `True`,失败返回 `False`。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 通用写入 * 方法说明 S7 写入 Int、DInt、Word、DWord、String、Bool。 ```python def write_s7(plc_type: str, ip: str, slot: int, rack: int, data_type: str, block_and_offset: str, value: Any) -> bool: ``` * 输入参数 * `plc_type`:同上 * `ip`:同上 * `slot`:CPU 模块的插槽号 * `rack`:中央机架 * `data_type`:在 Int、DInt、Word、DWord、String、Bool 中可选 * `block_and_offset`:同上 * `value`: 与 data_type 类型匹配的值 * 输出参数 * 成功返回 `True`,失败返回 `False`。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。 #### S7 通用读取 * 方法说明 S7 读取 Int、DInt、Word、DWord、String、Bool 类型地址的值。 ```python def read_s7(plc_type: str, ip: str, slot: int, rack: int, data_type: str, block_and_offset: str) -> Any: ``` * 输入参数 * `plc_type`:同上 * `ip`:同上 * `slot`:CPU 模块的插槽号 * `rack`:中央机架 * `data_type`:在 Int、DInt、Word、DWord、String、Bool 中可选 * `block_and_offset`:同上 * 输出参数 * `None`,读取失败。 * `Any`,读取成功的返回值。 * 异常 本方法不抛出异常,异常捕获后只作日志记录。