VWED_server/docs/sc/S7相关.md

434 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。